2011-09-02 67 views
2

我試圖創建我的第一個數據庫的關係,我很困惑在這裏(我做的閱讀過很多的,但我仍然感到困惑) 我試圖創建兩個表,場地和venue_types。表格關係 - 哪些是父母,哪些是孩子?

'場地' 具有一個ID和一個VENUE_TYPE柱而 'venue_types' 具有ID和TYPE_NAME。 我希望'場地'中的VENUE_TYPE列引用'venue_types'中的ID列。假設VENUE_TYPE設置爲3,'venue_types'中的第三行是賭場。

因此,在某種程度上,這是一個一對多的關係表,其中「venue_types」可以有很多場館而「場地」只能有一個「venue_type」。

這是我有什麼,我不知道這是否應該是周圍的其他方法,請讓我知道: enter image description here

非常感謝大家:)!

編輯:我也搞不清楚是「venue_type」欄旁邊有一個外鍵標籤這我不知道,如果這意味着它包含一個外鍵,或者它是一個外鍵本身?

+0

非常感謝馬克和喬納森!感謝你們兩個我可以完成我的數據庫,並希望它工作:) – pufAmuf

回答

1

一般來說,含有引用列(在你的例子,Venues)該表是「子」表;包含引用列的表(在您的示例中,Venue_Types)是「父」表。通常,被引用的列是表的主鍵;它應該是表的唯一標識符或候選鍵。

Venues表中的venue_type列標記爲FK,因爲它是外鍵列;它包含的值必須存在於參考表格Venue_types表中。如果被引用的表具有複合主鍵,則可以有複合外鍵。

請注意,你可以有多個候選鍵的表,但表只能有一個主鍵。考慮「元素表」;它可能被表示爲:

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')) 
); 

SymbolNameAtomic_Number的每一個都是一個非常好的候選鍵。我選擇使用Atomic_Number作爲主鍵(對同位素和核物理最有用),但如果我更關心化學,那麼Symbol將是更好的選擇。

2

你說得對。在這種情況下,venue_types將被視爲此關係中的父表。外鍵指示符表示venues中的字段是外鍵;這意味着它保存被引用表的主鍵(或候選鍵)值。