当您需要将继承类持久化到不支持继承的关系数据库时,有哪些技巧/技术?
假设我有一个经典的例子:
Person -> Employee -> Manager
-> Team lead
-> Developer
-> Customer -> PrivilegedCustomer
-> EnterpriseCustomer设计数据库的可用技术有哪些?每种方法的优缺点?
附注:我搜索并发现了几个关于数据库继承的问题,但大多数都是关于更改为本地支持它的数据库引擎。但是假设我坚持使用SQL Server2005...我有什么选择?
发布于 2008-12-22 16:30:31
三种常见策略:
vehicle表,其中包含car和airplane等具有vehicle_id列的其他表。这里的缺点是,您可能需要执行大量连接,才能得到一个类类型。vehicle表可能包含一个名为wingspan的列,该列对应于Airplane类型。如果将该列设置为NOT NULL,那么插入到表中的任何Car实例都将需要wingspan的值,即使值NULL可能更有意义。如果您将该列保留为空,则可以使用check约束来解决此问题,但它可能会变得很糟糕。(Single Table Inheritance)发布于 2011-10-19 07:30:09
在某些情况下要小心数据库继承-我们在审计策略的应用程序中实现了它,最终导致了性能瓶颈/噩梦。
问题是,我们使用的基表是只插入的,并且变化很快,所以我们最终到处都是死锁。我们目前正计划将它们拆分到各自的表中,因为在15个不同的表中拥有相同的列,而不是性能噩梦,这是非常值得的。实体框架不一定能有效地处理继承(这是Microsoft的一个已知问题),这也加剧了这一问题。
无论如何,我想我应该分享一些知识,因为我们已经经历了这个问题。
发布于 2008-12-22 17:26:45
第八章继承映射在下面的链接中也讨论了这一点。http://nhibernate.info/doc/nh/en/index.html#inheritance
它就是NHibernate文档。
https://stackoverflow.com/questions/386652
复制相似问题