我目前正在重新设计一个可能包含大量数据的数据库 - 我可以选择在数据库中包含许多不同的列,或者使用许多行代替。如果我提供以下概述,可能会更容易理解:
item_id | user_id | title | description | content | category | template | comments | status
-------------------------------------------------------------------------------------------
1 | 1 | ABC | DEF | GHI | 1 | default | 1 | 1
2 | 1 | ZYX | | QWE | 2 | default | 0 | 1
3 | 1 | A | | RTY | 2 | default | 0 | 0
4 | 2 | ABC | DEF | GHI | 3 | custom | 1 | 1
5 | 2 | CBA | | GHI | 3 | custom | 1 | 1
与以下结构中的某个内容相比:
item_id | user_id | attribute | value
---------------------------------------
1 | 1 | title | ABC
1 | 1 | description | DEF
1 | 1 | content | GHI
... | ... | ... | ...
我可能会在未来创建更多的属性(以50个为例),如果使用多列,则可能会有很多空单元格。在不同类型的内容中,属性名称将尽可能地重复使用,例如博客文章、事件和画廊 - 标题
将很容易被重复使用。
所以我的问题是,在查询速度和磁盘空间方面,使用多列还是多行更有效率?或者您是否建议使用关系表,因此有一个用于博客的表,一个用于事件等等。我只是想提出一个易于扩展的解决方案,理想情况下,我不想为每种内容创建一个表,因为我考虑开发人员通过应用程序/API系统创建新的内容种类(其中属性受到严格控制)。
如果使用多行,补充问题:
如何在MySQL中将多行转换为可用的列格式(我猜是临时表)- 例如,我可以按内容类型进行一些过滤。