MySQL数据库设计"用户"表

时间:2014-12-18 15:10:24

标签: mysql database

我的数据库中有一个下表。我要求我的用户可以是公司或私人用户。他们有一些不同的特定领域(例如公司:公司名称,联系人)。我不确定如何在我的数据库设计中实现这一点。我是否必须创建2个单独的表(正如规范化规则所建议的那样)?我很感激任何建议! 我的USER表:

user_id INT <- PK
first_name VARCHAR(35)
last_name VARCHAR(35)
email VARCHAR(254)
password VARCHAR(45)
birthday DATE
creation_date TIMESTAMP
last_access_date TIMESTAMP
updated_at TIMESTAMP
enabled BOOLEAN

提前致谢!

1 个答案:

答案 0 :(得分:0)

您需要在数据库中设计继承机制。其中一种方法,也是最干净的方法是设计三个表:

  • 用户表:此表将包含公司和私人用户之间的公共字段。例如,如果公司和私人用户都有登录名和密码,那么用户表设计将如下所示
  

user(user_id,password ...)

将user_id作为主键(您可以根据需要选择其他主键)

  • company_user 表:这将包含特定于公司用户的用户字段(登录名和密码除外)。此表将引用父用户表的登录PK
company_user(#user_id, company_address...)
  • private_user 表这将包含特定于私人用户的用户字段(登录名和密码除外)。此表将引用父用户表的登录PK
  

private_user(#user_id,home_address ...)