繁体   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