我怎样才能正确设置 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:

  1. 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      
    
  2. 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.

如何正确指定这两个字段必须是 accomodationservice 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,

)

我想这就是您要找的样板文件。