0
|
Steven Mercatante Dimitri Kopriwa · 技术社区 · 15 年前 |
![]() |
1
3
为了正确的数据库设计和规范化,我应该在post和media之间建立一个外键关系吗? 对于“正确的规范化”,您必须确保没有“更新异常”。 如果有人更新了帖子,附件和媒体会发生什么变化?重命名post会断开附件和/或媒体的连接吗?如果是这样,那么你的FK是错的。[提示,您必须使用代理项密钥而不是帖子的名称才能使FK正常工作。] 如果有人想将附件从一个帖子“移动”到另一个帖子(即更新附件的FK引用),那么媒体会发生什么情况?是否保留附件并移到新岗位? 你能在文章中加入附件和媒体吗,以及附件中加入媒体吗?文章和附件是否会因为附件被“移动”而不更新而对媒体产生分歧? 如果你有矛盾,你已经打破了第二个正常形式,你已经重复了关键的关系,你不应该重复。 适当的标准化很容易。 数据取决于密钥,而只取决于密钥。 不要在任何地方复制或重复依赖项。你所说的“深度链接”似乎是依赖关系的重复。 |
![]() |
2
2
不,对于正常化来说 3NF 关心你,这是通常的规范化级别,结构是可以的。 对于记录规范化来说,它既有成本,也有好处,特别是在数据插入和删除时,主要控制的是插入的方式和内容。 一个标准化和非标准化的风险由他自己承担:) |
![]() |
3
1
我认为你没事。 一篇文章可能有多个附件,一个附件可能有多个帖子,如果是这样的话,您将需要一个链接实体用于第三种正常形式:
但从你的描述来看,邮报和媒体之间似乎没有什么关键关系。 |
![]() |
4
1
将fk从介质添加到post的唯一原因是,您需要为特定post筛选或选择介质,而不考虑附件。即使您需要显示媒体(可能是按类型)及其所属的文章,我也不会添加直接关联;添加第二个连接(通过附件表)的开销可能很小,因此您不太可能看到任何显著的改进。 |
![]() |
5
0
尽可能深入地链接表。报告和看到性能问题后取消规格化。 |
![]() |
6
0
首先,不需要使用代理键。如果您需要,一个合适的数据库将级联更新。在规范化数据库时,通常要实现第三种标准形式,甚至bcnf。第二个普通表单并不总是保护您的数据不受更新异常的影响。一旦生成er图并确定哪些数据是实体(post、attachments、media)的一部分,以及哪些数据是关系的一部分,就应该很容易确定模式中的功能依赖关系。根据关系的基数,您可能需要也可能不需要联接表。最好的做法是在图表中对数据建模,然后处理实现问题。 |
![]() |
hashmap · 数据库规范化2NF和3NF 7 年前 |
![]() |
user3127554 · SQL数据库关系 7 年前 |
|
Mikhail Mishin · 如何存储可以是数字范围或数值的数据? 9 年前 |
![]() |
Prashant Singh · mysql数据库中高效的读写 11 年前 |
![]() |
Tarzan · 除了NULL之外,处理未知日期时间值的好策略是什么? 12 年前 |