簡體   English   中英

將相似實體存儲在同一表中,而不是數據庫中的多個表中

[英]Storing similar entities in the same table vs in multiple tables in the database

我們有2個實體在數據庫中表示:
-具有屬性(x,y,z,r)的實體A。
-具有屬性(x,y,z,s)的實體B。

2個實體具有3個相同的屬性,只有1個不同的屬性。 盡管它們非常相似,但它們並不相關,也不打算在業務邏輯中一起使用。

有兩種方法(可能更多)來代表這些方法:

  1. 創建兩個單獨的表,每個實體一個。
    這是簡單明了的方法。 它產生兩個相對較小的表,以及更整潔的查詢和業務邏輯。 但是這些表幾乎是相同的,因此在某種程度上顯然是多余的(想象一下,相同的屬性遠遠超過3個)。
  2. 創建一個具有5個屬性(x,y,z,r,s,類型)的共享表。
    (類型)指示此行中表示的實體的類型(A或B)。 這是假設屬性(r)和(s)不是強制性的,因此我們不能依靠它們來確定實體的類型。
    例如,這是Wordpress用來表示帖子和頁面(以及其他一些實體)的方法。 這將導致一個相對較大的表,其中包含許多字段以及相對混亂的查詢和業務邏輯,以過濾行並邏輯上分離實體。 但是,最后我們只有一個唯一的表,而不是兩個冗余的表。

我的問題是:

1-每種方法的其他優點和缺點是什么?

2-兩種方法的用例是什么?

3-如果實體數量增加,或者實體之間的關系復雜性增加,那么一種方法明顯優於另一種方法嗎? 就像如果不是2個實體,而是20個。或者這些實體與數據庫中的其他實體具有多對多關系。

謝謝!

2個實體具有3個相同的屬性,只有1個不同的屬性。 盡管它們非常相似, 但它們並不相關 ,也不打算在業務邏輯中一起使用。

如果沒有更多關於您的架構/模型的知識,我會說兩個實體是否具有相似的屬性,但在業務邏輯中“不相關”,我強烈要求采用方法1。我不知道每個實體有多少個屬性有多重要如果沒有關聯,則實體具有共同點。 僅僅由於相似的屬性,將不相關的數據放在同一張表中並不是好的數據庫設計。 有關模式的更多信息也可能有助於決策。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM