gpt4 book ai didi

.net - 如何有效地对数据库中的继承进行建模?

转载 作者:行者123 更新时间:2023-12-01 16:44:06 26 4
gpt4 key购买 nike

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

权衡是什么(例如可查询性)?

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

最佳答案

有多种方法可以对数据库中的继承进行建模。您选择哪个取决于您的需求。以下是一些选项:

每种类型表 (TPT)

每个类都有自己的表。基类中包含所有基类元素,从它派生的每个类都有自己的表,有一个主键,也是基类表的外键;派生表的类仅包含不同的元素。

例如:

class Person {
public int ID;
public string FirstName;
public string LastName;
}

class Employee : Person {
public DateTime StartDate;
}

会产生如下表格:

table Person
------------
int id (PK)
string firstname
string lastname

table Employee
--------------
int id (PK, FK)
datetime startdate

每个层次结构表 (TPH)

有一个表代表所有继承层次结构,这意味着其中几个列可能是稀疏的。添加了一个鉴别器列,它告诉系统这是什么类型的行。

考虑到上面的类,您最终会得到这个表:

table Person
------------
int id (PK)
int rowtype (0 = "Person", 1 = "Employee")
string firstname
string lastname
datetime startdate

对于行类型为 0(人)的任何行,开始日期将始终为空。

每混凝土工作台 (TPC)

每个类都有自己的完整表格,不引用任何其他表格。

考虑到上面的类,您最终会得到以下表格:

table Person
------------
int id (PK)
string firstname
string lastname

table Employee
--------------
int id (PK)
string firstname
string lastname
datetime startdate

关于.net - 如何有效地对数据库中的继承进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com