大家来谈谈主表,明细表的关系问题

时间:2022-03-08 21:39:30
我接到一个数据库设计,三张主表对应一个明细表。我总感觉到怪怪的。虽然看起来没什错误。我想请高手分析一下,主表明细表一定是要一对一,还是可以一对多,多对一。会出现什么问题。

9 个解决方案

#1


一个主表,一个明细表;
一个主表,多个明细表;
两个主表,一个明细表,这时这个明细表可以看成是两个主表的关联表;

#2


一个主表,一个明细表;
一个主表,多个明细表;
多个主表,一个明细表,这时这个明细表可以看成是几个主表的关联表;

#3


一般是一对多。

#4


能不能分析一下,其中可能出现的问题,或设计理由。我觉得一对一应该是没问题的。
高指教

#5


恒定的一对一应该不属于主子表。
一对多属正常的主子表,一般是聚集的分解。
多对一中的“一”一般是代表关系实体的表。

#6


我说的多对一是指,多张主表对应一张明细表。并不是多个记录对应一个记录。
如明细表d(a,b,c,d,e,f)
主表m1(a,am),m2(b,bm),m3(c,cm)
m1与d组成主表明细表,m2与d组成主表明细表,m3与d组成主表明细表。
如果这样设计数据库。不知好不好,请高手分析利弊。
如果这样设计:
明细表m1(a...),m2(b...),m3(c...)
主表不变,又怎么样

#7


一般是一对多。

#8


主,明细表之间有关系与主表和明细表的数量没有关系,
有关系的只是主表的主键是明细表的外键,是记录的关系。
如你所说:
如明细表d(a,b,c,d,e,f)
主表m1(a,am),m2(b,bm),m3(c,cm)
看起来是没有问题的,但也要具体分析。如果此时是 (a,b,c,d,e,f) 具有UNIQUE 属性,
则完全正确。
但如出现(a ...(a的关联信息),B ...(B的关联信息),...)这样的情况,
且(a,b,c,d,e,f)不具备UNIQUE 属性。
一定是有问题的,太过冗余嘛。真是这样的话,
就按你所说的方案设计
明细表d1(a...),d2(b...),d3(c...)
分开后,不可忽略d1,d2,d3之间的关系。

总而言之,表的设计不是一蹴而就的,必多方考虑,而且要守范式,
如果借助工具的话,效果会明显的,如使用 ROSE,PowerDesign等。

#9


如明细表d(a,b,c,d,e,f)
主表m1(a,am),m2(b,bm),m3(c,cm)

你所说的这种表是不是如下类似
m1:零配件号码及其描述
m2:仓库号码及其地址
m3:......
d: 库存表,包括仓库号码,零配件号码....等等

#1


一个主表,一个明细表;
一个主表,多个明细表;
两个主表,一个明细表,这时这个明细表可以看成是两个主表的关联表;

#2


一个主表,一个明细表;
一个主表,多个明细表;
多个主表,一个明细表,这时这个明细表可以看成是几个主表的关联表;

#3


一般是一对多。

#4


能不能分析一下,其中可能出现的问题,或设计理由。我觉得一对一应该是没问题的。
高指教

#5


恒定的一对一应该不属于主子表。
一对多属正常的主子表,一般是聚集的分解。
多对一中的“一”一般是代表关系实体的表。

#6


我说的多对一是指,多张主表对应一张明细表。并不是多个记录对应一个记录。
如明细表d(a,b,c,d,e,f)
主表m1(a,am),m2(b,bm),m3(c,cm)
m1与d组成主表明细表,m2与d组成主表明细表,m3与d组成主表明细表。
如果这样设计数据库。不知好不好,请高手分析利弊。
如果这样设计:
明细表m1(a...),m2(b...),m3(c...)
主表不变,又怎么样

#7


一般是一对多。

#8


主,明细表之间有关系与主表和明细表的数量没有关系,
有关系的只是主表的主键是明细表的外键,是记录的关系。
如你所说:
如明细表d(a,b,c,d,e,f)
主表m1(a,am),m2(b,bm),m3(c,cm)
看起来是没有问题的,但也要具体分析。如果此时是 (a,b,c,d,e,f) 具有UNIQUE 属性,
则完全正确。
但如出现(a ...(a的关联信息),B ...(B的关联信息),...)这样的情况,
且(a,b,c,d,e,f)不具备UNIQUE 属性。
一定是有问题的,太过冗余嘛。真是这样的话,
就按你所说的方案设计
明细表d1(a...),d2(b...),d3(c...)
分开后,不可忽略d1,d2,d3之间的关系。

总而言之,表的设计不是一蹴而就的,必多方考虑,而且要守范式,
如果借助工具的话,效果会明显的,如使用 ROSE,PowerDesign等。

#9


如明细表d(a,b,c,d,e,f)
主表m1(a,am),m2(b,bm),m3(c,cm)

你所说的这种表是不是如下类似
m1:零配件号码及其描述
m2:仓库号码及其地址
m3:......
d: 库存表,包括仓库号码,零配件号码....等等