2010-08-02 162 views
0

我正在使用cakePHP 1.26。
我打算在localhost上构建一个非常简单的论坛。
这里是数据库的概念设计:
需要一些关于我的数据库设计的建议

表:
用户{USER_ID,姓名,日期}
主题{POST_ID,标题,内容,日期}
回复{POST_ID,内容,日期}
报价{quote_post_id,post_type,POST_ID}

用户可以具有许多主题
用户可以具有许多回复
甲主题可具有许多报价
答复可能有很多报价
(这两个主题和答复可能会被引用一次或多次)

请帮助和建议。

回答

3

用户{ID,名称,日志名,密码}

主题{ID,标题,内容,日期,USER_ID}

回复{ID,内容,日期,topic_id,USER_ID}

我不确定Quote ...我不知道为什么不符合Reply

+0

就像主题有一个用户并且答复有一个用户一样,如果只有主题可以被引用,则引用可能也有一个用户 - 也可能有一个主题。如果为true,则将user_id和post_id添加到表格引用。 – 2010-08-02 13:37:43

+0

我的印象是行情就像引用。这是帖子之间的多种关联。复杂性很明显,主题或答复可以引用主题或答复。 – 2010-08-02 13:47:56

1

您明确想要引入一个名为id的字段,因为它是表users中的id字段时命名字段user_id有点多余。除此之外,cakephp还将一些字段视为automagicAutomagic意味着cakephp可以在没有你的情况下识别外键 - 开发者必须明确指定它们。但为了有cakephp帮助你automagic你必须坚持几个约定。曾经学过的这些惯例中的一个非常方便,就是一旦您将它们命名为YOUR_MODEL_NAME_IN_SINGULAR_HERE_id,就会自动检测到外键。 例如:作者has许多的职位,职位belongsTo作者(*)。在这种情况下,您可以将外键作为autor_id存储在表posts中。稍后,当您使用cake bake脚本或脚手架功能时,您将会了解会议的力量!

我在你的文章中注意到的另一件事是,它可能是你会错过,在cakephp关系建立双向。这意味着您不仅可以使用单个定义,还可以同时在另一个方向定义一个hasMany定义。

因此,我建议你改述你的陈述,以便实施后期更酷。

1

我要去尝试采取thelost的回答不同的方向:

用户{ID,名称,日志名,密码}

邮政{ID,标题,内容,日期,parent_post_id,USER_ID}

报价{POST_ID,quoted_post_id}

在这个模型中,一个帖子是一个话题,如果parent_post_id为NULL。回复将parent_post_id设置为其主题的ID。 (或者你可以允许回复的树结构。)

警告:我的经验是在正常的SQL。我不知道cakephp中的工作是如何工作的,所以其他人将不得不帮助你。