我正在處理用戶在不同時間輸入各種數據的數據庫。將空值用作未來數據的佔位符是否是一種好的做法?
目前我有三個表之間的多對多關係。
tblDog:ID,名稱 tblOwner:ID,名稱 tblVet:ID,名稱
tblDog_Owner_Vet:ID,Dog_id,Owner_id,Vet_id
在一個完美的世界裏一個人必須在一個所有信息將所有這三個實體連接在一起的時間,但用戶現在可能會有一些信息,然後再多一些。因此,我讓他們進入它,他們得到的信息,所以條目可能看起來像下面。據我所知,通常一隻狗將只能有一個業主/獸醫,但對於這個問題的緣故,請考慮它可能是一隻狗可以有一個以上的所有者和獸醫:
- 1,1,1,1
- 2,2,2,空
- 3,2,空,3
然後,他們可以稍後再回去,要麼添加缺少的信息或合併該轉出相關兩行。
這是可以做或所有這些空值的問題?是否有另一個解決方案,我可能會失蹤?
謝謝丹。快速提問。爲了保護外鍵約束,我看到擺脫「空」的好處,但是在「真/假」指示中有什麼好處。難道我不能僅僅用新的Vet的id在那個記錄中寫下「none」_id嗎?再次,我可能會錯過一些很好的信息,所以任何幫助表示讚賞! – dwags
外鍵可以是NULL。它只是一個表的主鍵,不能包含任何可爲空的列。我不認爲這是一個問題。 – eggyal
在我看來'tblDog_Owner_Vet.id'是PK。爲什麼你要堅持一個複合PK,它會提出非空要求,這會使OP的填充目標複雜化。 'vet_id'以後? – eggyal