具有两个具有相同结构的数据库的学说

时间:2015-04-28 09:25:48

标签: doctrine-orm zend-framework2

在我的应用程序(ZF2 + Doctrine)中,我必须使用两个独立的数据库和车辆的技术数据。两个数据库都具有相同的结构,但数据来自不同的国家。

使用一组实体但连接到由车辆来源选择的不同数据库的最佳方法是什么。

例如,如果车辆来自英国,则使用DB1,如果德国使用DB2。

1 个答案:

答案 0 :(得分:0)

如果您有两个具有相同结构的数据库,通常最好将它们合并以减少维护工作并避免以不同方式维护它们。 但是,如果您确实需要将数据库分开,则可以考虑Multiple Table Inheritance(或Class Table Inheritance)是否适合您。

我使用多表继承来管理日历事件。每个日历活动都有开始日期,开始时间,结束日期和结束时间。但是,作为会议的事件也可能包含议程和与会者名单等数据;商务午餐活动可能包含预订和费用报告项目等数据;商务旅行的事件可能包含行程和确认码等数据。使用多表继承,有一个表(类),每个事件都有一行,所有事件都有一个列,用于每种类型的数据。然后是一组表,用于表示唯一类型的事件以及仅对这些事件通用的唯一数据类型。除了我的主要'事件'表,我可能还有一个'会议'表,一个'午餐'表和一个'旅行'表。唯一表中的数据映射到Events表,并在Events表中使用discriminator列告诉Doctrine事件与哪个唯一表关联。

多表继承背后的理论与您尝试执行的操作并不完全匹配,因为其目的是组合具有不同结构的数据集,而不是具有相同结构的数据集。但是,它为您提供的是有机会组合您希望保持分离的表的数据,无论出于何种原因。如果您有需要,它还可以灵活地更改两个表的结构。