【发布时间】:2011-12-14 10:05:05
【问题描述】:
我只想知道什么是数据库中的父表和子表。能否请您给我一个示例,以便我了解它是如何工作的。
谢谢
【问题讨论】:
-
一直在谷歌上搜索,并没有很好地解释它
我只想知道什么是数据库中的父表和子表。能否请您给我一个示例,以便我了解它是如何工作的。
谢谢
【问题讨论】:
子表往往具有一个或多个指向其他表的外键。请注意,子表本身也可以是某个 OTHER 表的父表。
【讨论】:
子表和父表只是普通的数据库表,但它们以父子关系描述的方式链接。
它通常用于指定一个表的值在哪里引用另一个表中的值(通常是另一个表的主键)。
例如,想象一篇新闻文章。这可以用一个名为articles 的表来表示,并具有id、headline、body、published_date 和author 的字段。但不是在author 字段中放置名称,而是将用户的 ID 值放在单独的表中(可能称为 authors),其中包含作者信息,例如 id、name 和email.
因此,如果您需要更新作者姓名,您只需在authors(父)表中进行;因为articles(子)表只包含对应author记录的ID。
希望这可以帮助您更好地理解。
【讨论】:
authors 表不就是父表吗?
请注意,您可以拥有看似父子关系但实际上并非如此的关系,例如在使用查找表时。区别在于,在真正的父子关系中,记录通常不能很好地代表它们自己——它们是父级的详细记录,没有父表信息就没有用处。一个人可以在 DMV 数据库中拥有多辆汽车,但您不希望 CARS 表中的记录没有 OWNERS 表中的父记录 - 这几乎是无用的数据。
另一方面,如果我使用查找表将代码扩展为更有意义的代码,或者将数据输入限制为可接受的值,那么“子”记录仍然有用(可以独立)如果查找表被删除。即使我不再有查找表来将其扩展为“男性”或“女性”,我仍然可以将性别信息设为“M”或“F”。
【讨论】:
lookup 关系和 parent-child 关系之间区别的答案。
这些术语用于数据库关系。
例如你有两张桌子,
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 | |
+-------------+------------------+------+-----+---------+----------------+
+-----------------+------------------+------+-----+---------+----------------+ | 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仅用于连接两个表]
【讨论】:
父级 - 与另一个表的关系的“一”(/1) 侧的实体
Child - 与另一个表的关系的“多”(/N/*) 侧的实体
【讨论】:
Parent Child。子指向父。所以每个孩子知道它的父母是谁。每个孩子只有一个父母。父实体不包含关于其子实体的信息。