2017-12-10 1 views
0

키의 목록을 원하는 분야 RECORDED_SONGS에서SQL 서버 키는 내가 다음 코드 한

CREATE TABLE SONGS 
( 
     ... 
     ISWC VARCHAR(15) PRIMARY KEY 
); 

CREATE TABLE SESSIONS 
(
     ... 
     RECORDED_SONGS VARCHAR(15), 
     FOREIGN KEY (RECORDED_SONGS) REFERENCES SONGS(ISWC) 
); 

내가 쉼표로 구분 세션 동안 기록 된 많은 노래의 ISWCs을 유지하려는. 이제는 하나만 저장할 수 있습니다 ISWC. RECORDED_SONGS의 유형을 변경할 수 없기 때문에 다른 유형의 문제점이있을 수 있습니다. 그것을 할 수 있습니까?

답변

6

댓글이 너무 깁니다.

구분 목록에 노래 목록을 저장하지 마십시오. 나쁜, 나쁜, 나쁜, 나쁜 :

  • SQL의 문자열 처리 기능이 좋지 않습니다.
  • 외래 키 관계를 선언 할 수 없습니다.
  • 문자열에 들어갈 값의 유효성을 검사 할 수 없습니다.
  • SQL에는 목록을 저장하는 훨씬 더 좋은 방법이 있습니다.

각 세션에서 노래 당 하나의 행으로,이 접합 테이블을 사용하고 저장하는 올바른 방법 :

CREATE TABLE SESSIONSONGS (
    SESSIONID . . .,. 
    ISWC VARCHAR(15), 
    FOREIGN KEY (ISWC) REFERENCES SONGS(ISWC), 
    FOREIGNKEY (SESSIONID) REFERENCES SESSIONS(SESSIONID) 
) 
+1

오리지널 디자인 코어 관계형 데이터베이스 설계 원칙 1) 만 저장 원자 데이터 2를 위반) 반복 그룹 없음. –