相关疑难解决方法(0)

如何在数据库中表示继承?

我正在考虑如何在SQL Server数据库中表示复杂的结构.

考虑一个需要存储一系列对象细节的应用程序,这些对象共享一些属性,但有许多其他属性不常见.例如,商业保险计划可能包括同一保单内的责任,汽车,财产和赔偿保险.

在C#等中实现它是微不足道的,因为您可以创建一个带有Sections集合的Policy,其中Section是根据各种类型的封面所需继承的.但是,关系数据库似乎不容易这样做.

我可以看到有两个主要选择:

  1. 为所有可能的变体创建一个Policy表,然后是一个Sections表,其中包含所需的所有字段,其中大部分都是null.

  2. 创建一个Policy表和许多Section表,每个表对应一种封面.

这两种替代方案似乎都不令人满意,特别是因为必须在所有Sections中编写查询,这将涉及大量连接或大量空检查.

这种情况的最佳做法是什么?

sql database inheritance database-design class-table-inheritance

209
推荐指数
5
解决办法
9万
查看次数

你如何有效地模拟数据库中的继承?

在数据库中建模继承的最佳实践是什么?

权衡取舍(例如可疑性)是什么?

(我对SQL Server和.NET最感兴趣,但我也想了解其他平台如何解决这个问题.)

.net sql-server oop inheritance database-design

124
推荐指数
5
解决办法
5万
查看次数

如何在数据库中实现超类,子类关系?

如果我有一个叫动物的类,狗和鱼是子类.动物具有称为"颜色"的属性.狗具有称为"尾长"的属性,并且鱼没有此属性.鱼具有称为"重量"的属性,狗没有这个属性.

所以,我想设计一个数据库来存储这些信息.我该怎么办?这是一些想法:

想法1:制作动物表,并且表格有类型,以找到什么样的动物,如果是狗,只需从狗桌得到结果.

Animal:color:String类型:int

类型:狗:0鱼:1

狗:TailLength:int

鱼:重量:int

想法2:只在数据库中存储Dog表和Fish表,删除动物表.

狗:颜色:字符串TailLength:int

鱼:颜色:字符串重量:int

database database-design class-table-inheritance

11
推荐指数
1
解决办法
1万
查看次数

为什么Microsoft Access表单会为一个查询而不是另一个查询创建记录?

我有一个Access数据库.让我们假装它是一家宠物商店.

有一张动物桌子.

Animals (animal_id, birth_date, price)
Run Code Online (Sandbox Code Playgroud)

然后是我们销售的不同类型动物的特定表格.

Dogs (animal_id, bark_volume)
Cats (animal_id, collar_size, shedding_rate)
Fish (animal_id)
Run Code Online (Sandbox Code Playgroud)

鱼没有趣味,所以它们没有任何特殊的领域.Fish表存在,因此您知道Animals表中的哪些记录是鱼.

现在,我有一个通用的表格,可以将动物添加到宠物商店.在你获得表格之前,首先要说明你要添加什么样的动物.基于此,表单显示/隐藏字段,更改其记录源,并将字段绑定到适当的数据列.表单从查询DogInfo,CatInfo和FishInfo中提取数据.

现在,当你进入一只狗或一只猫时,一切都很好.记录被添加到动物和狗或猫.

然而,当你进入鱼类时,你得到的只是动物,没有鱼.

可能是什么导致了这个?是不是因为鱼桌上缺少其他栏而引起的?

(让我们撇开这样一个事实,即使用select查询更新表格根本就没有意义.我没想到Access首先让我这么做,但Access的座右铭似乎是"让错误的事情变得容易"做得和正确的事情很难做到."数据库相对简单且不经常使用,并且它比我开始工作之前至少好100倍,所以我真的不太担心这个问题只要我能使它工作.)

ms-access

4
推荐指数
1
解决办法
1237
查看次数