Lou*_*hys 5 .net database nhibernate database-design hibernate
我们系统中的一个进程负责根据某些规则发送文件.根据文件名,可以将文件发送给客户或工厂(但不能同时发送).
规则的每一行都将包含文件名过滤器,它所属的客户和工厂,并指定其他参数,例如目标文件夹,文件是否需要加密,拆分,组合,重命名等.
在此过程中,我们将了解文件所属的工厂和客户,我们将查看工厂和客户的规则,并应用与过滤器匹配的文件规则(将优先考虑客户规则)
表示规则与数据库中客户/工厂之间关系的最佳方式是什么?我们已经在数据库中有Customer和Factory表,但我想不出表示关系的最佳方式.每条规则都只有一个FK(客户或工厂,它不能同时拥有两个,也不能没有).表示这一点的方法之一是:
但这并不能说明它只能拥有两个FK中的一个.我们可以设置一个约束,其中一个需要有效FK而另一个必须是空的,但它似乎不是很干净.此外,如果我们有其他规则的决定因素(例如国家),它将变得更加丑陋.知道如何改进这种设计吗?
我认为这也有助于指定系统是用.NET开发的,我们使用对象关系映射,即NHibernate.
看一下表继承.
你可以使用这样的东西:
Rule
int RuleId
int TypeRule
PK (RuleId)
UQ (RuleId, TypeRule)
CustomerRule
int TypeRule = 1
int CustomerId
FK (TypeRule, RuleId)
FK CustomerId
FactoryRule
int TypeRule = 2
int FactoryId
FK (TypeRule, RuleId)
FK FactoryId
Run Code Online (Sandbox Code Playgroud)
使用这样的系统,您可以拥有客户规则或工厂规则,而不是两者.此外,明天添加CountryRule很容易.
归档时间: |
|
查看次数: |
226 次 |
最近记录: |