0

我已经编程和使用调查软件三年多了。它最初是一个简单的调查系统,带有一个基本的“用户”SQL 表,例如,您可以在大多数 CMS 中找到它。我最初计划使用该程序两到三次,每次调查有 30 名左右的用户。

今天,该程序已经发展壮大,每月用于一两次调查。一项调查可能有数百名用户,这使得表格非常长且令人困惑。

不过,我找不到比经典用户列表更好的方法。我想为每个调查创建一个新表,但我觉得它在问问题。我现在要做的是在调查完成后将完整的 SQL 数据库存档,这对现在来说很方便,但当我必须快速找到旧调查的结果时,这将变成一场噩梦。

我相信我不是第一个遇到这个问题的人,很高兴知道你是如何解决它的。有一些最佳实践吗?

谢谢!

4

2 回答 2

2

一种解决方案是维护两个表。用户和用户历史。

调查完成后,您可以将数据移至 users_history。这样,影响应用程序性能的数据库将保持在可管理的大小范围内。出于分析目的,数据将始终在历史表中可用。

于 2011-03-20T18:00:13.653 回答
1

如果每个调查的用户集不同(两个调查中的同一个人将有两个不同的用户帐户),您可以添加一列来users引用调查表。

ALTER TABLE users ADD COLUMN survey INT NOT NULL;
ALTER TABLE users ADD FOREIGN KEY (survey) 
    REFERENCES surveys (id) 
    ON DELETE CASCADE;

如果您想允许未与调查关联的用户,请允许调查引用为 NULL 并将外键设置为ON DELETE SET NULL.

当您需要对 users 表进行操作时,请使用该列仅获取属于感兴趣调查的用户。

于 2011-03-20T18:19:00.907 回答