数据库设计:请帮我理解关系类型

时间:2011-08-19 18:06:43

标签: sql database-design

我正在使用DBDesigner Fork为社交网站设计一个数据库,我需要帮助才能理解关系类型......我对在每种情况下应该使用哪种类型感到困惑。

这些是类型:1:1,1:n,1:n(非识别),n:m,1:1(后代obj。),1:1(非识别)

你能否在每种情况下给我一个简短的解释和一个实际的例子?

2 个答案:

答案 0 :(得分:4)

有三种与数据库本身直接相关的基本类型:

  • 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 识别(父母是一个人),非识别(父母可能有配偶)。现在,更进一步:

children
    person_id int NOT NULL
    parent_id int NOT NULL

“儿童”表是一种将“父母”映射到“人”表的方式,以将儿童与父母的多对多关系联系起来。

此外,在这个例子中,'父母'将是'人'的后代对象 - 因为它扩展了人。大多数后代对象关系都是不可识别的。

答案 1 :(得分:0)

查看here以更好地了解关系类型的工作方式,因为这可能会让您对该主题有一个很好的探索,并且可以更好地理解实体关系模型的工作原理。