sql - 如何将多个 parent 映射到单个 child 记录

标签 sql sql-server

首先,让我描述一下业务问题:

销售代表每次调用电话时,都必须记录通话中发生的情况。这称为处置。但某些配置可以有子配置 - 这意味着如果他们选择了该配置,那么他们将获得进一步的项目列表以供选择。其中一些也有 child 的倾向。 (最多 3 级)。

业务需求不仅要捕获所选的最终配置,还要捕获中间配置。

如何在数据库中对此进行建模?

到目前为止,我们已经提出了一个如下所示的 Disposition_Map 表:

CREATE TABLE [dbo].[dispo_map](
    [dispo_map_id] [int] IDENTITY(1,1) NOT NULL,
    [parent_dispo_id] [int] NULL,
    [child_dispo_id] [int] NOT NULL,
    [dispo_map_type_id] [int] NOT NULL,

这确实有效,但对我来说似乎很复杂。

最佳答案

详细说明正确的注释,这里是使用外键的一个基本设置。因此,当您将记录插入 dispo_map 时,它必须包含映射到 dispo.dispo_id

parent_dispo_id
CREATE TABLE [dbo].[dispo](
    [dispo_id] [int] IDENTITY(1,1) NOT NULL,
    [dispo_map_type_id] [int] NOT NULL)

ALTER TABLE dbo.dispo
add constraint PK_dispo_id primary key(dispo_id)

CREATE TABLE [dbo].[dispo_map](
    [dispo_map_id] [int] IDENTITY(1,1) NOT NULL,
    [parent_dispo_id] [int] NOT NULL,
    [dispo_map_type_id] [int] NOT NULL)

ALTER TABLE dbo.dispo_map
add constraint PK_dispo_map_id primary key(dispo_map_id)

ALTER TABLE dbo.dispo_map
add constraint FK_parent_dispo foreign key(parent_dispo_id) references dispo(dispo_id)

关于sql - 如何将多个 parent 映射到单个 child 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53068937/

相关文章:

MySQL断言

php - 如何使用具有动态值的变量更新sql表

mysql - 基于文本列过滤

sql-server - Excel 排名与 SQL 排名

sql-server - 存储过程和扩展存储过程的区别

sql - 如何在 postgres 中按排序顺序简洁地显示表列列表?

sql - 如何使用任意键的 postgresql JSON?

sql-server - 在 SQL Server 数据库中存储 GUID 值的最有效方法

sql - 如何从 SQL Server 存储过程捕获打印消息?

sql - 全部删除/批量插入