求一个数据库的组织结构

2024-11-22 21:45:30
推荐回答(2个)
回答1:

照理Project应该是父表,而Record是子表,那就应该在Record表中有ProjectID,而不是Project中有RecordID.
我建议是基本的两个表(标准的一对多的做法):

《Project》
[ProjectID] <-主健
[ProjectDate] 项目立项日期
[ResponsiblePerson] 项目住负责人
[。。。] 其他的归到Project的属性

《Record》
[RecordID] <-主健
[ProjectID] 关联到Project表(多对一)
[RecordType] 类别(方便筛选)
[。。。] 其他归到Record的属性

但你说的:“每一个记录可能属于不同的项目”,是否指一个Record同事属于几个不同Project? 如果是的话,就变成[多对多]了,这样子就要弄多一个专门把Project和Record关联起来的第三个表了。

-----------------------------------
如果是多对多,Project表不变,Record表的ProjectID就不用了,第三个表可以是如下做法:
[ProjectID] 关联到Project表(多对一)
[RecordID] 关联到Record表(多对一)
[Allocation]这个就得看多对多的真实关系性质了,譬如说,要把一个Record的成本分摊到不同的Project的话,Allocation就可以是分摊比例了,但多对多的复杂性不在于电脑代码怎么写,而是要分析实际业务的数据关系。

回答2:

还是你自己的方法一好一些,

第一项目表的话满足范式

项目id作为记录表的外键存在