【发布时间】:2015-12-21 21:38:20
【问题描述】:
我有 2 张桌子:
学生硕士:
ID、名字、姓氏、电子邮件、电话 否,Countryid,stateid,cityid,Profilepicurl,gender,Dateofbirth.
教练大师:
ID、名字、姓氏、电子邮件、电话 否,Countryid,stateid,cityid,Profilepicurl,gender,Dateofbirth,Language。
现在您可能会注意到,这 2 个表只有一个公共字段,除了 1 个额外字段,即 coachmaster 中的 Language。
我正在考虑制作一个包含两个表中所有字段的单个表,即这个 UserMaster(包含 StudentMaster 和 CoachMaster),如下所示:
用户管理员:
Id,其余所有常用字段,Language(来自 Coach Master)
我已经与 我的一位经验丰富的开发人员朋友讨论了这个问题,他告诉我只创建单独的表,他向我展示了以下 2 个创建 2 个单独的场景表格:
-
1234563
如果我在 UserMaster 中添加教练所需的 2 个额外字段,并且如果我只想要任何特定的学生详细信息,那么这 2 个额外字段(在我的第一点中添加的教练)也将不必要地获取。
注意:其他场景也可能存在,只有一张表同时维护教练和学生的详细信息。
除此之外,我的朋友告诉我,我在这里没有遵循规范化规则,如果我只有 一个只有 usermaster 的表,那么只有识别哪个用户是学生和 哪个用户是导师,我总是必须使用加入检查是 Userinrole表,我将像这样维护:
角色大师:Id,Name(Value:Student,Coach)
UserInRole:RoleId(Reference to RoleMaster Id),UserId(存储任意一个 Studentid 或 CoachId)
当我有任何 id 时,我总是必须找出它是否是教练 r 学生。
那么任何人都可以帮助指导我如何创建一个可以解决这两种情况并避免在这两个表中不必要地创建重复字段的良好结构吗?
【问题讨论】:
标签: sql sql-server database entity-framework database-design