[英]need help with database table relationships!
我正在嘗試建立一個與此網站有點相似的網站。 基本上我已經建立了四個表:
建立關系的方式:
用戶有很多評論。
用戶有很多線程。
每個線程都有自己的主題,主題,子主題(主題表,我基本上將其用作標簽)。
數據庫的工作方式:
我想在我的代碼中的各個階段中使用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.