Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 为什么我们要定义最小基数和最大基数ERD_Database Design - Fatal编程技术网

Database design 为什么我们要定义最小基数和最大基数ERD

Database design 为什么我们要定义最小基数和最大基数ERD,database-design,Database Design,为什么我们要定义最小基数和最大基数?它是用来干什么的?可读性?它与下面的概念有什么关系?如果我理解正确,实体之间的关系只不过是SQL连接。概念 不,关系不是连接,尽管连接通常(但并非总是)在关系之上完成 基数是您试图在数据库中表示的不同数据段之间关系的基本属性。例如,让我们考虑一个“书籍和作者”数据库…< /P> 一个作者可以有多本书,一本书可以由多个作者撰写。换句话说,书籍和作者之间存在着一种M:N(见下面的符号部分)关系 另一方面,一封电子邮件不能属于多个作者,因此这是作者和电子邮件之间的

为什么我们要定义最小基数和最大基数?它是用来干什么的?可读性?它与下面的概念有什么关系?如果我理解正确,实体之间的关系只不过是SQL连接。

概念 不,关系不是连接,尽管连接通常(但并非总是)在关系之上完成

基数是您试图在数据库中表示的不同数据段之间关系的基本属性。例如,让我们考虑一个“书籍和作者”数据库…< /P>
  • 一个作者可以有多本书,一本书可以由多个作者撰写。换句话说,书籍和作者之间存在着一种M:N(见下面的符号部分)关系
  • 另一方面,一封电子邮件不能属于多个作者,因此这是作者和电子邮件之间的1:N关系(按此顺序)
重要的一点是,无论您如何查询或试图修改数据,都需要强制执行这些关系。让DBMS通过声明性引用完整性(即外键)为您强制执行它们就是这样做的目的

符号 当您有Lmin..Lmax:Rmin..Rmax关系1时,这意味着:

  • 对于左表中的任何给定行,右表中至少可以有Rmin行,最多可以有Rmax行
  • 对于右表中的任何给定行,左表中可以至少有Lmin行,最多有Lmax行
当Lmax=1时,省略Lmin意味着下限为0或1(Rmax/Rmin同上)。令人困惑的是,说1:N可能意味着0..1:N1..1:N

当Lmax=N时,省略Lmin通常意味着0(对于Rmax/Rmin也是如此)。非零下界很少用于关系的“多”端

将Lx和Rx替换为“0”、“1”和“N”将提供各种可能的组合,其中最常见和最重要的是:

  • 0..1:0..many(又称为零或一对多0..1:N),并由右表中的可空外键建模,引用左表。在这种情况下,左表和右表通常称为“父表”和“子表”
  • 1..1:0..many(又称一对多1..1:N),与上述基本相同,但外键不为空
  • 0..many:0..many(又称多对多M:N),由位于左右表之间的所谓“连接”或“链接”表建模
评论 术语“基数”还有另一个(非常明显的)含义,它与(子)查询返回的行数有关。除非上下文清楚,否则请始终澄清您使用的是哪一个

另外,关系和关系之间也有区别。“关系型”数据库的名称恰好来源于后者


1发音为“Lmin或Lmax至Rmin或Rmax”。

概念 不,关系不是连接,尽管连接通常(但并非总是)在关系之上完成

基数是您试图在数据库中表示的不同数据段之间关系的基本属性。例如,让我们考虑一个“书籍和作者”数据库…< /P>
  • 一个作者可以有多本书,一本书可以由多个作者撰写。换句话说,书籍和作者之间存在着一种M:N(见下面的符号部分)关系
  • 另一方面,一封电子邮件不能属于多个作者,因此这是作者和电子邮件之间的1:N关系(按此顺序)
重要的一点是,无论您如何查询或试图修改数据,都需要强制执行这些关系。让DBMS通过声明性引用完整性(即外键)为您强制执行它们就是这样做的目的

符号 当您有Lmin..Lmax:Rmin..Rmax关系1时,这意味着:

  • 对于左表中的任何给定行,右表中至少可以有Rmin行,最多可以有Rmax行
  • 对于右表中的任何给定行,左表中可以至少有Lmin行,最多有Lmax行
当Lmax=1时,省略Lmin意味着下限为0或1(Rmax/Rmin同上)。令人困惑的是,说1:N可能意味着0..1:N1..1:N

当Lmax=N时,省略Lmin通常意味着0(对于Rmax/Rmin也是如此)。非零下界很少用于关系的“多”端

将Lx和Rx替换为“0”、“1”和“N”将提供各种可能的组合,其中最常见和最重要的是:

  • 0..1:0..many(又称为零或一对多0..1:N),并由右表中的可空外键建模,引用左表。在这种情况下,左表和右表通常称为“父表”和“子表”
  • 1..1:0..many(又称一对多1..1:N),与上述基本相同,但外键不为空
  • 0..many:0..many(又称多对多M:N),由位于左右表之间的所谓“连接”或“链接”表建模
评论 术语“基数”还有另一个(非常明显的)含义,它与(子)查询返回的行数有关。除非上下文清楚,否则请始终澄清您使用的是哪一个

另外,关系和关系之间也有区别。“关系”数据库恰好派生出它们的na