簡體   English   中英

db design:兩個“一對多”的關系?

[英]db design: Two “1 to many” relationship?

就我而言

 TABLE vehicles (
   id int(11) NOT NULL AUTO_INCREMENT,
   transaction_type varchar(45),
   PRIMARY KEY (`id`)
   /* all other values of vehicle */
 ) 


 TABLE Origination(
   id int(11) NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`)
 ) 

 TABLE Additions(
   id int(11) NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`)
 ) 

所以我有這個新的Vehicles表,它源自Origination或Additions。 它可以來自兩個表的原因是業務需求,它要么是起源的起點,要么是事實之后的特殊加法。 我不確定如何將“車輛”關系連接到兩個表,因為ID可能來自任何一個。

所以我添加了一個transaction_type字段,如果type為“ Additions”,則基於Additions Id加入表。 否則,如果類型為“ origination”,則在原始ID上聯接。 因此,我有兩個“ 1對多”的關鍵關系。 這是有效且有用的設計實踐嗎? 我不是數據庫人,但是嘗試學習如何處理這是最好的方法。

據我了解,您想要一個包含所有車輛的主表和兩個向這些車輛添加不同數據的單獨表。 這就是我的工作方式。 如果您更具體地了解每個表的內容,我將為您提供更多幫助。

TABLE Vehicle (
    id int(11) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
    /* all other values of vehicle */
) 

TABLE Origination (
    id int(11) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
) 

TABLE Addition (
    id int(11) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
) 

TABLE Vehicle_Origination (
    origination_id int(11),
    vehicle_id int(11),
    FOREIGN KEY (origination_id) REFERENCES Origination (id),
    FOREIGN KEY (vehicle_id) REFERENCES Vehicle (id)
) 

TABLE Vehicle_Addition (
    addition_id int(11),
    vehicle_id int(11),
    FOREIGN KEY (addition_id) REFERENCES Addition (id),
    FOREIGN KEY (vehicle_id) REFERENCES Vehicle (id)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM