可扩展的数据库模式

时间:2010-06-21 12:32:33

标签: database database-design

我们正在改进我们的产品,为每个客户量身定制。目前,我们必须为每个客户端维护单独的数据库,这会严重影响持久层。

我们新数据库架构的主要目标是可扩展性。我不是专家数据库设计师,因此需要专家的意见:)。

我正在考虑扩展(姐妹)表的方法。对于每个核心表,可能存在扩展字段所在的姐妹表。这样,我们就可以为核心和扩展表开发单独的持久层。

如果我把它分成两个数据库怎么办?核心和扩展数据库。这样可以简化维护工作。

2 个答案:

答案 0 :(得分:1)

使用PK和FK创建单独的数据库将不允许使用本机参照完整性。它还增加了维护的复杂性。

如果您的RDBMS支持模式,您应该在单个数据库中利用多个模式。

此外,如果您不熟悉数据库,则应了解规范化和数据库设计(此站点上有一些好的线程)。

答案 1 :(得分:1)

在PostgreSQL中,您可以拥有继承的表。例如,如果您的表A包含列(x,y,z),则可以使表A-sub-1继承自A,但也添加列(i,j,k)和表A-sub-2这会增加列(d,e,f)。

这样做的一个好处是,某些SELECT语句可以保持不变:默认情况下,从父级中选择也会从所有子表中进行选择。只使用共同元素的那些陈述不需要改变。需要自定义INSERT / UPDATE / DELETE语句以反对特定的派生表。

请注意,此处需要支付的费用是PK和FK不能应用于整体结构。每个继承的表本身仍然是一个独立的表,并处理自己的约束。也就是说,您不能在父表上拥有PK或FK,并且它也会自动应用于所有子项。