我正在使用DBDesigner Fork为社交网站设计一个数据库,我需要帮助才能理解关系类型......我对在每种情况下应该使用哪种类型感到困惑。
这些是类型:1:1,1:n,1:n(非识别),n:m,1:1(后代obj。),1:1(非识别)
你能否在每种情况下给我一个简短的解释和一个实际的例子?
答案 0 :(得分:4)
有三种与数据库本身直接相关的基本类型:
实际上,那些又归结为两个问题 - 子表中是否存在外键(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 识别(父母是一个人),非识别(父母可能有配偶)。现在,更进一步:
children
person_id int NOT NULL
parent_id int NOT NULL
“儿童”表是一种将“父母”映射到“人”表的方式,以将儿童与父母的多对多关系联系起来。
此外,在这个例子中,'父母'将是'人'的后代对象 - 因为它扩展了人。大多数后代对象关系都是不可识别的。
答案 1 :(得分:0)
查看here以更好地了解关系类型的工作方式,因为这可能会让您对该主题有一个很好的探索,并且可以更好地理解实体关系模型的工作原理。