在数据模型中对以下3种关系进行成像
实体>路径>链路
两种关系都是1对多。因此,实体有多个路径,路径有多个链接。
我应该将这个表格作为表格之间有关系的3个表格
或者创建一个将路径信息存储为XML的表。
这个表(让我们称之为Paths),将存储1个路径/行。所以我们最终得到2个表而不是3个:实体>路径
XML看起来像这样:
<path>
<link entitySource=1 entityTarget=2>
<link entitySource=2 entityTarget=6>
<link entitySource=6 entityTarget=9>
</path>
每种设计有哪些好处?我想使用3桌设计,需要一个很好的解释来说服CTO为什么我应该这样做。他确信XML路由是一种更好的设计,因为它会减少数据库连接,从而提高读取性能。
读取性能非常重要,因为此表将用于存储数百万条记录,并且需要快速搜索。
答案 0 :(得分:5)
表
一些想法:
答案 1 :(得分:2)
我们在谈论什么数据库引擎?
如果是任何商业关系引擎(SQL Server,Oracle,DB2,MySQL),那么最佳性能将来自使用...关系。换句话说,表格。索引,外键约束,这种东西。虽然大多数都支持XML,但它与关系性能不匹配。我可以理解关于将XML分解为表而不是将其保存在XML blob中的讨论。但是为了模拟多对多关系和外键,因为XML就像我在很短的时间内看到的一样糟糕(我每天都看到糟糕的想法......)。
另一方面,如果您正在谈论一些深奥的XML面向数据库,请告诉我们:)
答案 2 :(得分:0)
这取决于您的 域模型 是否将Link作为全班实体,或者路径的链接集合是否只是路径的属性。
第一种情况是,您将需要搜索单个链接的数据,查看它们属于哪个路径,或用于任何其他目的。
如果您永远不需要访问或处理单个链接或任何单个链接,那么第二个可能是真的,但只会访问路径上的所有链接作为完整集合。