簡體   English   中英

在一個表和兩個表中代表主題和表?

[英]representing topics and tables in one table vs. two tables?

我目前正在為更大的應用程序構建一個論壇組件,並且正在考慮對數據庫架構的某些部分采用不同的方法。 特別是,我正在考慮在一個表中表示主題和帖子。 盡管我認為主題和帖子實際上是相同的,但我感到有些擔憂,因為這可能會使將來的事情變得不太靈活。

當查詢特定論壇的主題時,將顯示標題和第一篇文章以及一些用戶信息(基本上是名稱和頭像)。 在此應用程序中,除了視圖和答復外,主題和帖子都使用各種屬性。 以及標題和forum_id(forum_id,因為這意味着如果將主題更改為另一個論壇而不是更改主題關系中的forum_id屬性,則可能需要影響數百條記錄)。

這些表看起來像我在下面的內容:

TOPIC            POST           
topic_id         poster_id   
forum_id         topic_id 
poster_id        content 
title            upvote
views            dnvote
replies          closed
post_id          deleted
                 last_edited
                 last_editor
                 parent_id
                 content
                 post_id

以這種方式,使用表繼承,在主題中生成帖子,將需要通過TOPIC,POST,USER和TOPIC_TYPE進行4表聯接。

另一方面,如果我決定采用單表方法,那么如果topic_type是常規帖子,我是否應該僅將視圖,答復,標題和forum_id屬性保留為null? (topic_type為顯示的主題類型引用一個適當的圖標,並將用於統計信息等)

如果您絕對致力於使用關系技術(我也會考慮使用NoSQL db,例如Mongo等),那么我將按照您的建議將其分為兩個表。

這里的案例是關系型主從設計或整個部分的基礎,我認為有兩個表是合適的。

我認為在這種情況下,最好使用簡單規范化。 生成不同類型的報告也將很有用。 盡管可以使用單個表,但是如您在設計表時所用的那樣,如果您使用兩個表,則可以更好地避免多次輸入相同的值。

可能有必要在“主題”和“主題啟動器”之間進行區分。 “主題啟動器”是評論,不是答復。 每個主題只有一個主題啟動器,可以由主題表中的外鍵引用。

除此之外,我同意您的分析和設計。

暫無
暫無

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

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