我应该让用户在数据库中创建表还是创建视图?

时间:2013-06-18 11:56:34

标签: php database-design

我正在使用cakephp,我需要让用户设计自己的表单(这只会在设置向导阶段完成一次,实际使用中创建了大约12个表单)。始终需要的表是用户,组和日志,设置。实际上,这是一个用户友好的数据库应用程序。

我在想创建视图并有两个实际的表来存储表单和后续数据:

Forms [id | name   | structure                                                   ]
      [1  | Details| {id:{type:key}q2:{type:text;validation:{select:male..}..}   ]
      [2  | Car    | {id:{type:key};car:{type:text;validation:{select:Honda... }}]

列“结构”将包含列出字段,类型和验证规则的json或xml字符串。

Forms_data [id | form_id | survey_id | key  | value ]
           [1  | 1       | 1         | q1   |  Male ]
           [2  | 1       | 1         | q2   | 1/1/76]
           [3  | 2       | 1         | Car  |  Honda]
           [4  | 2       | 1         | Eng  | Petrol]
           [5  | 1       | 2         | q1   |  Fem  ]
           [6  | 1       | 2         | q2   | 2/3/81]
           [7  | 2       | 2         | Car  |  Ford ]
           [8  | 2       | 2         | Eng  | Diesel]

Forms_data表将包含表单的每个字段的数据,survey_id表示表单所涉及的主题人,被调查的一个人可以有许多关于它们的表单。键将是varchar,但值必须是最大可能数据类型的大小(例如“段落文本”)。

或者我应该让用户(通过params / sanitized等)执行“CREATE TABLE”并在数据库中创建真实的表,这样我就可以充分利用系统查询和优化,并在cakephp中获得所有的魔术功能工作

1 个答案:

答案 0 :(得分:1)

这取决于您以后要对数据做什么以及将会有多少。 DBMS系统(如MySQL)可以非常快速地处理大量数据。您也可以以非常复杂的方式查询数据,而不是其他选择。权衡更复杂一点。我几乎总是站在数据库解决方案的一边。它为您提供最大的灵活性。