我无法在我的房屋出租数据库中设置多个外键。
房子有很多房间,里面有很多租户,每个租户都有一个租户。一个租户可以有多个租约。
我的数据库创建如下:
DROP TABLE IF EXISTS house;
CREATE TABLE house
(
house_name varchar(30) NOT NULL PRIMARY KEY,
address_first_line varchar(60),
address_city varchar(30),
address_postcode varchar(8)
);
-- rooms
DROP TABLE IF EXISTS room;
CREATE TABLE room
(
house_name varchar(30) NOT NULL,
room_number smallint NOT NULL,
PRIMARY KEY(house_name,room_number),
FOREIGN KEY (house_name) REFERENCES house(house_name)
);
-- tenants
DROP TABLE IF EXISTS tenant;
CREATE TABLE tenant
(
tenant_id smallint NOT NULL,
tenant_firstname varchar(20),
tenant_surname varchar(20),
tenant_telephone varchar(12)
);
-- rentals
DROP TABLE IF EXISTS tenancy;
CREATE TABLE tenancy
(
house_name varchar(30) NOT NULL,
room_number smallint NOT NULL,
start_date date NOT NULL,
end_date date,
tenant_id smallint NOT NULL,
advance smallint,
deposit smallint,
PRIMARY KEY (house_name,room_number,start_date),
FOREIGN KEY (house_name,room_number) REFERENCES room(house_name,room_number),
FOREIGN KEY (tenant_id) REFERENCES tenant(tenant_id)
);
此行正在生成“1005 错误:无法创建表租赁(错误号:150)”:
FOREIGN KEY (tenant_id) REFERENCES tenant(tenant_id)
租户表是租户和房间之间的关系,这就是它引用这两个表的原因。
我怀疑这真的很简单,但我很难得到它,希望能得到一点帮助。
谢谢,
理查德