1

我對製作一個好的關係數據庫感到困惑。我正在使用phpmyAdmin來創建一個數據庫。我有以下四個表格。不要擔心這個事實,地點和價格是可選的,他們只是。使用phpmyAdmin(複合鍵)的數據庫關係

  1. 人(強制性)
  2. 項目(強制性)
  3. 廣場(可選)
  4. 價格(可選)

項目是主表。它會一直有人鏈接。 *我知道你會在表中加入mysql。 如果我想將表連接在一起,我可以使用組合鍵(使用每個表的ID),但是這是鏈接表的最正確方法嗎?這也意味着項目將有5個包括它自己的ID。這一切都導致空值(顯然是一個大的不,不,我可以理解),因爲如果地點和價格是可選的,並且不用於項目表的一個條目,那麼我將在那裏有一個空值。請幫忙!

在此先感謝。我希望這是有道理的。

回答

2

NULL值

這也意味着項目將有5個IDS包括它自己。這一切都導致空值(顯然是一個很大的不,不,我可以理解),因爲如果地方和價格是可選的,在一個條目的項目表中沒有使用我將有一個空值有

我個人認爲這是一種情況,其中NULL值是完美的,我當然不會有任何懷疑將它放入我的數據庫設計中。

有一種方法,我看到其他人實現同樣的事情沒有NULL價值觀是創建一個記錄在可選表(在您的示例中的地點和價格)ID爲0,表示沒有相關記錄 - 但這只是爲應用程序的開發人員進行10次以上的工作以過濾這些記錄 - 進行聯接更容易,並且如果您沒有取回任何記錄,則可選表中沒有相關記錄。

記得剛做了,如果你想返回ItemLEFTRIGHT OUTER的JOIN不管他們是否有PlacePrice相關的(你會得到可選表中的列NULL值沒有那個Item小號關聯記錄)和INNER加入如果您只有想要Item s 有一個關聯的可選記錄。

複合密鑰

複合鍵是在該得分由一個以上的列的表中的鍵。如果您的每個Person,Item,PlacePrice都有一個ID(即使它只是一個自動遞增的數字),您將不需要組合鍵 - 每個表中的主鍵列和外鍵列每個相關表的Item表 - 例如item_idperson_id,place_id, price_id。您聲明Item擁有自己的ID,因此您不需要組合鍵 - 只是item_id列中的主鍵。

+0

你會如何確保在INSERT上填寫正確的ID?例如,當我插入我沒有得到正確的ID爲其他表我需要用mysql語句做到這一點? – 2010-04-18 18:25:32

相關問題