很多行(eav)与许多空列

时间:2014-10-10 09:20:46

标签: php mysql database schema entity-attribute-value

我尝试重新设计网站的数据库架构,我们根据用户所属的类别填写动态表单。这种动态形式的最终结果是我在数据库中有100多列来存储他们的答案,但在任何给定的情况下,少于10的列实际上都有一个值。

我希望尽可能地收紧数据库并尽可能删除NULL值,并且我正在考虑的上述问题的一个解决方案是使用EAV表来保存变量问题的答案。

因此,表1将保留其名称和其他一些位,表2将有一行持有问题并回答每个问题,其中外键链接到表1。

我做过一些打击破折计算,如果他们每天要填写1000张表格(高估计,从长远来看并非不可能)我在表2中查看了多达2,600,000行年(1000 * 10 * 260 - 工作日)。我的主要密钥将增加到40亿,所以这不是一个问题但是我担心在几年之后有500万到1000万条记录表明性能会严重下降。

我主要关注性能,就结构而言,EAV非常受欢迎,因为它可以让我的客户端无需与数据库交互就可以添加新问题,这有助于保持我的数据库架构更加紧凑如果它是正确的数据解决方案,我并不担心这会使我的代码复杂化。

0 个答案:

没有答案