Ann*_*son 5 mysql database sql-server oracle database-design
我不确定什么是强制参与以下数据库设计的最佳方式(可以是SQL服务器,Oracle,mySQL等).我有两张桌子:工厂和工人.我为设计制定了两个规则:1)每个工厂雇用至少一个(或许多)工人.2)每个工人只为一个工厂工作.
我为设计创建了一个ERD:
[工厂] - || ---雇用--- | < - [工人]
FACTORY表如下所示:
1 A
2 B
3 C.
WORKER表如下所示:
1 Tom 2
2 Ann 1
3月1日
在worker表中,Factory_ID是外键(FK)并且它被设置为NOT NULL,因为(ERD表示)每个工作者必须为一个工厂工作而且只能工作一个工厂.可以通过将FK(Worker表中的Factory_ID字段)设置为非null来强制执行此参与.
这是我的问题,强制参与的最佳方式是什么 - 每个工厂雇用至少一名工人?即我需要确保每个factory_id必须至少在worker表中引用一次.因此,现在#3工厂不雇用任何违反ERD参与规则的人.
我想知道实施这种参与的最佳方式是什么?
关系的1+约束通常在应用层实现.
问题在于有一个时间概念可以预测:有了这种限制,你需要一个工人为你的工厂,但你的工人自己需要一个工厂:这根本不可能实现这个规则同步.
解决方案可以是管理一种后台,以单独添加元素(用于管理目的),然后在公共前端实施适当的限制以匹配您的1+要求.例如:
归档时间: |
|
查看次数: |
1318 次 |
最近记录: |