我怎样才能正确设置 2 个外键约束在此 table 上实现 2 table 之间的多对多关系?
How can I correctly set 2 foreign keys constraint on this table implementing a many to many relationship between 2 tables?
我正在使用 MariaDB(这与使用 MySQL 相同)。
我在尝试在 table 的 2 个字段上设置 2 个外键约束时遇到一些问题,该 table 实现了 2 table 之间的多对多关系。
所以我有以下 tables:
ACCOMODATION:每条记录代表一家酒店,有以下字段:
Field Type Null Key Default Extra
---------------------------------------------------------------------------------------------------------------------------
id bigint(20) unsigned NO PRI auto_increment
user_id bigint(20) unsigned NO
accomodation_name varchar(100) NO
description text YES
nation varchar(100) YES
region varchar(100) YES
province varchar(100) YES
city varchar(100) YES
stars int(10) unsigned YES
geographical_position point YES
accomodation_typological_id bigint(20) unsigned YES MUL
accomodation_service_id bigint(20) YES
SERVICE:每条记录代表前一个酒店提供的一项服务table:
Field Type Null Key Default Extra
---------------------------------------------------------------------------------------------------------------------------
id bigint(20) NO PRI auto_increment
description varchar(255) NO
然后我创建了一个ACCOMODATION_SERVICE table实现了前面2个table之间的多对多关系,这些是字段:
Field Type Null Key Default Extra
---------------------------------------------------------------------------------------------------------------------------
id bigint(20) unsigned NO PRI auto_increment
accomodation_id bigint(20) unsigned NO MUL
service_id bigint(20) unsigned NO
所以,在这个 table 的 accomodation_id 字段中,我放了一个 id accomodation table 并进入service_id 这个table 我放了一个id[= 服务的 44=]table.
如何正确指定这两个字段必须是 accomodation 和 service tables 的外键?我认为我必须指定此引用约束。
你需要做的
ALTER TABLE accomodation_service ADD CONSTRAINT fk_accomodation_id FOREIGN KEY(accomodation_id) REFERENCES accomodate(id)
同样
ALTER TABLE accomodation_service ADD CONSTRAINT fk_service_id FOREIGN KEY(accomodationfk_service_id_id) REFERENCES service(id)
你的支点table
CREATE TABLE accommodation_service(
id ............,
accommodation_id ............,
service_id ............,
FOREIGN KEY (accommodation_id)
REFERENCES accommodation(id)
ON DELETE CASCADE,
FOREIGN KEY (service_id)
REFERENCES service(id)
ON DELETE CASCADE,
)
我想这就是您要找的样板文件。
我正在使用 MariaDB(这与使用 MySQL 相同)。
我在尝试在 table 的 2 个字段上设置 2 个外键约束时遇到一些问题,该 table 实现了 2 table 之间的多对多关系。
所以我有以下 tables:
ACCOMODATION:每条记录代表一家酒店,有以下字段:
Field Type Null Key Default Extra --------------------------------------------------------------------------------------------------------------------------- id bigint(20) unsigned NO PRI auto_increment user_id bigint(20) unsigned NO accomodation_name varchar(100) NO description text YES nation varchar(100) YES region varchar(100) YES province varchar(100) YES city varchar(100) YES stars int(10) unsigned YES geographical_position point YES accomodation_typological_id bigint(20) unsigned YES MUL accomodation_service_id bigint(20) YES
SERVICE:每条记录代表前一个酒店提供的一项服务table:
Field Type Null Key Default Extra --------------------------------------------------------------------------------------------------------------------------- id bigint(20) NO PRI auto_increment description varchar(255) NO
然后我创建了一个ACCOMODATION_SERVICE table实现了前面2个table之间的多对多关系,这些是字段:
Field Type Null Key Default Extra
---------------------------------------------------------------------------------------------------------------------------
id bigint(20) unsigned NO PRI auto_increment
accomodation_id bigint(20) unsigned NO MUL
service_id bigint(20) unsigned NO
所以,在这个 table 的 accomodation_id 字段中,我放了一个 id accomodation table 并进入service_id 这个table 我放了一个id[= 服务的 44=]table.
如何正确指定这两个字段必须是 accomodation 和 service tables 的外键?我认为我必须指定此引用约束。
你需要做的
ALTER TABLE accomodation_service ADD CONSTRAINT fk_accomodation_id FOREIGN KEY(accomodation_id) REFERENCES accomodate(id)
同样
ALTER TABLE accomodation_service ADD CONSTRAINT fk_service_id FOREIGN KEY(accomodationfk_service_id_id) REFERENCES service(id)
你的支点table
CREATE TABLE accommodation_service(
id ............,
accommodation_id ............,
service_id ............,
FOREIGN KEY (accommodation_id)
REFERENCES accommodation(id)
ON DELETE CASCADE,
FOREIGN KEY (service_id)
REFERENCES service(id)
ON DELETE CASCADE,
)
我想这就是您要找的样板文件。