我应该使用外键吗?

时间:2013-06-20 19:16:11

标签: database database-design

假设我想创建一个数据库来存储用户的登录和个人详细信息,那么我应该创建一个表

Only One table Table User
Username(varchar255)|User_id(int)|Name(varchar255)|Sex(0,1,2)|DOB(Date)|Password(char64)|

带有外键的两个表

Table User_Login

    User_id(int)|Username(varchar255)|Password(char64)|

and table User_Detail

    User_id(int)|Name(varchar255)|Sex(0,1,2)|DOB(Date)|

2 个答案:

答案 0 :(得分:1)

问自己这些问题。

用户是否拥有一个或多个用户名?

用户是否拥有一个或多个密码?如果要在一段时间内检查唯一密码,则包括以前的密码。

用户是否会有一个或多个名称?

用户是否会有一个或多个性别?

用户是否有一个或多个出生日期?

当问题的答案是“一”时,该列属于用户表。

当问题的答案是“多个”时,该列属于另一个表。

此过程称为database normalization的第一个常规形式。

答案 1 :(得分:0)

我认为如何定义表格的两种流行方式,3NF和BNCF(它们将被很好地记录)。

规则是:

  • 应该没有dulicate列(简单的列)
  • 删除不完全依赖主键的列(查看属性,如果它们在单独站立时有意义,那么它们应该在单独的表中(类似的东西)

第一次很难掌握所以读取1NF,2NF,3NF和BNCF

相关问题