数据建模的基数是什么意义?

4
我理解什么是基数,所以请不要再解释它 ;-)
我想知道,在数据建模中执行基数的目的是什么,以及为什么我应该关心它。
例如:在ER模型中,您可以建立关系并将基数添加到关系中。在开发过程中,我何时会继续使用基数?我为什么要关心基数?
完成ER模型后,我应该如何、何时、在哪里使用基数?
谢谢 :-)
5个回答

2

基数告诉你关于表设计的重要信息。一个1:m的关系需要在子表中创建一个外键列,指向父表的主键列。而多对多的关系则需要创建一个JOIN表,其中包含两个外键列分别指向这两个参与者。


1
在完成ER模型后,我应该如何、何时以及在哪里使用基数?
在物理创建数据库时,根据ER图中关系两端的基数,确定外键的方向、NULL-ability和数量。这甚至可能会“添加”或“删除”一些表和键。
例如:
  • “1:N”关系表示为从“N”表到“1”表的NOT NULL FK。反过来做并不能保留相同的含义。
  • “0..1:N”关系表示为从“N”到“0..1”表的NULL-able FK。
  • “1:1”关系由两个NOT NULL FK(也是键)形成循环引用1或将两个实体合并为单个物理表。
  • “0..1:1”关系由两个FK组成,其中一个是NULL-able(也在键下)。
  • “0..1:0..1”关系由两个FK组成,都是NULL-able且在键下,或者由具有特殊制作键的连接表组成。
  • “M:N”关系需要一个额外的(所谓的“联接”或“链接”)表。该表的键是从子表迁移的键的组合。

并非所有基数都可以在物理数据库中以声明方式(易于)表示,但幸运的是,那些可以表示的倾向于最有用...


1 当插入新数据时,会出现鸡生蛋的问题,通常通过将约束检查推迟到事务结束来解决。


0

如果您正在创建应用程序的数据层,并决定使用ORM,可能是实体框架。

在某个时候,您需要创建自己的模型和模型映射。此时,您可以取出ERD,查看您在图表上设置的基数,并创建正确的关系,使数据层形状与数据库形状匹配。


0

基数是两个实体之间关系的重要信息。在建模实际表结构时,您需要它们用于后续模型。如果不知道关系基数,则无法对表格和它们之间的键限制进行建模。

例如,一辆汽车必须恰好有4个轮子,并且这些轮子必须粘附在恰好一辆汽车上。没有基数,您可能会得到3、1、0、12等轮子数量的汽车,而且这些轮子还可以与其他汽车共享。当然,根据上下文,这可能是有意义的,但通常并不是。


0

数据模型是一组约束条件;没有约束条件,任何事情都可能发生。基数是一种(特殊的)约束条件。在大多数文化中,婚姻是恰好两个人之间的关系。(在某些文化中,这些人必须具有不同的性别。)

数据建模的问题在于您必须指定要对数据施加的约束条件。一些约束条件(唯一、外键)更为重要,并且与问题域的依赖性较小,而其他约束条件(“薪水<100000”)则相对不那么重要。在大多数情况下,基数将介于至关重要无用之间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接