【问题标题】:What is a Parent table and a Child table in Database?什么是数据库中的父表和子表?
【发布时间】:2011-12-14 10:05:05
【问题描述】:

我只想知道什么是数据库中的父表和子表。能否请您给我一个示例,以便我了解它是如何工作的。

谢谢

【问题讨论】:

  • 一直在谷歌上搜索,并没有很好地解释它

标签: php mysql database


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    希望这可以帮助您更好地理解。

    【讨论】:

    • 如果有多篇文章指向一个作者,authors 表不就是父表吗?
    • 有没有什么适合初学者的数据库方面的好书,我想知道,在amazon上找初学者的书很混乱。
    【解决方案3】:

    请注意,您可以拥有看似父子关系但实际上并非如此的关系,例如在使用查找表时。区别在于,在真正的父子关系中,记录通常不能很好地代表它们自己——它们是父级的详细记录,没有父表信息就没有用处。一个人可以在 DMV 数据库中拥有多辆汽车,但您不希望 CARS 表中的记录没有 OWNERS 表中的父记录 - 这几乎是无用的数据。

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

    【讨论】:

    • 这应该是公认的答案,因为它是唯一解释 lookup 关系和 parent-child 关系之间区别的答案。
    【解决方案4】:

    这些术语用于数据库关系。

    例如你有两张桌子,

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

    【讨论】:

    • 父表没有外键并连接到其他 连接到其他什么?我是指表格还是字段?
    【解决方案5】:

    父级 - 与另一个表的关系的“一”(/1) 侧的实体

    Child - 与另一个表的关系的“多”(/N/*) 侧的实体

    【讨论】:

    • Parent Child。子指向父。所以每个孩子知道它的父母是谁。每个孩子只有一个父母。父实体不包含关于其子实体的信息。
    猜你喜欢
    • 2014-07-16
    • 1970-01-01
    • 2016-01-09
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多