|
|
1
81
某些问题需要澄清和解决 之前 我们可以进行合理的讨论。
现在,我们可以开始 讨论
当然。但不要太“抽象”。保持一致性,并以与其他列表相同的EAV(或6NF)方式实现这些列表。
|
|
|
2
9
在你的问题中,你同时提出了至少两个主要问题。这两个问题是E-A-V和gen-spec。 首先,让我们来谈谈E-A-V。您的最后一个表(object-id,field-id,value)本质上是一个E-A-V。E-A-V有一个优点,E-A-V有一个缺点。优点是这个结构非常通用,几乎可以容纳描述任何主题的任何数据体。这意味着您可以继续进行设计和实现,而不必进行数据分析,也不必理解主题,也不必担心错误的假设。缺点是,在检索时,您必须在构建数据库之前进行跳过的数据分析,以便提出任何有意义的查询。这比单纯的检索效率要严重得多。但你也会在检索效率上遇到可怕的问题。要了解这个陷阱,只有两种方法:活过它,或是从那些曾经经历过的人那里读到它。我推荐阅读。 其次,你有一个发电机规格的情况。您的表(object_id,type_id)捕获一个gen spec(泛化专门化)模式以及相关的表。如果我必须在酒店和餐厅之间进行概括,我可以称之为“公共住宿”或“场所”。但我不确定我是否理解你的情况,你可能是为了比这两个名字所暗示的更一般的东西而开车。毕竟,你已经把“活动”列入了你的清单,在我看来,活动不是一种场所。
在之前的回答中,我已经让其他人阅读了gen spec和关系模型。
|
|
|
3
3
当您开始需要大量不同的实体(甚至之前…)时,nosql解决方案将比这两种选择都要简单得多。 只需将每个实体/记录与所需的确切字段一起存储。
|
|
|
4
2
“抽象”方法被称为“规范化”,看起来像第三范式(3NF)。
|
|
|
5
1
代码中的列表是如何表示的?我想
没有普遍正确的解决方案。我的偏好通常是从选项3开始;它提供了一个可以使用的初始结构,非常标准化,并且可以很容易地扩展。这意味着检索每个实例只需要一个连接—但是RDBMS在执行连接时经过了很好的优化,因此在实践中不会真正导致性能问题。 选项2对于查询(没有连接)的性能可能更高,但如果其他表需要引用所有超类型实例(外键激增),则会导致问题。
选择哪一个,归根结底是要知道你的问题的细节。我建议你多读一点关于选项的书: this article 是一个很好的开始。 高温高压 |
|
|
Bard.Mus · 迁移后的数据库字符集环境 11 月前 |
|
|
tinkerr · 如何在2025年在MacOS上安装MySQL 5.7 11 月前 |
|
Efannnnnn · 将Id数据存储到任何页面 11 月前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |