2015-11-03 36 views
-1

我有一個表讓我們把它稱爲MainTable,這個表的每一行都有幾個公共字段,但是取決於我們說的field1的值,那麼行可以有例如,如果field1是1,那麼最多存儲一個field2和field3的行,並且如果field1是2,則最多存儲field4和field5的行,並且即使在類型中,field2/field3也不同於field4/field5,請一些幫助,我需要一個解決方案來設計數據庫與這種條件下,我不知道如果把所有的字段在MainTable中或爲額外的數據創建不同的表,字段1的值posibles是30.sql數據庫 - 表中的每一行在不同表格中有額外的數據

+0

你能不能包括數據的例子?我無法想象您的需求。 –

回答

2

您需要了解Database_normalization

你所問的是包括某些行,而不是信息每一行,所以你會有很多列與當前設計的空值。

你要做的是使用外鍵創建附加表和鏈接。

想象一下,你有一個表Cars與領域

car_id, color, size, num_wheels 

但有些車的娛樂和驅動車輛有aditional的性質。因此,而不是在你的Cars表中添加aditional的列創建另一個表RV_cars

car_id, bathroom_size, num_bed, bol_tv 

所以,如果你想獲得一個RV車的所有信息,你做

SELECT C.*, R.* 
FROM Cars C 
join RV_cars R 
    ON C.car_id = R.car_id 
+0

好吧,我明白了,這就是爲什麼我問,看看什麼更好,空字段或額外的表,每個表的car_id是相同的?如果這是解決方案,那麼我需要有30個額外的表,如RV_cars,是嗎?即使是關於所有車輛的未來諮詢或報告。 –

+0

關於car_id字段的問題我的意思是如果car_id是第二張表的主鍵或者只是一個外鍵,感謝您的幫助。 –

+0

對於這種情況'RV_car'既可以是'PK'也可以是'FK',但最好的做法是有一個不同的PK,比如'RV_car_id',以備日後在其他表上使用。是的,如果您創建了附加表來存儲相關信息。例如,你可以用'tire_id,width,radio,material'爲輪胎添加另一個表格,並將'tire_id'保存到'cars'表格 –

0

嘗試使用noSQL數據存儲。如果我明白你 - 你會有大約15對不同的領域,所以關係數據庫不適合你。或u需要在主表中創建16個表(1主,15 extra數據),並保持鍵

相關問題