【发布时间】:2011-05-14 14:20:45
【问题描述】:
我有一个应用程序可以让用户创建不同的表格(调查)然后填写它们。 (所以它可以代替纸)。
这是我在应用中使用的当前模型:
Table 1)
+-------------------------+
| SURVEYS TABLE |
+----+------+-------------+
| ID | name | description |
+----+------+-------------+
Table 2)
+-----------------------------------+
| $[name_of_the_survey] |
+----+-------+------+-------+-------+
| ID | field | type | value | items |
+----+-------+------+-------+-------+
Table 3)
+--------------------------------------+
| $[name_of_the_survey] _records |
+----+---------------------------------+
| ID | columns specific to each survey |
+----+---------------------------------+
所以基本上当用户创建调查时,程序会在调查表中插入一条记录,然后创建 2 个表:
表格(2)的字段 表 (3) 用于将存储的记录,其中列对应表 (2) 行。
它可以工作,但有一些限制。例如,当您向表 (2) 添加一个字段时,它必须读取表 (3) 的内容,将其保存到虚拟表中,删除以前的表 (3) 并创建一个新表。当 table(3) 有很多记录时,这可能是一个性能问题。
所以我的问题是……有更好的数据库设计吗?
【问题讨论】:
-
创建新表而不是在表中包含对父表具有外键的列的原因是什么?
-
好吧,所有 Table(2) 都可以聚合在一个表中,为 table(1) 添加一个外键。但是表 (3) 不能,因为我事先不知道调查将包含哪些字段和多少个字段。
标签: android database database-design sqlite