2011-10-24 105 views

回答

22

子表和父表只是普通的數據庫表,但是它們以一種由父子關係描述的方式進行關聯。

它通常用於指定一個表的值引用另一個表(通常是另一個表的主鍵)中的值的位置。

例如,想象一篇新聞文章。這可以通過名爲articles的表來表示,並且具有用於id,headline,body,published_dateauthor的字段。但不是在author字段中輸入名稱,而是可以將用戶的ID值放在單獨的表中(可能稱爲authors),該信息包含有關作者的信息,如id,nameemail

因此,如果您需要更新作者的姓名,則只需在authors(父)表中執行此操作;因爲articles(子)表只包含相應的author記錄的ID。

希望這可以幫助你更好地理解。

+3

如果你有多篇文章指向一個作者,'authors'表是不是父表? – RoToRa

+1

對於初學者,有沒有關於數據庫的好書,我想知道,在亞馬遜搜索初學者的書籍時,這會讓人困惑不解。 – shining

3

子表往往是一個地方有一個或多個外鍵在其他一些桌指向。請注意,子表本身也可以是某個OTHER表的父表。

9

請注意,您可以擁有似乎是父子關係但不是的關係,例如在使用查找表時。區別在於,在一個真正的父母 - 子女關係中,記錄通常不會很好 - 它們是父母的詳細記錄,沒有父表信息就沒有用處。一個人可以在DMV數據庫中擁有多輛汽車,但您不希望在OWNERS表中沒有父記錄的CARS表中記錄 - 這幾乎是無用的數據。另一方面,如果我使用查找表將代碼擴展爲更有意義的代碼,或者將數據條目限制爲可接受的值,則「子」記錄仍然有用(可以獨立使用),如果查找表被刪除。即使我不再有查詢表將其擴展爲「男性」或「女性」,我仍然可以將性信息作爲「M」或「F」。

+1

這應該是被接受的答案,因爲它是解釋「查找」關係和「父子關係」之間唯一區別的唯一答案。 –

0

這些術語用於數據庫關係。

例如u有2臺,

1.Manifast

+-------------+------------------+------+-----+---------+----------------+ 
| Field  | Type    | Null | Key | Default | Extra   | 
+-------------+------------------+------+-----+---------+----------------+ 
| manifast_id | int(11) unsigned | NO | PRI | NULL | auto_increment | 
| description | text    | NO |  | NULL |    | 
| title  | text    | NO |  | NULL |    | 
+-------------+------------------+------+-----+---------+----------------+ 
  • day_sequence
  • +-----------------+------------------+------+-----+---------+----------------+ 
    | Field   | Type    | Null | Key | Default | Extra   | 
    +-----------------+------------------+------+-----+---------+----------------+ 
    | day_sequence_id | int(11) unsigned | NO | PRI | NULL | auto_increment | 
    | day_number  | int(11)   | NO |  | NULL |    | 
    | day_start  | int(11)   | NO |  | NULL |    | 
    | manifast_id  | int(11)   | NO |  | NULL |    | 
    +-----------------+------------------+------+-----+---------+----------------+ 
    

    如果u想要連接這兩個表,你需要使用t他用以下格式命令。

    > ALTER TABLE child_table_name ADD FOREIGN KEY (P_ID) REFERENCES 
    > parent_table_name (P_ID) 
    

    等等。

    > ALTER TABLE day_sequence ADD CONSTRAINT fk_manifast FOREIGN KEY 
    > (manifast_Id) REFERENCES manifast(manifast_Id); 
    

    綜上所述, 子表是具有外鍵的表,並從其他表連接。 父表沒有外鍵並連接到其他。 [注:此ANS只是用於連接兩個表]

    0

    父 - 對「一個」實體(/ 1)與另一個表

    兒童的關係的側 - 在「多」的實體(/ N/*)方與另一個表的關係

    相關問題