我有这个3桌,可用的旅行,国家和地点。我的ERD设计中的关系是
位置| M-1 |国家| 1-M |可用旅行
这是我对决议的尝试
create table country
(
countryID int not null IDENTITY(1,1) PRIMARY KEY,
countryName varchar(50),
passportRegulation text,
currency varchar(20),
)
create table location
(
locationID int not null IDENTITY(1,1) PRIMARY KEY,
locationName varchar(100),
countryID int references country(countryID)on delete cascade
)
create table availableTrip
(
availableTripID int not null IDENTITY(1,1) PRIMARY KEY,
countryID int references country(countryID),
locationID int references location(locationID)
)
如果我有两个外键添加到可用行程中,是否可能是正确的,但我觉得这是多余的,因为根据位置我可以知道国家。我有点迷失了这个设计的方向
答案 0 :(得分:1)
假设countryId
需要与locationId
中的国家/地区匹配,那么您只需要locationId
中的availableTrip
。
您可以使用联接查找相应的国家/地区:
select avt.*, l.countryid
from availabletrip avt join
location l
on avt.locationid = l.locationid;
如果countryId
可能与locationId
不同,那么您需要两列。