我需要一些关于数据库设计的建议

时间:2010-08-02 13:12:18

标签: database-design cakephp cakephp-1.2

我正在使用cakePHP 1.26 我将在localhost上建立一个非常简单的论坛 以下是数据库的概念设计:

表:
用户{user_id,姓名,日期}
主题{post_id,标题,内容,日期}
回复{post_id,content,date}
引用{quote_post_id,post_type,post_id}

用户可能有很多主题
用户可能有很多回复
主题可能有很多报价 答复可能有很多报价 (主题和回复都可以引用一次或多次)

请提供帮助和建议。

3 个答案:

答案 0 :(得分:3)

用户{id,name,logname,password}

主题{id,title,content,date,user_id}

回复{id,content,date,topic_id,user_id}

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

我将尝试以不同的方向回答失去的答案:

用户{id,name,logname,password}

发布{id,title,content,date,parent_post_id,user_id}

引用{post_id,quoted_post_id}

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

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