gpt4 book ai didi

sql - 我可以在外键列中添加非原子值吗?

转载 作者:搜寻专家 更新时间:2023-10-30 22:06:12 26 4
gpt4 key购买 nike

我正在为我的学校项目开发一个数据库,以根据项目场景中给出的示例表生成一个功能数据库。

在示例表中,有一个名为“Itineraries”的列,该列在一个单元格中有多个值,例如“London Tower Hill, Greenwich, Whitstable”。我觉得减少冗余的最好方法是创建一个单独的“目的地”表,如下所示

create table Destinations(
DestinationID varchar(5) primary key,
Name varchar(45)
);

我使用 DestinationID 作为 Itineraries 表中的外键依赖项,如下面的脚本所示。

create table Itineraries(
ItineraryID varchar(5) primary key,
Name varchar(20),
DestinationID varchar(5) foreign key references Destinations(DestinationID)
);

有没有办法在一行中插入多个目的地并仍然减少冗余?

感谢任何建议,谢谢

最佳答案

要以规范化的方式实现多对多关系,通常会使用“桥接表”,它负责连接关系的两端。

例如:

CREATE TABLE Destinations (
DestinationID VARCHAR(5) PRIMARY KEY
,Name VARCHAR(45)
);

CREATE TABLE Itineraries (
ItineraryID VARCHAR(5) PRIMARY KEY
,Name VARCHAR(20)
);

CREATE TABLE ItineraryDestinations (
ItineraryID VARCHAR(5) FOREIGN KEY REFERENCES Itineraries(ItineraryID)
,DestinationID VARCHAR(5) FOREIGN KEY REFERENCES Destinations(DestinationID)
);

如上所示,ItineraryDestinations 表中的每一行都包含 ItinerariesDestinations 表中记录的 ID,允许您向行程添加多个目的地,反之亦然,方法是添加多行,每个行程一行 > 目的地链接。

关于sql - 我可以在外键列中添加非原子值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52778671/

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