什么是数据库中的父表和子表?

时间:2011-10-24 19:33:11

标签: php mysql database

我只想知道什么是父表以及数据库中的子表是什么。你能告诉我一个例子,所以我理解它是如何运作的。

谢谢

5 个答案:

答案 0 :(得分:31)

子表和父表只是普通的数据库表,但它们以父子关系描述的方式链接。

它通常用于指定一个表的值引用另一个表中的值的位置(通常是另一个表的主键)。

例如,想象一篇新闻文章。这可以由名为articles的表格表示,并包含idheadlinebodypublished_dateauthor的字段。但是,不是在author字段中放置名称,而是可以将用户的ID值放在单独的表中 - 可能称为authors - 其中包含有关作者的信息,例如idnameemail

因此,如果您需要更新作者姓名,则只需在authors(父)表中执行此操作;因为articles(子)表只包含相应author记录的ID。

希望这有助于您更好地理解。

答案 1 :(得分:14)

请注意,您可以拥有似乎是父子关系,但不是,例如在使用查找表时。区别在于,在真正的父子关系中,记录通常不能很好地存在 - 它们是父级的详细记录,没有父表信息就没有用。一个人可以在DMV数据库中拥有多辆汽车,但是如果没有OWNERS表中的父记录,你就不会想要CARS表中的记录 - 这几乎是无用的数据。

另一方面,如果我使用查找表将代码扩展为更有意义的代码,或者将数据条目限制为可接受的值,那么“子”记录仍然有用(可以独立)如果查找表已删除。即使我不再使用查找表将其扩展为“男性”或“女性”,我仍然可以将性别信息设为“M”或“F”。

答案 2 :(得分:6)

父母 - " one"上的实体(/ 1)与另一个表的关系的一面

儿童 - "许多"上的实体(/ N / *)与另一个表的关系的一面

答案 3 :(得分:3)

子表往往是一个子表,其中有一个或多个外键指向其他一些表。请注意,子表本身也可以是某些OTHER表的父表。

答案 4 :(得分: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    |                |
+-------------+------------------+------+-----+---------+----------------+
  1. day_sequence
  2. +-----------------+------------------+------+-----+---------+----------------+
    | 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    |                |
    +-----------------+------------------+------+-----+---------+----------------+
    

    如果你想连接这两个表,你需要使用以下格式的命令。

    > 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仅用于连接两个表格]