我目前正在为网站的数据库设计苦苦挣扎。
我有很多内容显示每个项目的某些功能的可用性。 通常是布尔值,表示功能是否可用。但它们有时也可能包含其他预定义值。 (fx。选项,联系方式)
所有项目将始终显示相同的功能列表,只是具有不同的可用性状态。 (真,假,可选,将来)
我不是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
....
有哪些优点和缺点?
还有其他设计可能性吗?
我觉得我在这个解决方案中忽略了一些东西。
可扩展性:如果解决方案不适用于未来的附属物,则无关紧要。主要目的应该是减少重复和不必要的数据库条目,这将在多对多关系中发生?!