【问题标题】:When do/should two Entities in 1:1 Relationship become a Single Entity? [closed]1:1 关系中的两个实体何时/应该成为一个实体? [关闭]
【发布时间】:2016-02-08 22:55:58
【问题描述】:

我对(关系)数据库设计比较陌生。我对以下建议感到困惑

许多(如果不是大多数)1:1 关系是 ERM 设计不佳的迹象,而

1:1 关系中的两个实体应合并为一个,除非存在

是这样做的一个强有力的理由。但我还没有找到明确的建议

这样做。任何解释,参考表示赞赏。

编辑:我认为我的情况不同,因为我有不同的起点:给我一个业务情况,我必须识别实体, 他们的关系等。我以 1:1 的关系获得了两个实体,我想知道何时/是否应该将它们合并为一个实体。我没有在任何其他问题中看到这一点。如果有人确实将我链接到解决此问题的问题,我可能会删除我的帖子,但我想让它保持不变。

编辑 2:更具体地说,我有一种情况,每个员工管理 一个部门,每个部门都由一名员工管理。

编辑 3:我想这归结为区分属性和实体。我的想法是,根据经验,给出一个描述 情况,动词表示关系。我能想到的另一个限制 of 违反“原子性”或属性为多值的 1NF, 例如,如果我们有“包裹”并且提到包裹内容,如果有 描述了很多内容,然后把“内容”做成一个实体,避免出现多个条目。也许这比我最初想象的要简单。

谢谢。;

【问题讨论】:

标签: mysql sql entity-framework


【解决方案1】:

“1:1 关系中的两个实体何时/应该成为一个实体?”

几乎总是

实际上问题应该是“什么时候应该将一个实体拆分为两个具有 1:1 关系的表?”我能想到一个可能的原因。

实体的一行所需的列数或空间超出了允许的范围。

肯定有更多的原因,但这是马上想到的。

编辑

从这里添加更多原因:http://solutioncenter.apexsql.com/how-to-split-a-table-in-sql/#sthash.VbXZVkxv.dpuf

通过拆分表和移动要保护的列,您可以 为包含敏感信息的表分配不同的访问权限 数据:

有一个表,大多数外部应用程序都可以访问一组表 更频繁的数据(例如人名、SSN 等),而其他数据 (例如人的照片)较少需要,您可以改进 通过拆分表并移动访问较少的列来提高性能 到另一个表中。

【讨论】:

  • 嗯,不,这不是我的问题,因为我正在尝试在给定业务条件时设计一个 ERD,并且恰好存在 1:1 关系中的实体,我想知道我是否应该合并它们。因此,知道何时需要拆分实体在这里对我没有帮助。
  • 我认为@Adish 建议的规则是:合并它们,除非一旦合并,你会想要拆分它们。如果有不经常访问的大列,则使用拆分表可以提高性能。但是,我不会在初步阶段考虑进行这样的优化,当我这样做时,我将它们限制在物理模型(而不是逻辑模型)中。请注意,在许多 1:1 关系中,一侧是可选的。真的是 0..1:1。这些可能应该是单独的表格。
猜你喜欢
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多