【问题标题】:Database design - Sharing data between two databases?数据库设计 - 在两个数据库之间共享数据?
【发布时间】:2015-12-28 20:24:03
【问题描述】:
我正在考虑和探索为我的新应用程序设计数据库的选项。一般来说,我会有注册用户和有关他们的信息。他们将能够在应用程序中做一些事情,并且这些数据将作为用户数据存储在 sam DB 中(这样我就可以共享 FK 的东西了)
但是,我计划创建第二个数据库,它在逻辑上完全独立于第一个数据库,除了它将共享用户 ID 作为 FK。
我什至不知道我应该将第二个逻辑放在额外的数据库中,还是应该将所有内容都放在同一个数据库中。我计划在我的应用程序中有子域用于第二个逻辑(它就像应用程序中的应用程序)但是如果我发现它们应该共享更多数据怎么办?交叉查询会降低我的表现吗?实际上,这是一种可行的方法吗,是否有真正的理由来分离数据库?
【问题讨论】:
标签:
sql
sql-server
database
database-design
【解决方案1】:
一旦您有两个数据库,您就有潜在的复杂性。您没有给出需要两个数据库的任何具体原因。所以在你有理由之前保持简单。
人们所做的一个例子:拥有一个“当前”数据库,很小,只保存现在需要的数据。这可能是接受和履行订单的地方。一旦数据不再是最新的,比如说在订单完成后的几天或几周内,将数据移动到“历史”数据库中。营销和管理人员可以在不影响“当前”数据库的性能的情况下查看历史的总体趋势,其性能对于让您的客户满意可能至关重要。
举一个复杂性的例子:任何时候你有两个数据库,你都需要考虑它们之间的一致性,这比看起来要难得多。数据库确实提供了两阶段事务功能,或者您可以设计批处理,但总是有难以捕捉的微妙之处。
【解决方案2】:
我只想将所有内容保存在一个数据库中。除非你有几十个表,否则应该没有真正的性能问题,恕我直言。然而,它将极大地方便您的生活,只需使用一个数据库连接,而不必担心合并来自两个查询的信息,
【解决方案3】:
还同意,除非您的数据量很大(从问题来看,这里似乎并非如此),否则您可以使用单个数据库来存储数据而不会出现性能问题。
对于数据结构的“可视化”分离,您始终可以在单个数据库的两个模式中创建表。