数据库设计和查询

时间:2011-02-18 00:16:20

标签: sql mysql database architecture

我要求每个主题都有一些子主题。每个子主题都需要能够有n个注释。

我需要有数据库表来表示这个结构,然后查询它以获取子主题列表,并为每个子主题获取属于它的所有注释。我还必须知道我何时到达每个subitopic的评论结束。

有人可以就此提出最佳设计/咨询建议吗?

我使用MySQL。

非常感谢! - 亚历克斯

3 个答案:

答案 0 :(得分:1)

我认为这个数据库设计可能有效:

TOPIC
id
name

TOPIC_HAS_TOPIC
id
parentId
childId

COMMENTS
id
comment
topicId

答案 1 :(得分:1)

需要的表格: 话题 SubTopic(具有指向父主题的父键) 注释(具有指向父子主题的父键)

然后,对于给定的子主题,只需选择具有该子主题密钥的所有注释。

答案 2 :(得分:0)

您可以这样设计:

|Topic| -1----*- |SubTopic| -1----*- |Comments|

(编辑:星号似乎标记为斜体。所以请忽略色差)

即,从主题到子主题的1对多关系以及从子主题到评论的另一个1-many

您可以为每个表设置代理主键:

Create Table Topic (topic_id int auto_increment, primary key(topic_id),...)

类似于Subtopic的subtopic_id和主题的外键等等。

获取特定主题的所有注释可能如下所示:(假设注释表的文本属性(可能是TEXT数据类型?))

select comment.text from comments
join suptopic using(subtopic_id)
join topic using (topic_id)
where topic_id = 1;

join 内部联接相同,'使用'仅适用于'join-column'共享同一名称,否则语法不同。)

相关问题