This question already has answers here:
When I should use one to one relationship?
(13个回答)
3天前关闭。
我有一个数据库(mysql),并且在一个大约80列的进度表中。我正在考虑将此信息分成其他表,并保持1:1关系。但这可能会影响开发时间,创建更多对象等等。
使用多个具有1:1关系的表而不是在同一表中使用所有表的优点是什么?
(13个回答)
3天前关闭。
我有一个数据库(mysql),并且在一个大约80列的进度表中。我正在考虑将此信息分成其他表,并保持1:1关系。但这可能会影响开发时间,创建更多对象等等。
使用多个具有1:1关系的表而不是在同一表中使用所有表的优点是什么?
最佳答案
当表中有80列以上时,听起来好像您已正确将其标准化为3NF或更高。但是无论如何,假设您曾经做过或有充分的理由不进行任何进一步的规范化,则只有两个理由将其拆分为多个表。
原因1(manual entry):
对于具有多个列的表,要减少不使用BLOB列的查询的内存需求,请考虑将BLOB列拆分为一个单独的表,并在需要时使用联接查询对其进行引用。
原因2(manual entry):
您在大多数情况下都具有其中值均为NULL的列,但希望在其上使用索引以加快某些查询的速度。
尽可能将列声明为NOT NULL。通过更好地使用索引并消除测试每个值是否为NULL的开销,它可以使SQL操作更快。您还节省了一些存储空间,每列一位。如果您的表中确实需要NULL值,请使用它们。只要避免使用默认设置,该默认设置允许每列中都为NULL值。
也就是说,这两个原因很少出现,仅适用于非常大的表。
模式的可读性(如Dimitri所建议的那样)不应该成为您的关注点之一。无论如何,我还是不明白,将表拆分成多个表会对此有所改善。实际上,我认为它会使情况恶化。 (编辑:结果表明,Dimitri意味着标准化...)
关于mysql - 1:1关系的优点是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47180558/