在多个数据库中拆分数据的良好做法?

时间:2013-02-18 12:13:17

标签: mysql database

我正在设计一个用于信息系统的数据库。它将包含客户,员工和物品的数据。毋庸置疑,仅客户部分就有十几个表格。

我想知道将这些数据拆分到多个数据库上然后只是在它们之间引用,或者将它们全部保存在同一个数据库中会不会更好。

所以,有一个数据库(例如 Company_DB )有二十几个表(例如CUS_DETAILSEMP_DETAILS等),最好有两个数据库( Company_Cus,Company_Emp ),其中一个CUS_DETAILS和另一个EMP_DETAILS

问候。

4 个答案:

答案 0 :(得分:5)

“良好做法”是允许我们使偏见听起来比实际更重要的那些短语之一......

通常,您希望将所有内容存储在一起。如果您拥有一个单一的信息系统,它可以为企业运行一切,而您管理的实体彼此相关 - 客户有订单,订单有销售人员和产品 - 您可以说它们属于一体。另一方面,如果您注意到表中没有真正链接到任何其他表的“孤岛”,那么它们可能不属于同一个表。

从可维护性的角度来看,管理更多数据库意味着需要更多备份,更多维护例程以及更多要管理的安全配置文件。

从可读性的角度来看,搜索不同的数据库以找到您感兴趣的表可能是件坏事 - 例如,“客户”与“员工”之间存在多对多连接表“ - 例如销售团队 - 那张桌子住哪儿?在“客户”数据库中,还是“员工”?

从可靠性的角度来看,我不确定您是否可以跨数据库强制执行外键约束。

我真的不能想到这样做有什么好处 - 所以我想说这是个坏主意。

答案 1 :(得分:2)

我认为最好将它全部放在一个数据库中,而不是将数据分散在几个数据库中。

我个人认为,在不同数据库中分离信息的唯一原因是在一个平台上拥有完全不同的系统或子系统。

无论您使用多少个数据库,数据量都是相同的。

答案 2 :(得分:1)

  

我会选择一个DB,除非它真的没有必要拆分   对于多个数据源,单个DB不限于十几个   表。

总是会有足够的麻烦来管理多种资源。

答案 3 :(得分:0)

您是否将数据库存储在同一磁盘上?如果是这样,将它拆分到不同的数据库将完全没有任何改进。多个数据库中的引用比同一数据库中的多个表慢。

然而,单个数据库将更快更容易维护:只有一个数据库可以保护,只有一个数据库连接可以在应用程序中进行管理等。

数据库存在的原因是将一组相关对象保持在一起,以便我们可以相应地管理它们(否则我们只是直接创建表procs和视图,而不将它们绑定到数据库,并且每个表都有自己的文件,统计等)。

如果您认为将表放在同一个数据库中会变得混乱,那么您是否需要更好的对象命名模式?

底线:对我来说似乎是一个非常糟糕的做法,因为它没有任何优势和许多缺点。