表中要保留多少列? - MySQL

时间:2010-12-30 17:29:42

标签: mysql database-design

我被困在行与列表设计之间用于存储一些项目,但决定哪个表更容易管理,如果列,那么最好有多少列?例如,我有对象元数据,理想情况下,在每个对象需要存储的同一级别上有45条信息(在规范化之后)。那么重读/写表中的45列是好的吗?在重度并发读/写的真实世界情况下它能完美无缺吗?

4 个答案:

答案 0 :(得分:3)

如果您的所有或大部分列都填充了数据且此数字已修复,则只需使用45字段即可。 45列没有任何本质上的错误。

如果符合所有条件:

  • 您有可能获得既不知道又无法在设计时预测的属性

  • 仅偶尔填充属性(例如,每个实体10个或更少)

  • 有许多可能的属性(数百或更多)

  • 大多数实体都没有填写任何属性

然后你有一个叫sparce matrix的人。可以使用EAV表更好地表示此(并且仅此)模型。

答案 1 :(得分:0)

“每个表有4096列的硬限制”,应该没问题。

答案 2 :(得分:0)

采用“更易于管理”的部分问题:

如果您收集的属性名称没有更改,那么列就可以了。即使它人口稀少,磁盘空间也很便宜。

但是,如果每个项目(行)最多有45个属性,但这些属性可能从一个元素到另一个元素根本不同,那么使用行会更好。

例如拍摄产品目录。一种产品可能有颜色,重量和高度。另一个可能有许多按钮或手柄。这些显然是截然不同的属性。此外,此类数据表明将添加可能仅与特定产品集相关的新属性。在这种情况下,行要好得多。

另一个选择是使用NoSql并使用基于文档的数据库服务器。这将允许您基于每个项目设置命名的“列”。

所有这些都表示,行的管理将由应用程序完成。这将需要一些高级数据库技能。列的管理将由开发人员在设计时完成;这对于大多数人来说通常更容易理解。

答案 3 :(得分:0)

我不知道我是否正确但是我曾经在MySQL中读过以保持你的表有最小列如果可能,(阅读:http://dev.mysql.com/doc/refman/5.0/en/data-size.html),请注意:如果你使用的是MySQL,我不知道他们的概念是否适用于其他DBMS,如oracle,firebird,posgresql等。

您可以使用45列查看表格并分析您真正需要的内容,并将可选字段保留在其他表格中。

希望它有所帮助,祝你好运