Все ваши внешние ключи перепутаны, что приводит к синтаксически неверным отношениям. Я понимаю отношения следующим образом:
Возможно, у вас также должна быть таблица region
, на которую будет ссылаться таблица state
.
Вот Новая версия, которая действительна и реализует вышеуказанные отношения:
CREATE table State (
state_name VARCHAR(128) PRIMARY KEY,
region VARCHAR(128)
);
CREATE table Governor (
governor_name VARCHAR(128),
state_name VARCHAR(128),
party VARCHAR(128),
PRIMARY KEY (governor_name, state_name),
FOREIGN KEY (state_name) REFERENCES State(state_name)
);
CREATE table City (
city_name VARCHAR(128),
state_name VARCHAR(128),
population number,
elevation number,
PRIMARY KEY (city_name, state_name),
FOREIGN KEY (state_name) REFERENCES State(state_name)
);
CREATE table Mayor (
mayor_name VARCHAR(128),
city_name VARCHAR(128),
state_name VARCHAR(128),
party VARCHAR(128),
PRIMARY KEY (mayor_name, city_name, state_name),
FOREIGN KEY (state_name, city_name) REFERENCES City(state_name, city_name)
);
Демонстрация на DB Fiddle .