麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
422
2024-02-08
***数据库中的多对一关系体现在表之间的联系上,主要涉及两个表,分别为主表和从表(子表)当有多个表之间有多对一关系时,每一个表都有一个字段用于表示两个表之间的联系,即下面介绍的外键(foreign key)。
多对一关系的外键定义:一个表的外键(foreign key)是它的一个字段,该字段的值取自另一个表的主键(primary key),因此,每条从表记录都关联到一条主表记录,构成多对一的关系***多对一关系的实现主要有两种方式。
第一种是通过在从表中增加一个外键列,来表示与主表的联系,并且这一列对应的值是取自主表中主键(primary key)的,以保证每一条记录不会重复,最常用的第一种方式:以关系数据库[学生表S]跟[课程表C]为例,[学生表S]中有[学生ID]字段作为主键,[课程表C]中增加[学生ID]字段,其值就取自[学生表S]的[学生ID],以建立多对一的关系,如下:
CREATE TABLE [Student] ( [StudentId] INT PRIMARY KEY, [Name] NVARCHAR(50))CREATE TABLE [Course] (
[Id] INT PRIMARY KEY, [Subject] NVARCHAR(50), [StudentId] INT FOREIGN KEY REFERENCES [Student]([StudentId])
)第二种是通过在主表中添加虚拟列,该虚拟列的值是取自从表中的某一列,它可以使得多对一的关系在主表中也能体现出来,一般不使用这种方式,但有时也会有用处:以关系数据库[学生表S]跟[课程表C]为例,[学生表S]中有[学生ID]字段作为主键,[课程表C]中增加[学生ID]字段,其值就取自[学生表S]的[学生ID],以建立一对多的关系:
CREATE TABLE [Student] ( [StudentId] INT PRIMARY KEY, [Name] NVARCHAR(50))CREATE TABLE [Course] (
[Id] INT PRIMARY KEY, [Subject] NVARCHAR(50), [StudentId] INT FOREIGN KEY REFERENCES [Student]([StudentId]),
[StudentName] AS (SELECT [Name] FROM [Student] WHERE [Student].[StudentId] = [Course].[StudentId])
)通过上面的代码,可以将[学生表S]中的[Name]取到[课程表C]中,就可以体现出多对一关系了总结:***数据库中的多对一关系体现在表之间的联系上,主要涉及两个表,一个主表和一个从表,从表中添加一个外键字段,其值来源于主表的主键,以保持多对一的关系。
主表也可以添加虚拟字段来表明两个表之间的连接
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。