2017-08-08 23 views
2

之間不規則的關係我想設計一個表如下關係:如何設計一個表格時,有場

PARTNO OEMNO 
--------------  
AA1001 12345 
AA1001 67890 
AA1002 45678 
BB1001 12345 
BB1002 12345 

PARTNOOEMNO之間的不規則關係。

  • PARTNO(AA1001)可以具有多於一個的OEMNO(12345,67890)
  • REPLACEMENT PARTNO PARTNO(AA1001)的(AA1002)可以具有不同的OEMNO(45678,12345和67890)
  • REPLACEMENT PARTNO PARTNO的(BB1002)(BB1001)可能有同樣的OEMNO(12345)
  • OEMNO(12345)可能有不止一個PARTNO(AA1001,BB1001,BB1002)

問:我真的CONF使用如何在它們之間創建表和關係,這樣我可以選擇

  • 所有和OEMNO特定PARTNO
  • 所有PARTNO特定OEMNO

回答

2

只要你有一個多一對多的關係你將需要一箇中間表來分解關係。這種桌子有許多不同的名字:例如「關聯」,「橋接」,「連接」,「連接」。事情是這樣的:

create table parts_oems (
partno varchar (10) not null, 
oemno varchar (10) not null, 
constraint pk_parts_oems primary key (partno, oemno) 
) 

然後你加入你的表,無論是零件,或原始設備製造商,以確定將其各自與其他相關: -

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 

,並確定哪些OEM廠商相關用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' 
2

你需要建立一個關係表。

+------+ +-----+ 
| PART | | OEM | 
+------+ +-----+ 
    \  /
    +----------+ 
    | PART_OEM | 
    +----------+ 
  • PART需要主鍵如PART_ID
  • OEM需要主 鍵如OEM_ID
  • PART_OEM具有兩個FOREIGN KEY約束, 一個指向PART.PART_ID和其他指向OEM.OEM_ID