Oracle:FK在多个父表中引用PK

mus*_*had 3 sql oracle referential-integrity foreign-key-relationship

在Oracle 10g中,是否可以为外键定义引用完整性约束以引用多个父表中的主键.

例如:

DEPT_AMER

DEPT_ID
10
11
12

DEPT_APAC

DEPT_ID
13
14
15

DEPT_EMEA

DEPT_ID
16
17
18

EMP

EMP_ID DEPT_ID
500 11
501 15

我希望EMP.DEPT_ID能够引用DEPT_AMER,DEPT_APAC和DEPT_AMER中的某个部门ID.有没有办法定义参照完整性来满足这种需求.所有3个表中的DEPT_ID都是从一个公共序列生成的,并保证是唯一的.

如果无法使用引用完整性约束,是否有更好的方法来维护此数据完整性?

drn*_*rnk 6

您在三个不同的表中有一个实体.最好的方法是使用新字段DEPT_TYPE(AMER或EMEA或APAC)将DEPT_AMER + DEPT_EMEA + DEPT_APAC加入到名为DEPT的一个表中.它对功能支持和性能更好.

如果新部门在南极开放,你会怎么做?添加另一个表?没有!你只需添加另一个dept_type.

  • 实际上,南极洲的一个部门正是我向那些提出具有多个父表的数据模型的人发送的地方. (6认同)

小智 6

如果所有表中的字段都相同,那么我建议将此模型折射为单表并为遗留应用程序创建视图.有时,此设计用于分区,但Oracle会自动维护分区,并且应用程序级别分区是多余的.