我正在使用 DBDesigner Fork 为社交网络网站设计数据库,我需要帮助来理解关系类型...我真的很困惑在每种情况下应该使用哪种类型。
这些类型:1:1、1:n、1:n(非识别)、n:m、1:1(后代对象)、1:1(非识别)
您能为我提供一个简短的解释和每种情况的实际示例吗?
最佳答案
存在与数据库本身直接相关的三种基本类型:
- 1:1 - 一对一
- 1:n - 一对一
- n:m - 多对多
实际上,这些又可以归结为两个问题 - 外键是否存在于子表中 (1:*),或者是否需要一个中间表 (n:m)。
一对一是直接的。它通常用于子类型。给定两个表:
person
id int NOT NULL
name varchar(255) NOT NULL
parent
id int NOT NULL
person_id int NOT NULL
spouse_id int NULL
有两种关系 - 1:1身份( parent 是一个人)和非身份( parent 可以有配偶)。现在,更进一步:
children
person_id int NOT NULL
parent_id int NOT NULL
“ child ”表是将“ parent ”映射到“个人”表以关联子对父、多对多关系的一种方式。
此外,在此示例中,“父对象”将是“person”的后代对象 - 因为它扩展了 person。大多数后代对象关系都是非标识性的。
关于sql - 数据库设计: please help me to understand relationship types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125591/