繁体   English   中英

将相似实体存储在同一表中,而不是数据库中的多个表中

[英]Storing similar entities in the same table vs in multiple tables in the database

我们有2个实体在数据库中表示:
-具有属性(x,y,z,r)的实体A。
-具有属性(x,y,z,s)的实体B。

2个实体具有3个相同的属性,只有1个不同的属性。 尽管它们非常相似,但它们并不相关,也不打算在业务逻辑中一起使用。

有两种方法(可能更多)来代表这些方法:

  1. 创建两个单独的表,每个实体一个。
    这是简单明了的方法。 它产生两个相对较小的表,以及更整洁的查询和业务逻辑。 但是这些表几乎是相同的,因此在某种程度上显然是多余的(想象一下,相同的属性远远超过3个)。
  2. 创建一个具有5个属性(x,y,z,r,s,类型)的共享表。
    (类型)指示此行中表示的实体的类型(A或B)。 这是假设属性(r)和(s)不是强制性的,因此我们不能依靠它们来确定实体的类型。
    例如,这是Wordpress用来表示帖子和页面(以及其他一些实体)的方法。 这将导致一个相对较大的表,其中包含许多字段以及相对混乱的查询和业务逻辑,以过滤行并逻辑上分离实体。 但是,最后我们只有一个唯一的表,而不是两个冗余的表。

我的问题是:

1-每种方法的其他优点和缺点是什么?

2-两种方法的用例是什么?

3-如果实体数量增加,或者实体之间的关系复杂性增加,那么一种方法明显优于另一种方法吗? 就像如果不是2个实体,而是20个。或者这些实体与数据库中的其他实体具有多对多关系。

谢谢!

2个实体具有3个相同的属性,只有1个不同的属性。 尽管它们非常相似, 但它们并不相关 ,也不打算在业务逻辑中一起使用。

如果没有更多关于您的架构/模型的知识,我会说两个实体是否具有相似的属性,但在业务逻辑中“不相关”,我强烈要求采用方法1。我不知道每个实体有多少个属性有多重要如果没有关联,则实体具有共同点。 仅仅由于相似的属性,将不相关的数据放在同一张表中并不是好的数据库设计。 有关模式的更多信息也可能有助于决策。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM