use*_*190 18 database orm database-design
可能重复:
有没有时间使用数据库1:1关系有意义?
为了简单起见,我会直截了当地提出这个问题:是否应该避免数据库设计中的一对一关系或这是否可接受?
我知道这个"项目"的所有属性都可以在一个表中托管,但我觉得在通过ORM将我的数据库设计转换为业务对象时,它会使实体与不必要的属性混乱.
通过用户界面,希望这将描绘出更好的画面,我有一个主要形式,具有所有必要的属性.我将有一个允许用户点击它的按钮,它将显示一个新表单以附加额外的属性.不超过1个条目可以与主表单(实体)相关联,即它是0..1结束关系.
任何建议将被认真考虑.
mar*_*c_s 43
不,1:1的关系完全有道理.
想象一下,一个实体可选地拥有一个充满属性的存储桶 - 您的某些实体拥有这些属性,而其他实体则没有.
您可以将所有这些属性作为列包含在实体表中 - 但在这种情况下,对于大量条目,许多列将为空.
或者:您可以将这些"可选"属性放入一个单独的表中,与基本实体表建立1:1(或更确切地说:0:1)的关系,并且如果您的实体真的有那些,那么只存储那里的东西属性.
决定是否将某些属性"外包"到一个单独的表中的主要标准是:
这涉及多少属性?如果它只是一两个 - 不要花时间将它们放在单独的表中.但如果你在谈论8,10,15 - 那就考虑一下吧
有多少基础实体可能具有这些可选属性?再说一次:如果95%的所有实体总是拥有所有这些属性,那么做这个额外的步骤是没有意义的.如果只有一半或更少的实体具有这些属性 - >我肯定会考虑这样一个表
取决于应用要求
通常情况下,我会说一对一的关系被建模为表中的列,但是这种情况下限制性太强:
我见过表格,其中1-> 1关系在垂直分片中的表格和具有较高索引要求的数据库中分开.
你可以分割和抽象到你最终得到的实体 - 属性 - 值结构的东西 ......这并不总是你想要的(增加了复杂性,性能),除非你的应用程序需要它.正如marc_s所说,你想尽可能避免这种情况.
| 归档时间: |
|
| 查看次数: |
13213 次 |
| 最近记录: |