我目前正在重新设计一个可能包含大量数据的数据库 - 我可以选择在数据库中包含许多不同的列,也可以使用大量的行。这也可能是更容易,如果我做了某种以下大纲:更高效地拥有更多列或更多行?
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为了讨论)创建附加属性 - 所以如果使用多列,可能会有很多空单元格。尽可能在不同类型的内容中重用属性名称 - 比如博客条目,事件和图库 - title
将很容易被重用。
所以我的问题是,使用多列或多行 - 在查询速度和磁盘空间方面效率更高。或者你会推荐关系表,所以有一个博客表,一个事件表等等。我只是试图想出一个易于扩展的解决方案,我最好不想为每种类型的表创建一个表内容,因为我正在考虑开发人员通过应用程序/ API系统创建新类型的内容(属性被严格控制)。
补充问题如果多行
我怎么会在MySQL中,转换多个行到一个可用列格式(我猜的临时表) - 这样我就可以通过内容类型做一些过滤,作为一个例子。
请注意,第二个模型(EAV的一个版本)是非常难以使用的。 – Strawberry
@Strawberry为什么很难合作?我是新人,即将开始一个项目,并试图在这两种设计之间作出决定。 – neuronet