Codeigniter:我应该如何重构数据库架构?

时间:2010-05-12 22:29:17

标签: codeigniter

我甚至不知道这是否是正确的术语。

可能知道我是一个主要的新手!

我有三个表:用户,个人资料和调查。每个都有user_id作为它的第一个字段,(用户的自动增量),并且它们都被外键约束,DELETE上的CASCADE绑定。

目前,对于每个用户,假设user_id为1,它们在其他表中具有相应的db条目。对于配置文件,它列出了所有信息,调查表包含所有调查信息。

现在我必须改变一些事情......真是scope creep。用户需要能够拥有多个调查结果。我想这可能类似于博客的评论表...

我的整个应用程序都围绕着一个用户链接到约束配置文件和调查的想法。

我应该如何构建我的数据库?

我应该如何设计应用的数据库,以便用户可以为测试设置多个测试/配置文件?

请协助!任何建议,信息和个人知识都值得赞赏!

现在,我知道如何陪伴我的客户端的唯一方法是为每个测试创建一个伪用户(如此不必要)并将它们列在视图表中(称为“您的测试”) - 这些是从db获得的:where user_id = manager_id

1 个答案:

答案 0 :(得分:2)

目前,调查对用户有一个外键,用于识别参与调查的用户。这很好,并没有改变。

但是添加一个自动增量主键进行调查(以及分析)。现在,用户可以进行多次调查。每个单独的调查都有其密钥,其访问者由用户外键标识。

查找所有用户的所有调查:

select a.*, b,* 
from user a 
join survey b on (b.user_id = a.user_id);

查找一位用户的所有调查:

select a.*, b,* 
from user a 
join survey b on (b.user_id = a.user_id)
where a.user_id = some_user_id;

要获取调查数据,只需选择b.*即可。例如:

select b.* 
from survey b on 
where a.user_id = ( select user_id from user a where a.name = 'Bob' );

同样,您需要做的就是添加一个主键(应该是一个自动增量)来进行调查。