2013-04-21 32 views
0

爲可能具有多個值的特定字段的記錄設計表格模式的最佳方式是什麼?具有多個值的字段的SQL記錄

例如,一個文檔可以有多個相關的概念。每個文檔也可以有不同數量的概念。我試圖設計一個表,每個記錄都是一個文檔及其元數據,但是我在概念領域遇到了問題。我應該把所有的概念都放到一個叫'概念'的領域嗎?或者爲概念1,概念2等創建不同的領域。問題在於我不知道每個文檔可以具有多少個概念。我試圖用SQL關係數據庫來設計,儘管我知道有些面向對象的數據庫可能更適合我的問題。

回答

2

我應該把所有的概念放到一個名爲'Concepts'的字段嗎?

不會。這會違反atomicity的原則,因此也是1NF的原則,並會導致執行完整性和查詢時出現問題。

或爲概念1,概念2創建不同的領域,等等

只有如果您對每個文檔概念號一個明確的限制,你知道會不會有變化在將來。但你說你「不知道每個文件可以有多少個概念」

什麼是最好的方式來設計您的表模式的記錄,可能有一個特定的字段的多個值?

取決於是否可以在不同的文檔之間共享相同的概念。

  • 如果沒有,那麼這是一個一對多的關係,可以表示與此類似:

    enter image description here

  • 如果,那麼這是一個多對多關係,即需要額外的「聯結」(aka。「link」)表格,類似於此:

    enter image description here

+0

耶,謝謝你的照片。 – rottentomato56 2013-04-22 21:18:52

1

這取決於什麼是'概念'在這裏。這是否意味着什麼?有什麼和它有關的嗎?
如果一個字段的值本身是有意義的,我會堅持一個字段和'枚舉'的值。
如果每個'概念'都可以有其他屬性,那麼最好考慮在這兩個表之間放置一個'概念'表和一個多對多的關係。 我希望它可以幫助你。

1

如果這些概念很重要,那麼你應該有一個concepts表。這將是一個參考表,其中有一個conceptId以及關於這個概念的信息。

然後,你可以有一個表DocumentConcepts。這會對領域,如:

  • DocumentConceptId(此表的唯一ID)
  • DecumentId
  • ConceptId

它可能有其他的信息,以及,如優先級(其是第一個?這是第二個?),當這個概念被添加到文檔中時,以及其他這樣的信息。

+0

謝謝!順便說一句,我真的有你的書,以爲我認出你的名字從某個地方.... – rottentomato56 2013-04-22 21:21:30

相關問題