问题描述
|
我将创建数据库MySQL的架构。有用户名,密码等和评分系统,可在一个月内使用。
标准它看起来像这样:
id |用户名|密码一月二月前进rating1 |评分2 | rating3 |
1 |约翰| xxx | 1 | 0 | 1 | 3 | 3 | 6
2 |艾米| xxx | 1 | 1 | 0 | 1 | 6 | 3
如果用户购买商品,则必须添加评分(1,2,3)。如果在约翰中选择2,则评分2 +1
id |用户名|密码一月二月前进rating1 |评分2 | rating3 |
1 |约翰| xxx | 1 | 0 | 1 | 3 | 4 | 6
2 |艾米| xxx | 1 | 1 | 0 | 1 | 6 | 3
一月,二月(1-可用,0-不可用)等将自己设置为John或Amy。
这好吗?我应该为Januar / feb / march和rating1 / 2/3创建单独的表格吗?也许只是为了评分?
解决方法
我不是一个硬核数据库设计人员,但是乍一看这是架构未规范化。
如果您可以为月份创建一个单独的表,并且评分会更好,请找到以下示例
d |用户名|密码
1 |约翰| xxx
2 |艾米| xxx
id |一个月评分
1 | 1 | 3
MonthID |月名
1 |一月
然而,这种限制可能不是您所建议的数据库的理想解决方案。
, 好吧,我知道这很晚了,但是这很严重!!!
首先使用bcrypt加密密码
第二,永远不要存储未正确加密的密码。您需要一个“盐”来正确执行此操作。
看到这里:http://www.nathandavison.com/posts/view/13/php-bcrypt-hash-a-password-with-a-logical-salt
我不是php专家,但看起来不错。
至于数据库,Prabhakantha的回答看起来还可以,但可能并不完全合适。
用户数
id | username | password | salt
1 | john | xxx | blah
2 | amy | xxx | ughh
等级
id | month_id | rating
1 | 1 | 3
月数
id | month | year
1 | January | 1990
我知道在Rails上的ruby世界中,我会使用多态关联对此进行建模。在这里看看它是如何工作的:http://railscasts.com/episodes/154-polymorphic-association
是的,这是一段关于铁路的视频,但此处适用。