我想在表格中设计以下关系:
PARTNO OEMNO
--------------
AA1001 12345
AA1001 67890
AA1002 45678
BB1001 12345
BB1002 12345
PARTNO
和OEMNO
之间存在不规则关系。
问题:我真的很困惑如何在它们之间创建表格和关系,以便我可以选择
答案 0 :(得分:2)
每当你有多对多的关系时,你需要一个中间表来分解关系。这种表有许多不同的名称:例如“关联”,“桥接”,“交汇点”,“链接”。像这样:
create table parts_oems (
partno varchar (10) not null,
oemno varchar (10) not null,
constraint pk_parts_oems primary key (partno, oemno)
)
然后你将你的桌子加入任何一个部分,或者加入oems,以确定哪一个与另一个相关: -
select p.partno, count (po.partno) as oemcount
from
parts p
inner join parts_oems po on p.partno = po.partno
group by p.partno
要确定哪些oems与partno AA1001相关联,你会写: -
select p.partno, o.oemno, o.some_other_columns
from
parts p
inner join parts_oems po on p.partno = po.partno
inner join oems o on o.oemno = po.oemno
where p.partno = 'AA1001'
答案 1 :(得分:2)
您需要建立关系表。
+------+ +-----+
| PART | | OEM |
+------+ +-----+
\ /
+----------+
| PART_OEM |
+----------+
PART
需要一个主键,例如PART_ID
OEM
需要小学一年级
密钥,例如OEM_ID
PART_OEM
有两个FOREIGN KEY
限制,
一个指向PART.PART_ID
,另一个指向OEM.OEM_ID