每个 table 都必须经过归一化吗?

Does every table have to go through normalization?

我正在学校学习数据库,并且有一项作业必须执行规范化。我对我认为的主题有很好的理解。我有一个正在处理的项目,我需要对几个表执行规范化。我能够在一些表上做到这一点,但其他表我只是想不出任何部分或传递依赖性。我的问题是,是否每个 table/entity 都需要经过标准化?

预先感谢您的回复。

简短回答:是的,我建议至少去 3NF。

长答案:不,可能有一些特定于应用程序的要求,这意味着您不进行标准化。

因为你是学生,你可能不了解视图,它们可以用在你想的地方"I need to normalise but it makes so much sense not to"

作为一般建议,您应该对数据库的初始设计进行规范化。这意味着通过分解具有 Boyce-Codd 范式或第四范式中有问题的依赖关系的关系来简单地消除冗余(除非您丢失了一些依赖关系,在这种情况下您应该选择第三范式)。

当然,如果关系没有因传递或部分依赖或多值依赖而出现问题,则您不应触摸它们,因为它们已经规范化了。

然后,但是 如果需要,通过查看查询的性能,您可以进行非规范化,例如将不同的关系放在一起,并接受有限量的冗余,或修改异常;或拆分已经规范化的关系。这是因为您必须为增加的程序复杂性和更多不一致的风险付出代价,所以只有在绝对必要时才付出代价。