数据库 - 设计:逻辑设计

 

数据库 - 设计:逻辑设计

逻辑设计是关于将实体,关系和多值属性映射到逻辑模式中。

数据库 - 设计:逻辑设计_第1张图片

 

将公司ER模式映射到关系模式的结果。

希望你已经出现了最后一部分 数据库 - 建模:实体关系图(ERD)(第5部分)

我们将逐步完成定义的步骤,将我们刚刚创建的概念模式(由ER模型描述)映射到逻辑模式(由关系模型描述)。

当我们描绘我们的ER图时,我们发现我们的实体之间存在某种关系,但为了更接近在数据库中实际构建它,我们需要在数据库中翻译这些关系(以及其他类似多值属性) 。

我们确定的所有关系都将通过创建新表或仅创建新列在数据库中实现,或者我们将在此处介绍其他一些选项。

那么,以下是步骤:

1.正则实体类型的映射

对于每个实体,创建一个包含其所有简单属性的表。然后,选择主键,如果它是复合键,则一组简单属性将与主键一起形成。

复合列将分解为单独的简单列。

2.弱实体类型的映射

对于每个弱实体,创建一个包含其所有简单属性的表。并且包括指向所有者实体的主键的外键,其中外键和部分键将是弱实体的主键。

一个 关键字唯一标识一个弱实体对于给定的所有者实体。

3. 1:1关系类型的映射

有三种方法:

  1. 外键方法:从任一实体中选择主键,并在引用第一个主键的另一个实体中创建外键。
  2. 合并关系选项:合并两个实体,因为任何实体中的每一行在另一个实体中只有相应的行。
  3. 交叉引用或关系关系选项:创建第三个表,该表具有来自两个实体的主键的两个外键(矫枉过正!)。

4. 1:M关系类型的映射

考虑例子中,我们一直在使用,其中每个员工适用于只有一个部门,而一个部门可以有一个以上的员工。

现在,为了映射这种关系,我们在employee表(多面)中添加了一个外键,而这又指向department表的主键(1面)。

还包括许多方面的1-M关系的任何简单属性。

 

数据库 - 设计:逻辑设计_第2张图片

映射1:M关系

递归关系

不要让递归关系欺骗你!您会将其视为一个实体与另一个实体之间的任何其他关系。

在我们的示例中,我们有一个一对多的递归关系,称为员工实体与自身之间的监督

在其他情况下,您可能具有多对多递归关系或其他内容。

同样的事情在这里,只需在多方(即员工表)中添加一个外键,它指向1方的主键(也是员工表)。

数据库 - 设计:逻辑设计_第3张图片

映射一对多递归关系

现在,如果员工受到另一名员工的监督SUPERSSN将被分配给主管员工的ID。否则,它被赋予null。

关于外键的更多信息

  • 外键的值必须随时存在于主键中。就是这样,外键不能具有不在其引用的主键中的值。
  • 外键可以具有不同的值,并且可以不是唯一的。
  • 外键可能是主键但是,一个外键不能,两个外键可以; 复合主键。
  • 外键可能与主键具有不同的名称。
  • 外键的数据类型必须与主键的数据类型匹配。
  • 外键可能包含NULL(基于用户定义的规则)。

5.M:N关系类型的映射

这种关系的一个很好的例子是,每个员工都可以一个或多个项目上工作,每个项目都可以让一个或多个员工参与到这个项目中。所以,双方都有很多。

现在,为了映射这种关系,我们创建了一个新表,这个表只存在于连接员工和项目表。首先添加两个外键,每个外键都指向两个表之一的主键。两个外键一起构成新表的主键。

可能有一位名叫Adam的员工在项目A项目B上工作。另一位正在研究项目A的员工。但是,你不能有重复; 意思是,您不能拥有两个具有相同员工和同一项目的行。

数据库 - 设计:逻辑设计_第4张图片

M:N关系的简单属性

如果存在与MN关系相关的简单属性,则将它们添加到创建的新表中。例如,我们有几个小时,即每个在特定项目上工作的员工都有特定的工作时间。

6.多值属性的映射

记得?多值属性是一组不同的值。

例如,部门可能具有不同的位置,因此每个部门的位置值都不同。

因此,我们创建一个新表,其外键指向department的主键,另一列表示多值属性(一对多关系)。这是针对每个多值属性完成的。

外键和多值属性一起构成新表的主键。

数据库 - 设计:逻辑设计_第5张图片

如果多值属性是复合属性; 由多个属性组成。您将复合属性分解为简单属性。

7. N元关系类型的映射

“如果你有一个连接超过两个表的关系怎么办?”。它与我们在M:N关系中的解决方案几乎相同。

创建一个新表,该表具有来自所有参与实体的主键的外键,外键一起将形成新实体的主键。还包括新表中该关系的任何简单属性。


关系完整性约束

我们可以定义一些约束,它们由DBMS强制执行,以使您的数据在所有表中保持有效和有意义。有三个主要限制:

  1. 唯一键约束:唯一标识每一行的唯一列或一组列不能重复(尽管它们可能为)。
  2. 实体完整性约束:主键唯一标识每一行,不能重复,并且不能为
  3. 参照完整性约束:外键......(见上文)。
以一对多关系从M侧表中删除行,或者以多对多关系从链接表中删除行 不会违反参照完整性约束。

翻译自:https://medium.com/omarelgabrys-blog/database-modeling-logical-design-part-6-af029e93cc1f

 

你可能感兴趣的:(数据库)