0

我有 3 种数据类型——a)公共列 b)层次结构——并且想知道如何设计数据库。

假设在顶层,有一个讨论。其中有 DiscussionMessages、Files 和 Comments。它们都有共同的字段(UserID、CreateDate、Text),但也有唯一的列(FileName、ContentType 等)。评论可以与任何类型(甚至是其他评论)相关联,并且与文件相关联。

在这里查看一些问题后,我想我想要类表继承——一个基表 (DiscussionParts) 来存储公共元素,然后是每种数据类型的特定表。

DiscussionParts : PartID, DiscussionID, ParentID, PartType (M,F,C), UserID, Text, CreateDate

消息:MessageID、PartID、标题

文件:FileID、PartID、FileName、ContentType

评论: CommentID, PartID, Source

ParentID 列用于跟踪层次结构。DiscussionID 是为了让用户可以在一个简单的查询中搜索他/她的所有讨论文本。

这是具有层次结构的类表继承的推荐设计吗?

4

1 回答 1

1

我建议根据实体和可能的功能而不是类来重新定义它。原因是数据库不做“类”和“继承”,以这种方式转换它们会导致设计效率低下。

这听起来像,“......在顶层,有一个讨论。” 意味着这是您的顶级表格,大概有一个 ID、标题,也许还有一些描述消息内容的文本。

从那里开始,您的 Messages 表是 Discussions 的子表,以 DiscussionId 作为外键,它的 messageId、Title、文本等。听起来你正在建立一个论坛,到目前为止一切都很好。

评论有点棘手。大概评论被添加到消息中?这意味着您的 Comments 表具有消息的外键,以及它自己的 CommentId 和一些文本。

但是从这个问题我无法确定文件的来源。它们是否作为一个整体附加到讨论中?一个消息?还是评论?无论答案是什么,都让 Files 表成为相应表的子表。

所以你的层次结构不是类,而是表,看起来像:

Discussions ----> Messages ---> Commnts
于 2011-01-15T15:29:04.530 回答