2011-09-02 2 views
2

첫 번째 데이터베이스 관계를 만들려고하는데 여기 혼란 스럽습니다. (나는 많은 것을 읽었지만 여전히 혼란 스럽습니다) 두 개의 테이블, 장소 및 venue_types를 만들려고합니다.테이블 관계 - 부모이고 자식입니까?

'venues'에는 ID와 VENUE_TYPE 열이 있고 'venue_types'에는 ID와 TYPE_NAME이 있습니다. 'venue_types'의 ID 열을 참조하려면 '장소'의 VENUE_TYPE 열을 원합니다. VENUE_TYPE이 3으로 설정되었고 'venue_types'의 3 행이 카지노라고 가정 해 보겠습니다.

'일종의'venue_type '은 하나의'venue_type '만 가질 수있는 반면'venue_types '는 많은 장소를 가질 수있는 일대 다 관계 테이블입니다.

이 내가 가진 무엇이며 주변에 다른 방법으로해야하는지 잘 모르겠어요 알려 주시기 바랍니다 : enter image description here

고마워요 모두를 :)!

편집 : "venue_type"열에 외래 키 레이블이 있는데, 외래 키가 포함되어 있거나 외래 키 자체인지 여부가 확실하지 않습니다.

+0

마크와 조나단에게 감사드립니다. 둘 다 감사합니다 내 데이터베이스를 마무리하고 잘하면 그것을 작동 :) – pufAmuf

답변

1

일반적으로 참조하는 열 (예제에서는 Venues)을 포함하는 테이블은 '하위'테이블입니다. 참조 된 열 (예 : Venue_Types)이 들어있는 테이블은 '상위'테이블입니다. 일반적으로 참조 된 열은 테이블의 기본 키입니다. 테이블의 고유 ID 또는 후보 키 여야합니다.

Venues 테이블의 venue_type 열은 외래 키 열이므로 FK로 표시됩니다. 참조 된 표인 Venue_types 테이블에 있어야하는 값을 포함합니다. 참조 된 테이블에 복합 기본 키가있는 경우 복합 외래 키를 가질 수 있습니다.

후보 키가 여러 개인 테이블을 가질 수 있지만 테이블에는 기본 키가 하나만있을 수 있습니다. '요소 표'를 고려하십시오. 가에 의해 표현 될 수 있습니다 열 Symbol, NameAtomic_Number

CREATE TABLE elements 
(
    atomic_number INTEGER NOT NULL PRIMARY KEY CONSTRAINT c1_elements 
        CHECK (atomic_number > 0 AND atomic_number < 120), 
    symbol   CHAR(3) NOT NULL UNIQUE CONSTRAINT c2_elements, 
    name   CHAR(20) NOT NULL UNIQUE CONSTRAINT c3_elements, 
    atomic_weight DECIMAL(8,4) NOT NULL, 
    period   SMALLINT NOT NULL 
        CHECK (period BETWEEN 1 AND 7), 
    group   CHAR(2) NOT NULL 
        -- 'L' for Lanthanoids, 'A' for Actinoids 
        CHECK (group IN ('1', '2', 'L', 'A', '3', '4', '5', '6', 
            '7', '8', '9', '10', '11', '12', '13', 
            '14', '15', '16', '17', '18')), 
    stable   CHAR(1) DEFAULT 'Y' NOT NULL 
        CHECK (stable IN ('Y', 'N')) 
); 

각은 완벽하게 좋은 후보 키입니다. Atomic_Number을 기본 키 (동위 원소 및 핵 물리학에 가장 유용함)로 사용했지만 화학에 더 관심이 있다면 Symbol을 선택하는 것이 좋습니다.

2

정확합니다. 이 경우 venue_types은이 관계에서 상위 테이블로 간주됩니다. 외래 키 표시기는 venues의 필드가 외래 키임을 나타냅니다. 이는 참조 된 테이블의 기본 (또는 후보) 키 값을 보유한다는 것을 의미합니다.