【发布时间】:2015-07-17 00:49:09
【问题描述】:
我正在建立一个友谊网站,我想存储何时可以查看个人资料的限制。
现在我使用实体属性模型来存储限制。限制的示例是配置文件可用的日期。我遇到的问题是我想对用户是否可以根据用户年龄范围查看个人资料添加限制。
我不确定这种方法是否适合存储,感觉真的很多余,但也许我只是挑剔。
我要添加的两个限制是最小年龄和最大年龄。这种设计看起来是正确的方法吗?
用户属性实体表
id(PK) | userid | attribute | entity
0 | 0 | 0 | 1
1 | 0 | 1 | 188
属性表
id(PK) | attribute
0 | Minimum Age
1 | Maximum Age
2 | Contact Restricted Days
实体表
id(PK) | attribute_ID | Entity
0 | 0 | 18
1 | 0 | 19
.. | .. | ..
88 | 0 | 99
89 | 1 | 18
90 | 1 | 19
.. | .. | ..
188 | 1 | 99
199 | 2 | Monday
.. | .. | ..
205 | 2 | Sunday
【问题讨论】:
-
别在意我之前的评论,我现在看到了 userid 字段。
-
那么,实体表中的实体列是否存储了用户的年龄值呢?
-
你可以,但为什么不把 3 个额外的字段扔到用户表上... MininumAge (int -default 0), MaximumAge (int - default 200), ContactDays (int/enum/flags -默认 127) - 位编码?它将使查询变得更容易和更快。您可以创建另一个表“ContactDays”并用所有组合填充它,如果这会让您感觉更好并为其放置一个 FK。
-
您的方法更具可定制性,并且可以轻松扩展以包含更多属性,但您会为查询复杂性付出代价,这会影响您的性能。一切都取决于您需要解决方案的可扩展性。
-
那是真的,我想没有平衡。可扩展性和定制或性能。这是每个数据库设计都需要做出的选择。
标签: sql sql-server tsql optimization database-design