我正在建立一个保险数据库,我需要一些关于快速查询数据的最佳实践的帮助。
假设我有三种保险..。车,家和旅行。
对于所有三种类型,我都有“保险”表:
[dbo].[Insurance] (
[InsuranceID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[CustomerID] [uniqueidentifier] NOT NULL,
[CreatedDate] [datetime] NOT NULL
) 然后我有三种保险:
[dbo].[InsuranceCar] (
[InsuranceCarID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[InsuranceID] [uniqueidentifier] NOT NULL,
[Model] [uniqueidentifier] NOT NULL
)
[dbo].[InsuranceHome] (
[InsuranceHomeID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[InsuranceID] [uniqueidentifier] NOT NULL,
[Address] [uniqueidentifier] NOT NULL
)
[dbo].[InsuranceTravel] (
[InsuranceTravelID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[InsuranceID] [uniqueidentifier] NOT NULL,
[Destination] [uniqueidentifier] NOT NULL
) 所有三种保险类型都有一个“关键搜索字段”,用于查询保险--在“汽车”中是“型号”,在“家”中是“地址”,在“旅行”中是“目的地”。
所以我解决这个问题的方法是在“保险”表中创建一个"_Search“列.
[dbo].[Insurance] (
[InsuranceID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[CustomerID] [uniqueidentifier] NOT NULL,
[CreatedDate] [datetime] NOT NULL,
[_Search] [nvarchar(MAX)] NULL
) ..。当创建/更新任何保险类型表行时,我会将"key seach字段“从入侵类型表复制到" insurance”表"_Search“列中(使用触发器)。
通过这种方式,我可以通过查询“保险”表中的"_Search“字段来快速查询三个保险类型表中的任何关键字段。
问题是它在数据库中占用了更多的空间来这样做。
有什么更好的方法吗?最佳实践?
谢谢。
发布于 2020-07-27 14:33:48
这个问题太宽泛了,不适合这个场合。然而,作为在财产和伤亡行业工作的人,我不得不说.踩一下刹车。如果这是个业余项目..。有些爱好更令人放松。
这不是一件容易的事情,我可以说,我在这方面做了很多尝试,他们都犯了一些错误,尤其是当涉及到你描述的问题时--有多种类型的保险合同。
最终,这就是你在这里所做的建模--一个契约。保险合同有规则,可以修改,保险费必须正确计算和平衡,并且受到高度管制。
因此,这里的最佳做法是:
请阅读这篇文章,然后参考下图。这是个领先的开始。

这个模型甚至不能解决您需要解决的一些主要概念,例如:
另外,“快速查询”和GUID很少一起出现。您还会注意到,上面的数据模型中没有它们。
https://dba.stackexchange.com/questions/271710
复制相似问题