【问题标题】:To improve a relation figure for a database改进数据库的关系图
【发布时间】:2009-07-25 19:09:28
【问题描述】:

这个问题是基于我the thread的计划。

下图显示了我的数据库中的关系

alt text http://files.getdropbox.com/u/175564/relation-figure.png

我有两个“帮助表”:questions-subjectscheck-moderator。我使用前者是因为一个问题可以有多个主题,而后者是因为多个版主可以检查一个问题。

我在箭头处省略了 1 对 1 的数字。

questionmoderator-check 表之间的虚线箭头表示可能存在版主不检查的问题。

这是我的第一个数据库项目,所以表中有错误。

你会在表格中改进什么?

【问题讨论】:

    标签: database


    【解决方案1】:

    User、UserInfo、Moderator 和 Password 是多余的表,没有任何好处。

    它们只表示与 User 的 1-1 关系,因此无需将它们规范化为单独的表:

    制作一张桌子:

    • 用户ID
    • 姓名
    • 电子邮件
    • 密码Md5
    • 是主持人

    【讨论】:

    • 我需要以 hash 形式存储用户的密码,这样任何人都无法阅读它。 我是否需要一个表格,以便我可以有效地检查用户提供的密码是否与数据库中的密码匹配?
    • 没有。你在你的应用程序中做哈希。
    • 澄清一下,您永远不会将明文通行证存储在数据库中。在你的数据库中同时拥有 clear 和 hash 有什么好处?只存储哈希值,然后将哈希算法应用于输入的密码,然后只比较哈希值。
    • @FlySwat:我知道该应用程序的工作方式类似于,通过将两个非常大的素数 x 和 y 相乘,使得乘积 z 是公开的:x*y=z。 z 是数据库中的哈希,显然 y 也在数据库中。如果用户给出正确的密码,x 的值,我们让他进来。-- 我应该在你的建议表中也有参数密码-y 吗?
    • 永远不要发明自己的哈希算法。使用 SHA1。
    【解决方案2】:

    回复 FlySwat 的回答

    根据您的回答,我将表格更改为以下内容。

    alt text http://files.getdropbox.com/u/175564/table-problem-3.png

    【讨论】:

    猜你喜欢
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多