Рассмотрим города и штаты. Каждый город существует в государстве. В каждом штате есть столица.
CREATE TABLE city (
city VARCHAR(32),
state VARCHAR(32),
PRIMARY KEY (city),
FOREIGN KEY (state) REFERENCES state (state)
);
CREATE TABLE state (
state VARCHAR(32),
captial_city VARCHAR(32),
PRIMARY KEY (state),
FOREIGN KEY (captial_city) REFERENCES city (city)
);
Первая проблема - вы не можете создать эти таблицы, как показано. Решение состоит в том, чтобы создать их без внешних ключей, а затем добавить внешние ключи.
Вторая проблема - вы не можете вставить строки ни в одну из таблиц, поскольку для каждой вставки потребуется предварительно существующая строка в другой таблице. Решение состоит в том, чтобы установить для одного из столбцов внешнего ключа значение NULL и вставить эти данные в два этапа. например,
INSERT INTO city (city, state) VALUES ('Miami', NULL);
INSERT INTO state (state, capital_city) VALUES ('Florida', 'Miami');
UPDATE city SET state='Florida' WHERE city='Miami';