SQL:多对多与基于列的一对一关系

时间:2017-01-31 22:45:04

标签: mysql laravel database-design entity-attribute-value

我目前正在为网站的数据库设计苦苦挣扎。

我有很多内容显示每个项目的某些功能的可用性。 通常是布尔值,表示功能是否可用。但它们有时也可能包含其他预定义值。 (fx。选项,联系方式)

  • ✔功能1
  • ✔服务
  • ✖功能2
  • ✔电源
  • ✖自动
  • ...

所有项目将始终显示相同的功能列表,只是具有不同的可用性状态。 (真,假,可选,将来)

我不是100%确定如何实现这一目标。 对于这类问题,什么是最好的方法?

多对多关系?

items
    id - integer
    title - string
    content - text


features
    id - integer
    name - string

item_feature
    item_id - integer
    feature_id - integer
    feature_state - boolean / enum

与列中的功能实现一对一的关系?

items
    id - integer
    title - string
    content - text


features
    item_id - integer
    predefined_feature_1 - boolean / enum
    predefined_feature_2 - boolean / enum
    predefined_feature_3 - boolean / enum
    ....

有哪些优点和缺点?
还有其他设计可能性吗?

我觉得我在这个解决方案中忽略了一些东西。

可扩展性:如果解决方案不适用于未来的附属物,则无关紧要。主要目的应该是减少重复和不必要的数据库条目,这将在多对多关系中发生?!

0 个答案:

没有答案