我对数据库设计很陌生.我正在构建一个小型的asp.net mvc Web应用程序,其中有各种类型的用户可以登录该网站.
表结构是,
用户表用户ID(PK),用户名,密码,电子邮件,角色等
员工表:Eid(PK),用户ID(FK),名字,加入日期等
客户表:Cid(PK),用户ID(FK),名字,公司名称等
用户之间存在一对一的关系 - 员工表和用户 - 客户表.
一般用户只有Users表中的详细信息.
这是一个正确的设计吗?
用户 - > UserTypes
Users表将具有type_id,它将是UserTypes表中字段的PK.
用户
UserTypes
类型未注册
SELECT users.name, users.email, users.typeid, usertypes.type
FROM users LEFT JOIN usertypes ON (usertypes.id = users.typeid)
WHERE (users.id = 1)
Run Code Online (Sandbox Code Playgroud)返回:Jonathan Sampson,foo @ bar.com,1,未注册
用户 - > UsersToTypes - > UserTypes
如果用户需要具有多种类型的容量,您将引入第三种类型:
UsersToTypes
因此,如果用户同时是type1(Customer)和type2(President),那么UsersToTypes中将有两条记录:
我不会将company-name放在users/clients表中.如果你的数据库中有很多代表,你最终会有多次出现这个名字.而是创建一个存储以下内容的Companies表:
这样,如果公司进行了更改,则无需编辑clients表来更新其名称.您在适当的表中更新其详细信息,然后全局更新.
当然,如果每个公司有多个代表,则需要创建一个类似于UsersToTypes的RepsToCompanies表.
| 归档时间: |
|
| 查看次数: |
2981 次 |
| 最近记录: |