Sql server 引用的表中没有主键或候选键';酒店';与外键';fk#U客房酒店';

Sql server 引用的表中没有主键或候选键';酒店';与外键';fk#U客房酒店';,sql-server,Sql Server,你好,有人能帮我解决这个错误吗。我只是在学习SQL,不知道如何修复它。 它表示引用的表“hotel”中没有与外键“fk_rooms_hotel”中的引用列列表匹配的主键或候选键 CREATE database Hotel_database; USE Hotel_database; -- Table `addresses` CREATE TABLE addresses ( address_id INT PRIMARY KEY NOT NULL , address_line1 VARC

你好,有人能帮我解决这个错误吗。我只是在学习SQL,不知道如何修复它。 它表示引用的表“hotel”中没有与外键“fk_rooms_hotel”中的引用列列表匹配的主键或候选键

CREATE database Hotel_database;
USE Hotel_database; 

-- Table `addresses`

CREATE TABLE addresses (
  address_id INT PRIMARY KEY NOT NULL ,
  address_line1 VARCHAR(100) NULL,
  address_line2 VARCHAR(100) NULL,
  city VARCHAR(45) NULL,
  state VARCHAR(45) NULL,
  country VARCHAR(45) NULL,
  zipcode VARCHAR(8) NULL,
  );

  -- -----------------------------------------------------
-- Table `hotel_database`.`hotel_chain`
-- -----------------------------------------------------

CREATE TABLE hotel_chain (
  hotel_chain_id INT NOT NULL,
  hotel_chain_name VARCHAR(45) NULL,
  hotel_chain_contact_number VARCHAR(12) NULL,
  hotel_chain_email_address VARCHAR(45) NULL,
  PRIMARY KEY (hotel_chain_id)
  );
    
  ------------------------------------------------
-- Table `hotel`
-- -----------------------------------------------------


CREATE TABLE hotel (
  hotel_id INT NOT NULL,
  hotel_name VARCHAR(45) NULL,
  hotel_contact_number VARCHAR(12) NULL,
  hotel_email_address VARCHAR(45) NULL,
  hotel_website VARCHAR(45) NULL,
  hotel_description VARCHAR(100) NULL,
  hotel_floor_count INT NULL,
  hotel_room_capacity INT NULL,
  hotel_chain_id INT NULL,
  addresses_address_id INT NOT NULL,
  check_in_time TIME NULL,
  check_out_time TIME NULL,
  PRIMARY KEY (hotel_id, addresses_address_id),
  CONSTRAINT fk_hotel_addresses
    FOREIGN KEY (addresses_address_id)
    REFERENCES addresses (address_id)
    );
 

-- -----------------------------------------------------
-- Table room_type
-- -----------------------------------------------------

CREATE TABLE room_type (
  room_type_id INT NOT NULL,
  room_type_name VARCHAR(45) NULL,
  room_cost DECIMAL(10,2) NULL,
  room_type_description VARCHAR(100) NULL,
  PRIMARY KEY (room_type_id)
  );


-- -----------------------------------------------------
-- Table rooms
-- -----------------------------------------------------

CREATE TABLE rooms (
  room_id INT NOT NULL,
  room_number INT NULL,
  rooms_type_rooms_type_id INT NOT NULL,
  hotel_hotel_id INT NOT NULL,
  PRIMARY KEY (room_id, rooms_type_rooms_type_id, hotel_hotel_id),
  CONSTRAINT fk_rooms_hotel
    FOREIGN KEY (hotel_hotel_id)
    REFERENCES hotel (hotel_id),
  CONSTRAINT fk_rooms_rooms_type1
    FOREIGN KEY (rooms_type_rooms_type_id)
    REFERENCES  room_type (room_type_id)
    );

hotel的主键当前为(hotel\u id,addresses\u address\u id),因此您不能仅在(hotel\u id)上的外键中引用它。您可能需要将hotel的主键更改为just(hotel_id)。

该消息是解释性的。在已指定fk_rooms_hotel外键的创建表'rooms'DDL中,表'hotel'不包含列hotel_id。可能它的名称有所不同?是的。在答案中修正了它。