我试图理解当关系具有确切性质时,我们如何建模和定义两个实体的基数。让我们说1比2。
例如,如果我有实体旅程和位置。现在每个旅程都有2个位置,一个起始位置和一个结束位置。
那么我们如何模拟这种关系并将基数放在每个实体上(旅程和位置)。
简单的Google搜索会产生简单的1-1,1-m和m-n关系解释。但是我们如何将它们限制在1-2?
答案 0 :(得分:3)
您的示例不是" 1到2",但是" N到2",并且您只需使用两个外键即可对其进行建模:
(可能需要检查以确保起点和终点位置不同。)
如果你真的想要" 1到2",从某种意义上说,任何给定的位置总是连接到一个旅程,你必须做这样的事情......
...并使用支持延迟约束的DBMS,这样您就可以在插入新数据时打破鸡蛋问题。
在不支持延迟约束的DBMS上,你可以使起始和结束位置为NULL,但是它不再是" 1到2",而是" 1至0..2"关系。
答案 1 :(得分:0)
不同的建模符号以略微不同的方式表示,但通常数字(不同地称为度,范围或多样性)写在附近它适用的关系线的末尾。它在UML表示法中最常见。在IDEF1X术语中,它有时被称为" N Cardinality"。
在SQL数据库中,出于大多数实际目的,实际上不可能实现最小所需多重性大于零的这种关系的约束。这可能解释了为什么这些关系在数据库模型中不常见,但在类图中更常见。面向对象的系统原则上可以强制执行约束,而基于SQL的数据库通常可以实现。