高分求教:一个数据库设计问题,想的头都大了,请教大家!

时间:2022-12-11 18:54:42
表A
产品表
A
B
C
D
表B
生产单位表
AA
BB
CC
DD
单位产品表C
单位   产品
AA     A
AA     B
AA     C
BB     A
BB     B
...
目前的情况是
有的产品如:A,B,C是任何一个厂家都可以生产的(AA,BB,CC,DD可以,以后新添加的EE,FF...也都可以)
而有的产品如:D,E,F是指定某些厂家专门生产的
如果按我这种设计办法
每增加一个厂家,就要增加N条记录(N为所有通用品种总和)
每增加一个通用品种,就要增加M条记录(M为所有厂家总和)
在N,M值很大的时候,性能就很差了
请问我到底应该怎么设计呢???

10 个解决方案

#1


能不能这样:
表A
产品表
A
B
C
D
表B
生产单位表
AA
BB
CC
DD
单位产品表C
单位   产品
AA     A,B,C
BB     A,B
如果这样设计表结构,每增加一个厂家只增加一条记录,增加一个通用品种,不增加任何记录,只是修改相关的记录。

#2


可以對廠家 進行抽象一下

就是類似於模板了。。。

廠家  ->  廠家模板  ->  對應的系列通用產品(A,B,C)
                      -> 對應的特殊產品(X,Y,Z)

or

廠家 -> 對應的特殊產品(X,Y,Z) // 一般的都不用記了。

商品 -> 是特殊的?
-> 是: 更新相關
-> 否: 不需要。。

#3


ding!

#4


可以考虑把单位产品表拆为三个表 
C1 (类型表, 呵呵,我也不晓得怎么取名字好) 
( 编号, 类型, 单位)
   001, 通用,---通用的就不要单位了
   002, 特定, AA
   003, 特定, BB
)

C2 ( 单位表)
(编号, 单位)
001, AA
001, BB
002, AA
003, BB

C3 (产品表)
(编号, 产品)
001, A
001, B
001, C
001, D
002, A
002, A
003, B
003, B

这样,在增加 通用产品,或者单位的时候, 只需要在  C2, 和  C3 中增加一条记录就可以了, 最后用视图把这些关联起来,就行了

#5


谢谢各位
 beyondtkl(大龙驹<干掉小日本>) 
能说的详细一点吗??
不太看的明白
谢谢

#6


我现在有个办法
分两个产品表
一个是通用产品表TYB
一个是特殊产品表TSB
一个是单位产品表DWCPB
TYB
1 A
2 B
3 C

TSB
1 D
2 E
3 F

DWCPB
AA  D
BB  E
CC  F

特殊产品直接在DWCPB中查找
通用产品可以用DWB×TYB做第卡尔集来查找
各位意下如何?

#7


请问,你所说的通用产品是所有厂家都生产的吗?
现实中好像没有这样的情况哦
一般来说,厂家生产产品,这是个多对多的关系,不存在特殊规则的话,楼主所使用的3个表的方法是最具一般性,最灵活的。

楼主总结一下你要处理的关系里面有些什么特殊规则。比如,一个产品要么所以厂家都生产,要么只由一个厂家生产(只是比方,具体是什么情况只有楼主知道并且没有总结出来告诉我们)。

#8


也许我的情况说明不是很明白
我把情况再描述的具体一点
通用品种的意思是每个厂家都可以生产,如果生产就必须执行这个通用产品的通用生产规范
特殊产品的意思是只有特定的厂家可以生产,别的厂家不可以生产,生产也必须执行这个特殊产品特定的生产规范
我的要求是任何一个产品,提供名称和生产单位,能查到他是按照哪种生产规范生产的。
我想了很多办法,似乎把两种产品放在一个表中处理并不是很合适。
只好把通用品种和特殊品种分开处理,在特殊品种表中增加厂家代码。
请问有人遇到类似的情况吗?
求教了!!!

#9


“我的要求是任何一个产品,提供名称和生产单位,能查到他是按照哪种生产规范生产的。”
是这样吗?
产品名称和生产规范不是对应的吗? 同一个产品会有几种生产规范吗?

#10


会有的
名称相同的产品可能因为生产单位不同有不同的生产规范

#1


能不能这样:
表A
产品表
A
B
C
D
表B
生产单位表
AA
BB
CC
DD
单位产品表C
单位   产品
AA     A,B,C
BB     A,B
如果这样设计表结构,每增加一个厂家只增加一条记录,增加一个通用品种,不增加任何记录,只是修改相关的记录。

#2


可以對廠家 進行抽象一下

就是類似於模板了。。。

廠家  ->  廠家模板  ->  對應的系列通用產品(A,B,C)
                      -> 對應的特殊產品(X,Y,Z)

or

廠家 -> 對應的特殊產品(X,Y,Z) // 一般的都不用記了。

商品 -> 是特殊的?
-> 是: 更新相關
-> 否: 不需要。。

#3


ding!

#4


可以考虑把单位产品表拆为三个表 
C1 (类型表, 呵呵,我也不晓得怎么取名字好) 
( 编号, 类型, 单位)
   001, 通用,---通用的就不要单位了
   002, 特定, AA
   003, 特定, BB
)

C2 ( 单位表)
(编号, 单位)
001, AA
001, BB
002, AA
003, BB

C3 (产品表)
(编号, 产品)
001, A
001, B
001, C
001, D
002, A
002, A
003, B
003, B

这样,在增加 通用产品,或者单位的时候, 只需要在  C2, 和  C3 中增加一条记录就可以了, 最后用视图把这些关联起来,就行了

#5


谢谢各位
 beyondtkl(大龙驹<干掉小日本>) 
能说的详细一点吗??
不太看的明白
谢谢

#6


我现在有个办法
分两个产品表
一个是通用产品表TYB
一个是特殊产品表TSB
一个是单位产品表DWCPB
TYB
1 A
2 B
3 C

TSB
1 D
2 E
3 F

DWCPB
AA  D
BB  E
CC  F

特殊产品直接在DWCPB中查找
通用产品可以用DWB×TYB做第卡尔集来查找
各位意下如何?

#7


请问,你所说的通用产品是所有厂家都生产的吗?
现实中好像没有这样的情况哦
一般来说,厂家生产产品,这是个多对多的关系,不存在特殊规则的话,楼主所使用的3个表的方法是最具一般性,最灵活的。

楼主总结一下你要处理的关系里面有些什么特殊规则。比如,一个产品要么所以厂家都生产,要么只由一个厂家生产(只是比方,具体是什么情况只有楼主知道并且没有总结出来告诉我们)。

#8


也许我的情况说明不是很明白
我把情况再描述的具体一点
通用品种的意思是每个厂家都可以生产,如果生产就必须执行这个通用产品的通用生产规范
特殊产品的意思是只有特定的厂家可以生产,别的厂家不可以生产,生产也必须执行这个特殊产品特定的生产规范
我的要求是任何一个产品,提供名称和生产单位,能查到他是按照哪种生产规范生产的。
我想了很多办法,似乎把两种产品放在一个表中处理并不是很合适。
只好把通用品种和特殊品种分开处理,在特殊品种表中增加厂家代码。
请问有人遇到类似的情况吗?
求教了!!!

#9


“我的要求是任何一个产品,提供名称和生产单位,能查到他是按照哪种生产规范生产的。”
是这样吗?
产品名称和生产规范不是对应的吗? 同一个产品会有几种生产规范吗?

#10


会有的
名称相同的产品可能因为生产单位不同有不同的生产规范