2013-12-22 5 views
1

우선 DB2를 사용하고 있습니다.외래 키의 SQL 외래 키

내 문제 :

  • 나는 기본 키가있는 테이블 A 있습니다.
  • 2 차 키 테이블 BB의 키 C
를 가지고 기본 키
  • 테이블 D
  • 테이블 C (그 중 하나는 A의 외래 키)

    D 테이블을 만들려면 어떻게해야합니까?

    내 첫번째 생각은이었다, 그러나 그것은 작동하지 않습니다

    Create Table D(
        A varchar(20) not null references B(A), 
        B varchar(20) not null references B(name of prim key attribute from B), 
        C varchar(20) not null references C, 
        primary key(A,B,C)  
    ); 
    

    당신이 내 문제를 이해하고 나를 도울 수 있기를 바랍니다.

  • +2

    테이블은 오직 ** ONE ** 기본 키를 가질 수 있습니다 - 당신이 아마 의미하는 것은 ** 기본 키는 ** ** 2 열 ** –

    +0

    에서 만든 또는 해당 테이블 B가 가지고 뜻 두 개의 개별 열, 각각 고유 한? 아마도 이들을 합성 키로 결합 할 필요가 없거나 중요하지 않을까요? – WarrenT

    답변

    2

    외부 키 컬럼의 이름을 참조 테이블 D에 대한 기본 키 역할을 할 수 테이블 B 및 테이블 C의 두 개의 열을 결합 할 수 있습니다 문제에 대한 해결책으로

    , 제약없는 이름 .

    설정. . .

    create table A (
        col_a int primary key 
    ); 
    
    create table B (
        col_a int not null, 
        col_b int not null, 
        primary key (col_a, col_b), 
        foreign key (col_a) references A (col_a) 
    ); 
    
    create table C (
        col_c int primary key 
    ); 
    

    그리고 실행. . .

    create table D (
        col_a int not null, 
        col_b int not null, 
        col_c int not null, 
        primary key (col_a, col_b, col_c), 
        foreign key (col_a, col_b) references B (col_a, col_b), 
        foreign key (col_c) references C (col_c) 
    ); 
    
    +0

    감사합니다. 이것은 정확히 제가 검색 한 것입니다 =) – user3117357

    0

    Marc_s는 테이블에 기본 키가 하나만있을 수 있다고 설명 했으므로 테이블에 기본 키가 두 개 이상있을 수 없습니다. 당신은 아마 함께

    +0

    ok ty, 어떻게 생겼는지 예를 들어 주시겠습니까? – user3117357