我有很多涉及实体的关系:部门和范围。
1)部门。 (进口,出口)
2)范围。 (全国,国际)
1个部门可以与许多不同的范围相关。一个范围涉及许多部门。
到目前为止,我的多对多关系表将是这样的:
DepartmentId(外键)
ScopeId。 (外键)
每个部门/范围关系将具有完整配置,涉及文档类型和批次代码等。
(所以:
部门1 /范围1 /文件类型1
部门1 /范围1 /文件类型2
然后对于每种文档类型,将会有许多不同的代码:
部门1 /范围1 /文件类型1 /代码1
部门1 /范围1 /文件类型1 /代码2
部门1 /范围1 /文件类型2 /代码1
部门1 /范围1 /文件类型2 /代码2
所以我在考虑将多对多关系表(部门/范围)作为:
Id(自动增量)(主键)
DepartmentID的
ScopeId。
这个“Id”将是另一个表中的外键。
这可以,我正在做什么,还是我打破了一些最佳实践规则?
由于
更新1
我发现我将拥有许多不同的多对多关系表。
1)定义哪个范围与每个部门相关
标识
DepartmentID的
ScopeId
2)与每个部门内每个范围相关的文档类型。
Id(主键,自动增量)
DepartmentScopeId(外键,1)
DocumentTypeId(文档类型的外键)。
3)与每种文件类型相关的代码,属于某个部门的范围。
Id(主键,自动增量)。
CodeName(nvarchar(50))
DocumentTypeDepartmentScopeId(2的外键))。
我不确定我是否过度复杂化,或者这是否是数据库世界中的正常模式。
我想这样做之后我可以创建一个视图,这将有助于我访问数据,例如:按照每个部门,每个文档类型,每个部门返回所有代码“。
如果我能得到一些关于这是否是正确的解决方法的建议,那将会很棒。
由于
答案 0 :(得分:3)
我也认为这是最好的做法。您还可以在新表中添加有关关系的更多信息(例如,dateCreated,如果有意义的话)。此外,如果它至关重要,请不要忘记将这对(DeparmentId,ScopeId)设置为Unique,以避免重复分配。