2011-05-07 58 views
1

我正在嘗試構建一個與此站點有點類似的站點。基本上,我已經建立了四個表:需要數據庫表關係的幫助!

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

方式的關係應建立:

用戶已經得到了許多意見。
用戶有很多線程。
每個主題都有自己的主題,主題,副主題(主題表,我基本上用作標籤)。

的方式,數據庫應該工作:
我想在我的代碼中使用的SQL命令INSERT INTO(),在各種stages..but通常這裏的描述:
當用戶登記自己的: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個下拉列表中)。
每個線程都有很多評論。
每個評論都有評論回覆/ s。

我是新來建立一個數據庫。我讀了一點關於如何建立表關係和數據庫。但在我部署所有內容之前,我需要您提供有關我可以改進的建議?和一般的設計意見!

ps。我使用c#,asp.net,visual studio 2010

+0

我認爲沒關係。我唯一的建議是,如果你使用asp,去MVC.net http://www.asp.net/mvc – ariel 2011-05-07 08:51:27

+0

isnt mvc有點高級asp.net。我只是一個初學者。我將通過應用程序在我的aspx.cs文件中使用insertInto命令 – 2011-05-07 08:59:38

+0

您將使用哪個數據庫? MS SQL Server? – ariel 2011-05-07 09:05:22

回答

0

大多數情況下,我認爲你的設計很好。不過,我會建議由要麼使單獨的表爲題材,主題和副主題,或者創建自引用表正常化的主題表:

主題

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

這將使一個更有效使用存儲(您不再複製數據中的主題和主題名稱),併爲您提供更大的靈活性(您可以在此設計中使用無限級別的標籤)。

另外,不需要在列名前加上表名,例如, Threads.ThreadTitle。在這種情況下,我會建議將Threads.ThreadTitle重命名爲Threads.Title,將Threads.ThreadParagraph重命名爲Threads.Paragraph。