2017-10-14 135 views
1

我正在設計一個邏輯層上的數據庫,稍後傳遞給程序員來交付。我只是表面上很熟悉他們的工作方式,所以我很努力地說出我的問題。這是我的問題:數據庫結構:具有更多列或關係表到關係表的關係表?

我有一個名爲MEANINGS的表。

我有一個名爲WORDS的表。

我有名爲M到W的關係表。

我有一個名爲GRAMMAR的表。

可以有多個含義含義可以有多個詞語。但我也想添加語法。我可以在單詞中添加一行,但有時候一個單詞的表現會有所不同,具體取決於意義(比如過去式是「他上吊自殺」,「他在牆上掛了一張照片」)。因此,我看到一個邏輯電平兩種解決方案:

  1. 語法可以與M-到-W關係錶鏈接與其他關係表,引用整個關係(某些詞的含義某些指定的形式)。
  2. GRAMMAR項目可以通過M-to-W在附加行中引用。

我只用Django/MariaDB(幾乎自動)創建了關係數據庫,所以我不知道它們是否可以有兩列以上。我不知道是否可以引用成對的屬性。

這些解決方案中的任何一種都有可能嗎?還是有更好的做法來處理這種結構性問題?使用組合鍵更容易嗎?請假設在單獨的表格中保留單詞和含義是必要的。

+1

寧可調用'M-to-W'關係表而不是關係表。如果您有一階邏輯模型,則您的所有表都是關係表。把關係看作表的同義詞,但是有一些額外的規則,比如沒有重複的行/列和行/列的順序無關緊要。 – reaanb

+0

好的,謝謝,不知道! – MrVocabulary

+1

在關係模型中,關係(表格)表示n元關係(船舶)。您需要閱讀關於信息建模,關係模型和數據庫設計的一些書。 [這裏有一些我可以認可的。](https:// stackoverflow。com/a/24007275/3404097)關於你是否能夠或應該用其他人取代三元關係(船),屬於「依賴理論」,涉及「歸一化到更高的NFs(正常形式)」。 – philipxy

回答

2

之前定義模式,決定你有什麼數據,以及如何將它放入數據庫。

決定你想要的數據庫。

給程序員提供的信息,不是表的規格。讓他們找出架構模式的最佳方式。

如果它們都沒有任何數據庫背景,那麼就有一條學習曲線。這個論壇的答案只會幫助你解決一個又一個的問題。請花時間讓至少一名程序員接受培訓。

+1

感謝您的建議。我知道我有什麼數據,以及它會如何放在那裏。但我還沒有任何程序員,我正在準備一個規範。這個問題的解決方案是否確實如此依賴於特定的情況? – MrVocabulary

+2

它可能會更好地擁有一個表的一切,而不是一個3頭多對多映射表。沒有嘗試就說不清。 (我不知道Django是否有限制。) –

+0

Django並不是一個絕對的給定,但是雖然單詞和語法可以合併,但意義必須分開。 – MrVocabulary