2015-04-30 46 views
0

我有一個表foo。在foo中有4列:id,barTypeA,barTypeB,barTypeC。唯一的候選關鍵是idbarTypeAB,C都是非主要屬性。這些屬性在技術上不僅僅是一個列表;一個bar是A,B或C類型的事實並不是微不足道的。但是,barTypeABC可以爲空。一對一或一對多關係模式

我可以讓這個表分成三個表(例如foofooToBarbarType)從foofooToBar一個一對多的關係,但我很好奇,如果/原始設計如何違反了數據庫設計標準或正常形式。

+1

我認爲這很有趣 - 如果這不是抽象的,對於每個潛在的學生id,說一個150列的班級信息,你會很快看出爲什麼這是一個糟糕的設計。出於某種原因,因爲這隻有3個項目,你覺得你的設計是好的 – Hogan

+0

我的2美分:如果你的系統預計不會包含更多的棒類型,然後保持原來的設計。有這樣的東西過度規範化。 –

+1

我認爲@ZoharPeled是完全正確的,如果有東西被實現並且正在工作,那麼可能沒有理由去改變它 - 另一方面規範化規則和技術的存在是有原因的...... – Hogan

回答

0

如果您有多對多關係,通常您只需要一個連接表(fooToBar)。在一對一和一對多中,一個(foo)的ID由很多(bar)中的條目引用。

換句話說,如果bar中的每個條目只連接到一個foo條目,那麼bar應該只引用foo.id。但是,如果bar可以鏈接到幾個foo並且foo可以鏈接到幾個bar然後使用fooToBar連接表。

+0

雖然這是事實,但我不確定這是OP所問的。 –