我有一個ai_order
表。RDBMS,外鍵合併還是單獨表?
CREATE TABLE `ai_order`(
`id` INT(11) NOT NULL AUTO_INCREMENT,
`product_id` INT(11) NOT NULL,
`quantity` INT(11) NOT NULL,
`number` VARCHAR(20) NOT NULL,
`addDate` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `orderProduct`(`product_id`,`number`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
作爲來自客戶端的順序包含了許多產物與量,這意味着被插入單個順序多行,例如一個訂單包含一個50產物被導致產生的50行中ai_order
表。現在爲了確定一個單獨的訂單,我給出了一個數字字段,它將保存一個訂單的唯一訂單號(序列號),即它將number
字段組成order_id
。下面是演示數據將如何存儲在表格中的表格。
會有將從該父表中可以延長許多表。而一切都是正確的我看到的問題是number
列重複的價值一次又一次,考慮我有200
產品列出的一個訂單,我將不得不重複number
列值一次又一次在所有200
行,這給了我一些難看的感覺。
現在解決這個危機的方法是將訂單number
存儲在不同的表中(儘管重複不能避免,但不是問題)。例如,如何從ai_order
表中刪除number
列並以這種方式進行存儲。
CREATE TABLE `ai_order_number`(
`order_id` INT(11) NOT NULL,
`number` VARCHAR(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我想你的承擔如何處理這種做法?哪一個你會去。第一個還是後一個?任何改善建議將不勝感激。
謝謝。
我會堅持自己的第一選擇。這似乎對我來說是正確的,你必須在另一個例子中保留第二個表格,這看起來像是在殺死。 –
這確實有道理:) –
只是另一個問題,是數字字段外鍵到另一個訂單表?這是我實現它的方式,並且表ai_order僅僅是產品和訂單之間的多對多表。 –