Database design 将多个外部数据库合并为一个数据库

Database design 将多个外部数据库合并为一个数据库,database-design,Database Design,我试图设计一个模式,用于在同一个数据库(整合主数据)中存储多个汽车数据库(本田、宝马、欧宝等) 为了简单起见,假设每个外部数据库都有3个实体:Model(查找表)、Category(查找表)、Car(引用两个查找表) 我的问题是模型和类别在每个外部数据库中有完全不同的数据(但99%的公共属性)。因此,在我的合并数据库中,我如何跟踪属于每个品牌的型号和类别 同样,我如何避免本田品牌的汽车指的是不属于本田的类别或型号 不知何故,品牌信息也应该存储(查找表),但我们如何避免多个级联路径 谢谢 更新:

我试图设计一个模式,用于在同一个数据库(整合主数据)中存储多个汽车数据库(本田、宝马、欧宝等)

为了简单起见,假设每个外部数据库都有3个实体:Model(查找表)、Category(查找表)、Car(引用两个查找表)

我的问题是模型和类别在每个外部数据库中有完全不同的数据(但99%的公共属性)。因此,在我的合并数据库中,我如何跟踪属于每个品牌的型号和类别

同样,我如何避免本田品牌的汽车指的是不属于本田的类别或型号

不知何故,品牌信息也应该存储(查找表),但我们如何避免多个级联路径

谢谢

更新:

审查业务需求后,用户不希望对合并数据库中的源数据进行任何转换/修改。它们应保持在外部数据库中的状态

以下是类别数据的示例:

本田

  • 运动

  • 运动契约

  • 城市汽车

注:“Sport Compact”为家长添加了“Sport”

大众汽车

  • 跑车

  • 运动契约

  • 城市汽车

注:“Sport Compact”为家长提供了“跑车”

宝马

  • 超级汽车

  • 超级汽车

  • 城市汽车

作为模型的数据示例:

本田

  • 轿车

  • 马车

  • 掀背车

  • 政变

大众汽车

  • 越野车

  • 轿车

宝马

  • 运动型多用途车(SUV)

  • 敞篷车

所有表都连接到品牌表,因此前端可以独立填充查找表模型和类别

我已经把品牌ID带到了汽车表中,这样可以确保汽车参考同一品牌的型号和类别

但是,并非所有的SGBDR都允许引用不属于PK的列,也不允许引用具有多列键的列


如果一辆车需要有多个类别或型号,或者一辆车需要参考另一个品牌的另一辆车(想想大众汽车的座椅)

如果你详细说明你在使用哪种技术,这会很有帮助,你是在谈论关系数据库吗?NoSQL数据库?所有数据库都是关系数据库,因为实体及其属性结构良好。使用SQL Server作为SGBDR。模型肯定有FK to品牌吗?类别是通用列表吗?如果是这样,您应该创建一个通用类别表,并在适当的情况下从一个类别表映射到另一个类别表,或者在没有等效类别表的情况下创建源表的并集。目前不存在品牌表,每个外部DB专用于一个品牌。类别在每个外部数据库中都是通用的。不幸的是,我有一些品牌之间的重叠类别(一些参考父类别,而另一些则不是)。我们是否也应该在参考品牌表的类别中设置FK?但在这种情况下,从品牌到汽车有一个多层次的路径……显然,您需要添加一个品牌表,并创建一个新的结构,允许旧数据映射到组合结构上。它不会是一个直接拷贝,因为毫无疑问,除了结构上的差异之外,数据库之间还会发生主键冲突。除非我们有3个数据库的完整模式,并且了解它们包含的数据,否则我们无法提供任何帮助。这是一种相当常见的场景,尤其是在正在建立整合报告或数据仓库解决方案的情况下。