数据库设计:存储来自不同站点的用户信息编辑:EAV(实体属性值)

时间:2013-07-15 13:28:47

标签: sql database tsql database-design entity-attribute-value

我正在尝试设计一个数据库,用于存放来自不同网站的用户信息。基本上是用户信息的聚合,因此用户不必登录到不同的网站并在一个地方获取类似的信息。类似mint.com的问题是,大多数这些不同的网站包含不同的数据子集。例如,一个站点需要大约47列,而另一个站点只需要大约13个列。现在我认为合乎逻辑的是将每个站点分成它自己的表。然而,一张47列的桌子看起来很麻烦,我试图把它分成小桌子只是让它看起来更疯狂。我的一位朋友建议,如果网站的字段之间有相似之处,我只能有三张桌子。像这样:

visio_design

如果我将每个网站架构的表格作为一个表,并且它将该列名称作为条目放入“field_name”列,则上面的示例基本上会采用任何列名称。由于每个站点的用户信息更改每天只发生一次(在清晨),因此复合键将根据当天保持唯一。它们在自己的表中,而不是一行中的网站的所有值,它们基本上都是分段的,现在获取的数据涉及稍长的查询,其中所有内容基本上都在WHERE子句中完成。

如果说我可以使用来自一个网站的所有13个并将其与来自网站的13个列合并为47列并且只需要担心34个列并使用映射表将数据映射到适当的站点,这将是非常好的。然而,我已经分析了数据,并且没有办法做到这一点。每个站点都必须使用所有字段,因为它们不够相似,无法结合。这意味着每天上面示例中的数据表将生成大约120行。我非常喜欢这个概念......如果我的任何要求发生变化,我就不必在我的代码中编辑模式,而是在field_name中添加另一个值。与其他方式相比,这似乎是唯一的主要优势。

将每个网站分解为自己的表并且每天只生成4行表格会更有意义吗DESPITE一个表有47个或者更有意义的做一些类似于上面的例子以获得更多的可伸缩性..?< / p>

0 个答案:

没有答案