Database design 具有多种用户类型的数据库设计
我对数据库设计相当陌生。 我正在构建一个小型asp.net mvc web应用程序,其中有各种类型的用户可以登录到该网站 所以这个表的结构是 用户表 用户ID(PK)、用户名、密码、电子邮件、角色等 员工表: Eid(PK)、用户名(FK)、名字、加入日期等 客户表: Cid(主键)、用户ID(FK)、名字、公司名称等 users-employees表之间存在一对一关系 和用户-客户表 普通用户仅在用户表中显示详细信息 这是正确的设计吗?如果用户只能是一种类型。。。 用户->用户类型 Users表将有一个type_id,它是UserTypes表中一个字段的主键 使用者Database design 具有多种用户类型的数据库设计,database-design,Database Design,我对数据库设计相当陌生。 我正在构建一个小型asp.net mvc web应用程序,其中有各种类型的用户可以登录到该网站 所以这个表的结构是 用户表 用户ID(PK)、用户名、密码、电子邮件、角色等 员工表: Eid(PK)、用户名(FK)、名字、加入日期等 客户表: Cid(主键)、用户ID(FK)、名字、公司名称等 users-employees表之间存在一对一关系 和用户-客户表 普通用户仅在用户表中显示详细信息 这是正确的设计吗?如果用户只能是一种类型。。。 用户->用户类型 Users
- 用户标识1
- 我叫乔纳森·桑普森
- 电子邮件foo@bar.com
- 类型ID 1
- id 1
- 类型未注册
- 用户ID
- 类型ID
- 用户id(Jonathan Sampson的1个id)
- typeid(2个总统id)
- 用户标识(1)
- typeid(1个客户id)
- 公司ID
- 公司名称
- 联系电话
- 街道地址
- 城市
- 陈述
- Zipcode
当然,如果每个公司都有多个代表,您需要创建一个代表公司表,类似于我们的UsersToTypes。如果一个用户成为雇员或客户,或者两者都成为雇员,该怎么办?在最初的设计中,这不是一个问题,但是使用显式的用户类型id,这会造成严重破坏。实际上,角色列可以区分不同类型的用户。员工/客户应该是一个表。我已经更新了我的答案。但问题是员工和客户需要存储不同的详细信息,例如,我们的客户实际上是来自不同公司的人,所以我需要将“CompanyName”存储为客户表中的一列。不是真的。添加公司id字段并添加公司表。这样,如果您想要一份与您有业务往来的公司的列表,就不必查询用户表。
SELECT users.name, users.email, users.typeid, usertypes.type
FROM users LEFT JOIN usertypes ON (usertypes.id = users.typeid)
WHERE (users.id = 1)