什么是更好的:拥有许多类似的数据库或一个具有相似表的数据库或一个具有一个表的数据库?

fla*_*nik 4 sql database database-design partitioning sql-server-2008

我需要处理几个数据样本,比如说N.样本代表相似的数据,但来自不同的来源.例如,不同商店的订单历史.所以所有样本的结构都是一样的.为了操作数据我有几种可能性:

  1. 使用N具有相同模式的数据库,每个样本一个

  2. 使用一个数据库,但使用多N组表.例如,User_1,...,User_N; Product_1,...,Product_N,Order_1,...,Order_N等.

  3. 使用一个数据库和一组表User,Product,Order,但向每个表添加一个表示样本索引的辅助列.显然,这一列应该是一个索引.

最后一个变体似乎是最方便使用的,因为所有查询都变得简单.在第二种情况下,我需要将一个表名作为参数发送给查询(存储过程)(是否可能?).

那么你会建议哪种方式?表现非常重要.

S.L*_*ott 5

步骤1.获取有关数据仓库的书籍 - 因为这就是您正在做的事情.

第2步.将数据划分为事实(可衡量的东西,如$,重量等)和维度(不可衡量的属性,如产品名称,订单号,用户名等)

步骤3.构建由该事实的维度围绕的事实表(例如,订单项).订单商品的产品,订单商品的客户,订单商品的订单编号,订单商品的日期等等.这将是一个事实表和单个数据库中的多个维度表.每个"起源"或"来源"只是基本事实的一个维度.

步骤4.使用非常简单的"SELECT SUM()GROUP BY"查询来汇总和分析您的数据.

这是业务性能最高,可扩展性最高的方式.购买Ralph Kimball的数据仓库工具包书籍了解更多详情.

不要构建具有相同结构的N个数据库.构建一个用于测试,一个用于生产,但不建ñ.

不要构建具有相同结构的N个表.这就是关键所在.