一个属性可不可以是多张表的主码

正在做一个建筑企业信息管理系统。系统里的工程模板中有很多关联的东西。一个工程要有多个材料供应商,分包商,监理部门;一个工程应该还有有一个成本预算,一个甲供;一个工程还对应着多张采购表,工程进度表等表。关系很多,然后我想设置一个工程号。对于一对一的关系,建立一个工程信息表如下:
create table Project
(
ProjectNum Char(6) primary key,--工程号
FinishQualityNum Char(6), --竣工号
CostNum Char(6), --成本号
ByOwnerNum Char(6), --甲供号
foreign key (FinishQualityNum) references FinishQuality(FinishQualityNum),--参照竣工表的主码
foreign key (CostNum) references Cost(CostNum),--参照成本表的主码
foreign key (ByOwnerNum) references ByOwner(ByOwnerNum),--参照甲供表的主码
)
通过不同的号码到处不同的表。


对于一对多的关系
--监理部门-工程表
create table SupervisionProject
(
SupervisionNum Char(6),--监理部门号
ProjectNum Char(30),--工程号
primary key (SupervisionNum,ProjectNum),
foreign key (SupervisionNum) references Supervision(SupervisionNum),--参照工监理部门表主码
foreign key (ProjectNum) references Project(ProjectNum),--参照工程表主码
)

不知道这样写是不是合理的?因为这样写关系的话下面有很多东西都要引用工程表的主码,造成参照关系很多的结果。不建立工程表,直接在不同的表用ProjectNum这个属性是不是比较好的?请大家指教下~

作者: L11168032   发布时间: 2011-06-13

一个属性用于多张表的主码时,这些表必须都是一对一关系.

作者: qianjin036a   发布时间: 2011-06-13

很不好。灰常不好。

作者: zy112429   发布时间: 2011-06-13

没什么太大的问题,也可以考虑最重要的关系使用主外键,其他一般的关系和关联使用程序控制

作者: cd731107   发布时间: 2011-06-13

引用 2 楼 zy112429 的回复:
很不好。灰常不好。


能告诉我比较好的方法么?

作者: L11168032   发布时间: 2011-06-13