gpt4 book ai didi

mysql - 将相似的实体存储在同一个表中与数据库中的多个表中

转载 作者:行者123 更新时间:2023-11-30 21:53:06 25 4
gpt4 key购买 nike

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

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

有 2 种方法(可能更多)来表示这些:

  1. 创建两个单独的表,每个表对应一个实体。
    这是直接的方法。它会产生两个相对较小的表,以及更清晰的查询和业务逻辑。但是这些表几乎完全相同,所以它在某种程度上显然是多余的(想象一下相同的属性远不止 3 个)。
  2. 创建一个具有 5 个属性(x、y、z、r、s、类型)的共享表。
    (type) 指示此行中表示的实体的类型(A 或 B)。这是假设属性 (r) 和 (s) 不是强制性的,因此我们不能依赖它们来确定实体的类型。
    例如,这是 Wordpress 用于表示帖子和页面(以及一些其他实体)的方法。它导致一个相对较大的表包含大量 null 字段,以及相对困惑的查询和业务逻辑来过滤行和逻辑上分离实体。但我们最终只得到一个唯一的表,而不是两个多余的表。

我的问题是:

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

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

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

谢谢!

最佳答案

The 2 entities have 3 identical attributes, and only 1 different attribute. And although being very similar, they are not related and not intended to be used together in the business logic.

在不了解您的架构/模型的情况下,我会说如果这两个实体具有相似的属性但在业务逻辑中“不相关”,我会强烈建议采用方法 1。我不明白它有多重要每个实体有许多共同的属性,如果它们不相关的话。仅仅因为属性相似就将不相关的数据放在同一个表中,这不是好的数据库设计。有关您的架构的更多信息也可能有助于做出决策。

关于mysql - 将相似的实体存储在同一个表中与数据库中的多个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46329223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com