在我们的新系统中,我们有三种类型的人
我有以下实体
业务规则
什么是正确的课堂设计和数据库设计?
任何帮助/建议表示赞赏!!!
更新1 :根据反馈,我提出了以下数据模型。我使用EF 4.1与代码优先方法,每个数据实体将直接映射到一个类。
请建议您反馈!
答案 0 :(得分:1)
你的问题很模糊,但对于多用户情况,我认为这在这里得到了很好的回答:Single Table Inheritance (Database Inheritance design options) pros and cons and in which case it used?
我还建议您查看数据库规范化,请参阅:http://en.wikipedia.org/wiki/Database_normalization
不幸的是,如果没有更多信息,我不能推荐更多。
答案 1 :(得分:1)
如果我理解正确,你有一些前端吗?这3种类型的人不直接访问数据库(登录数据库服务器)。我认为您需要将用户和关联角色存储在您的用户表中,并根据登录用户角色,您的前端Web /桌面应用程序需要约束操作。当业务所有者需要分配角色时,他将从角色表中选择人员和角色并对其进行映射。
这就是我设想的方式, 带有ID,传递,地址等的UserTable, 具有RoleID,RoleDescription,RoleName等的RolesTable, UserTable - RoleTable映射表
登录时,您的前端需要验证登录详细信息并从userTable - RoleTable映射表中获取相关角色。
答案 2 :(得分:1)
我发现你的班级设计存在一些问题。它不是您在Business Class中保留BusinessOwner信息的正确方法。我建议您使用以下系统设计 -
Abstract Class BusinessPeople
Class BusinessOwner extends BusinessPeople
Class Assistant extends BusinessPeople
Class Staff extends BusinessPeople
在您的商务舱中,您可以保留业务的详细信息。您可以使用上面的类设计来设计数据库。创建一个表名称Staff,必须将staff_id作为主键。然后为BusinessOwner,Assistant ...其他利益相关者创建表,每个表都有一个名为staff_id的属性,这是表Staff的主键,在这些(BusinessOwner,Assistant等)表中作为外键使用。