簡體   English   中英

需要有關數據庫表關系的幫助!

[英]need help with database table relationships!

我正在嘗試建立一個與此網站有點相似的網站。 基本上我已經建立了四個表:

  1. 用戶數
  2. 線程數
  3. 評論
  4. 主題

建立關系的方式:

用戶有很多評論。
用戶有很多線程。
每個線程都有自己的主題,主題,子主題(主題表,我基本上將其用作標簽)。

數據庫的工作方式:
我想在我的代碼中的各個階段中使用sql命令INSERT INTO() 。.但是通常這里是說明:
用戶注冊時,將設置:ID,名稱,通行證,電子郵件。 (插入用戶表)
當他提交問題時,將設置ThreadID,將問題標題和段落插入線程表(Thread table)。
所有線程都按日期在頁面上生成(我在線程表中放了一個特殊字段)。
注釋表充當線程工作的方式,但是它也有一個注釋響應字段。

這是布局:

用戶數

UserID (primarty key: Linked to comments and threads).
Login
Password
Email

線程數

ThreadID (primary key: linked to Comments Table)
UserID
TopicsID
Comments
Date
ThreadTitle
ThreadParagraph(question details)

評論

CommentsID (primary key: didnt link it to any other field in any other table)
UsersID
ThreadsID
Date
Comments
CommentResponse

主題

TopicsID (primary key: linked to Threads table)
Theme
Topic
Subtopic

設計背后的想法:
每個用戶都有許多可以修改的注釋和主題。
主題用作標簽(稍后將它們鏈接到3個下拉列表)。
每個線程都有很多評論。
每個評論都有評論回復。

我是建立數據庫的新手。 我閱讀了一些有關如何建立表關系和數據庫的信息。 但是在部署所有內容之前,我需要您對我可以做出的改進的建議嗎? 和對設計的一般意見!

ps。 我使用C#,asp.net,Visual Studio 2010

在大多數情況下,我認為您的設計很好。 但是,我建議通過為主題,主題和子主題創建單獨的表或創建自引用表來規范Topics表:

主題

TopicID (int, primary key, not null)
ParentTopicID (int, null)
Name (nvarchar(50), not null)

這樣可以更有效地利用存儲空間(您不再在數據中重復主題和主題名稱),並為您提供了更大的靈活性(通過這種設計,您可以擁有無​​限級別的層次標記)。

同樣,也不必在表名前加上列名,例如Threads.ThreadTitle。 在這種情況下,我建議將Threads.ThreadTitle重命名為Threads.Title,並將Threads.ThreadParagraph重命名為Threads.Paragraph。

暫無
暫無

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

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