Sql 存储anketing数据的数据库设计

Sql 存储anketing数据的数据库设计,sql,database,Sql,Database,我想做一个网络应用,用户可以用问题创建anketa,其他用户可以用答案填充它。答案可以是不同的类型:文本、数字、日期、查找和其他。Stackoverflow的用户和nick Pepper一起帮助我选择构建数据库的方式 方法是将anketa答案保存为答案表中的行。例如,表格设计: TABLE AnketaField Id uniqueidentifier PK AnketaId uniqueidentifier FK to anketa table Name varchar

我想做一个网络应用,用户可以用问题创建anketa,其他用户可以用答案填充它。答案可以是不同的类型:文本、数字、日期、查找和其他。Stackoverflow的用户和nick Pepper一起帮助我选择构建数据库的方式

方法是将anketa答案保存为答案表中的行。例如,表格设计:

TABLE AnketaField
Id   uniqueidentifier     PK
AnketaId uniqueidentifier FK to anketa table
Name varchar              field name
Type varchar              field type (string, int, datetime)

TABLE AnketaFieldValue
Id            uniqueidentifier          PK
AnketaFieldId uniqueidentifier          FK to AnketaField table
Value         varchar                   value in string (cast to true type if need)
我认为,如果我使用这种设计,在选择数据、制作报告时会出现问题。有很多人加入。 也许有人知道另一种方法,或者如何构建这种类型的系统,我指的是不同的属性数计数


我会很感激的!谢谢…

这实际上是一个非常小的连接数。有了正确的索引,就性能而言,您应该不会有任何问题。如果要验证这一点,请继续在DBMS中创建这些表,然后最好使用脚本生成大量数据(数百万条记录),然后运行一些查询并查看结果。如果您遇到性能问题,请尝试并找到改进设计索引、分区等的方法。好的,但我无法理解,如果我要选择所有anketa数据,其中用户输入年龄30,性别=‘男性’,我需要使用sub-select?我真的很困惑