我有一个数据库(mysql),在一个正在进行的表中有大约80列。我正在考虑将这些信息分成其他表格,并保持1:1的关系。但这可能会影响开发时间,创建更多对象等等。
使用具有1:1关系的多个表的优势是什么,而不是使用同一个表中的所有内容?
答案 0 :(得分:1)
将一个大表分成两个不同的表时,1:1关系基本上可以帮助您在数据库中获得更好看以及与之相关的方案。构建关系数据库时,可读性是这样做的最大优势。但是,它会使您的 查询更加复杂 ,而您 可能会失去一些效率 。
答案 1 :(得分:1)
当表格中有超过80列时,听起来并没有正确地将其标准化为3NF或更高。但无论如何,假设你做了或没有充分的理由不再进一步规范化,只有两个理由将它分成多个表。
原因1(manual entry):
对于具有多个列的表,要减少不使用BLOB列的查询的内存要求,请考虑将BLOB列拆分为单独的表,并在需要时使用连接查询引用它。
原因2(manual entry):
您有大多数时间值为NULL的列,但您希望使用它们来加速某些查询。
如果可能,将列声明为NOT NULL。它通过更好地使用索引并消除测试每个值是否为NULL的开销,使SQL操作更快。您还可以节省一些存储空间,每列一位。如果您确实需要表中的NULL值,请使用它们。只需避免在每列中允许NULL值的默认设置。
尽管如此,这两个原因很少见,只适用于非常大的表。
您的架构的可读性(如Dimitri建议的那样)不应成为您关注的问题之一。无论如何,我不明白,如何将表分成多个改进。事实上,我认为它会恶化它。(编辑:在评论中,Dimitri意味着正常化......)