【发布时间】:2012-02-02 11:19:49
【问题描述】:
我对如何重组我的数据库有点困惑,目前我正在处理三个表:
Items:包含一个“item”的基本信息(user.id、name、description、feature_1(bool)、feature_2(bool) ..等)
Feature_1:其中包含“项目”的一些可选值,因此如果用户决定将特征 1 用于他的项目,我们将在 Feature_1 中创建一条记录并填写这些值。 1 个项目在“Feature_1”表中不能有超过一条记录,因此它要么有 1 条记录,要么没有。
Feature_2:与 Feature_1 相同,但具有不同的可选值,因此用户可以将 Feature_1 添加到他的 Item 和/或 Feature_2。同样,每个项目可以有 0 或 1 个 Feature_2 记录。
我不确定这是否是最佳做法,其中一个选项是将 1 个表“项目”中的所有值与许多 NULL 值混合。
任何建议和指点将不胜感激。
【问题讨论】:
-
Google for EAV 数据库模型。
-
@N.B. - EAV 不是灵丹妙药。事实上,如果存在任何其他合适的解决方案,我会争辩不要使用它。也就是说,值得谷歌搜索和理解。无论如何,这不是一个普遍的答案。
-
@Dems - 没有什么是魔锤,但了解 EAV 是什么有助于决定使用什么方法/模型来解决特定问题。
-
@N.B. - 同意,但您的评论形式表明这是对 this 问题的 答案。我不同意。
-
@Dems - 这就是我发表评论而不是答案的原因:)
标签: mysql sql database database-design