inflearn logo
강의

講義

知識共有

一体なぜ?一体どうやって!DB設計とデータの扱い方

主人公と登場人物の集合体、ウォン小説情報テーブル

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

299

pink321ryu

投稿した質問数 58

1

안녕하세요.

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

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

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

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

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

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

sql mysql mariadb mysql-workbench

回答 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

3

1

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

0

6

1

스프링부트 서버 에러나요

0

17

1

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

0

20

2

간단한 오타 제보입니다.

0

19

1

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

0

34

2

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

0

35

2

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

0

27

2

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

0

22

1

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

0

36

2

상품 정보 크롤링

0

29

2

JPA Repository 질문이 있습니다!

1

33

2

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

1

36

1

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

0

40

2

실습소실행안되요

0

37

1

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

0

35

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