首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库中具有多态关联的插入表

数据库中具有多态关联的插入表
EN

Database Administration用户
提问于 2021-06-13 05:31:23
回答 1查看 374关注 0票数 0

我想设计一个数据库,其中一些表有多个外键。

我正在寻找最好的设计方法。

我发现这类问题在数据库中被称为“多态关联”。我发现堆栈溢出问题多个表的外键和Nathan的回答非常有用。

但是根据上面的链接,如果我想插入一个新用户(不是一个新的票证,而是一个新的用户),基于设计的insert语句是什么?

首先我插入到party中?如何检索要插入到usergroup表中的id?因为它与usergroup有识别关系。

描述插入查询的关系:

代码语言:javascript
复制
    create table dbo.PartyType
(   
    PartyTypeId tinyint primary key,
    PartyTypeName varchar(10)
)

insert into dbo.PartyType
    values(1, 'User'), (2, 'Group');


create table dbo.Party
(
    PartyId int identity(1,1) primary key,
    PartyTypeId tinyint references dbo.PartyType(PartyTypeId),
    unique (PartyId, PartyTypeId)
)

CREATE TABLE dbo.[Group]
(
    ID int primary key,
    Name varchar(50) NOT NULL,
    PartyTypeId as cast(2 as tinyint) persisted,
    foreign key (ID, PartyTypeId) references Party(PartyId, PartyTypeID)
)  

CREATE TABLE dbo.[User]
(
    ID int primary key,
    Name varchar(50) NOT NULL,
    PartyTypeId as cast(1 as tinyint) persisted,
    foreign key (ID, PartyTypeId) references Party(PartyID, PartyTypeID)
)

user似乎与party表有一种标识关系:现有的子(用户)取决于该方的存在。现在我想插入一个新用户,例如,当一些用户需要注册时。

插入新用户的查询是什么?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-06-21 21:22:44

这是多态关联的一个例子,其中许多表的主键是超级表的外键。

首先插入Party表,然后接受插入的ID并将其插入到User表中:

代码语言:javascript
复制
insert into `Party` (PartyTypeId)
values (1);

insert into `User` (ID, Name)
values (LAST_INSERT_ID(), 'SomeName');
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/294183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档