inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Tại sao lại thế? Thật là tuyệt vời! Thiết kế DB và xử lý dữ liệu

Tuyển tập các nhân vật chính và nhân vật, Bảng thông tin tiểu thuyết Wem

[주인공과 등장인물의 집합채, 웹소설정보테이블]작가명 생성관련

299

pink321ryu

58 câu hỏi đã được viết

1

안녕하세요.

[주인공과 등장인물의 집합채, 웹소설정보테이블](4:13)

작가명과 회원아이디를 랜덤하게 생성함에 있어서,

작가명하나에 회원아이디가 여러개로 생성이 될 소지가 있는데요. 실제로 돌려보니 중복이 나오네요. ㅡㅡ;

혹시.. 묶어서 작가명하나에 회원아이디 하나로만 매핑되도록 생성하려면 어떻게 하면 될까요?

샘플로 하는 거라 중복이 이슈거리는 아니지만..

좀 더 배우고자 하는 마음에 문의드립니다. ㅡㅡ;

sql mysql mariadb mysql-workbench

Câu trả lời 1

0

swa

충분히 의미 있는 데이터 가공이라고 생각합니다.

현재 데이터들 조건이 일부 맞지 않지만 아래의 쿼리로 구현해 보았습니다.

-- 중복된 레코드들 중 한 건만 남기고 삭제

DELETE FROM kidset

WHERE (kid, meaning)

IN (

SELECT kid, meaning FROM (

SELECT kid, meaning,

ROW_NUMBER() OVER (PARTITION BY kid ORDER BY meaning) AS row_number_

FROM kidset

) a

WHERE a.row_number_ != 1

);

-- 중복된 레코드들 중 한 건만 남기고 삭제

DELETE FROM eidset

WHERE (eid, meaning)

IN (

SELECT eid, meaning FROM (

SELECT eid, meaning,

ROW_NUMBER() OVER (PARTITION BY eid ORDER BY meaning) AS row_number_

FROM eidset

) a

WHERE a.row_number_ != 1

);

-- 작가명, 회원아이디 컬럼에 각각 중복되지 않은 유일한 값들로 조회

-- 동시에 seq 컬럼에 시퀀스값을 생성하여 임시테이블 nm 생성

SET @rownum :=0;

SET @rownum1:=0;

SET @rownum2:=0;

CREATE OR REPLACE TABLE nm

AS

WITH

a AS (

SELECT @rownum1:=@rownum1+1 AS num, CONCAT('*',kid) AS idset FROM kidset

),

b AS (

SELECT @rownum2:=@rownum2+1 AS num, CONCAT(eid,'*') AS idset FROM eidset

)

SELECT

@rownum:=@rownum+1 AS seq,

a.idset AS 작가명, b.idset AS 회원아이디

FROM a, b

WHERE b.num = a.num

ORDER BY a.idset, b.idset

;

-- 검증(0건 정상)

SELECT 작가명,COUNT(*) FROM nm

group BY 작가명

HAVING COUNT(*)>1

;

-- 검증(0건 정상)

SELECT 회원아이디,COUNT(*) FROM nm

group BY 회원아이디

HAVING COUNT(*)>1

;

-- 작가명 유일한 값, 회원아이디 유일한 값으로 wn_novel 테이블 해당 컬럼 UPDATE

UPDATE wn_novel a INNER JOIN nm

ON a.`작품번호` = nm.seq

SET

a.`작가명` = nm.`작가명`,

a.`회원아이디` = nm.`회원아이디`

;

문제는 wn_novel 테이블은 총 1,002 건인데 반해 eidset 테이블은(회원아이디) 329 건(유일한 값) 밖에 되지 않아 유일한 값을 넣을 수가 없습니다. kidset 테이블은(작가명) 1,372 건(유일한 값)이므로 충분히 유일한 값 입력이 가능합니다.

eidset 테이블의 eid 컬럼값이 유일하도록 1,002 건 이상 데이터 추가 후 위의 쿼리들을 수행한다면 정상 처리될 것으로 여겨집니다.

 

 

개인 사정으로 24~26일(다음 주 월요일)까지 자리를 비웁니다. 질문 남겨주시면 차주 화요일 이후로 꼭 답변드리도록 하겠습니다. 양해부탁드립니다 감사합니다.

패키지 구분에 대해 궁금한게 있습니다

0

12

1

노션 링크도 안 열리고, 알려준 vercel도 실행이 안됩니다.

0

13

1

스프링부트 서버 에러나요

0

17

1

코드를 첨부해야하는 이유가 있나요?

0

22

2

간단한 오타 제보입니다.

0

19

1

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

35

2

실제 FK제약조건을 설정하지 않는이유

0

37

2

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

28

2

Free Edition 실습 영상은 아직 업데이트전인가요?

0

22

1

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

36

2

상품 정보 크롤링

0

29

2

JPA Repository 질문이 있습니다!

1

34

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

36

1

강의에 적용한 스크립트를 받아 볼수 있을까요?

0

40

2

실습소실행안되요

0

40

1

비동기 스레드풀 분리 이유와 Virtual Thread 전환 시 고려사항

0

36

1

수강기간 연장

0

27

1

[스토리 그 자체, 실적 테이블](9:51)max_recursive_iterations

1

554

2

urlcodemap 쿼리 파일 확인요청

1

310

2

[공유][대사와 액션, 회차정보테이블]contents2 생성관련

1

403

2

[주인공과 등장인물의 집합체,웹소설정보테이블]wn_novel테이블 생성

1

251

1

[ERD로 보는 스토리와 테이블이라는 등장인물]태그정보 테이블 설계관련

1

280

1

[공유][워크밴치사용관련]한글깨짐

1

629

1

[가상데이터 생성]

1

220

1