我很容易陷入简单的建模/设计过程中。你会如何设计以下型号?我正在使用Entity Framework 5 / Model First。
我现在正在设计奇怪的三元类,例如“UserLocationCompany”,它与每个实体都有1-n关系(在DB中设计表时你会做什么),以及像“User.CurrentCompany”这样的属性最终有公司实体的死胡同。这种问题的正确方法是什么?
答案 0 :(得分:0)
你比我更了解这是否适合你的情况,但是你能否将位置作为角色的属性?因此,角色将链接到位置或者一个角色可以有许多位置。
无论哪种方式,通过使用现有连接添加更多数据,这将阻止您重复链接公司和用户的工作。
希望这对你有用:)
答案 1 :(得分:0)
'你将如何设计以下模型' - 从提供的信息来看,这是我的思考过程。
Company --< CompanyLocation >-- Location
"CompanyLocation"
PK CompanyLocationId
FK CompanyId
FK LocationId
我猜测不止一家公司可以共享一个位置,所以这个关系表使这成为可能。
User --< UserCompanyLocation >-- CompanyLocation
"UserCompanyLocation"
PK UserCompanyLocationId
FK UserId
FK CompanyLocationId
Primary
此表将用户与位置中的公司相关联 - 并允许用户设置它是否是他的主要位置。
Company --< CompanyRole >-- Role
"CompanyRole"
PK CompanyRoleId
FK CompanyId
FK RoleId
此表显示哪些公司包含哪些角色。
User --< UserCompanyRole >-- CompanyRole
"UserCompanyRole"
PK UserCompanyRoleId
FK UserId
FK CompanyRoleId
现在可以将用户分配到公司中的特定角色。如果您希望用户能够分配主要角色,您还可以添加“主要”列。
这有帮助吗?
编辑:
另一个选项是删除UserCompanyRole和UserCompanyLocation表,并将它们合并到一个UserCompanyRoleLocation表中。这样做有好处和坏处;它会导致每个角色的重复位置行,反之亦然 - 但它会使连接和查询更容易。
User --< UserCompanyRoleLocation >-- CompanyRole
User --< UserCompanyRoleLocation >-- CompanyLocation
"UserCompanyRoleLocation"
PK UserCompanyRoleLocation
FK User
FK CompanyRole
FK CompanyLocation
Primary