Как моделировать Peer Row в базе данных - PullRequest
0 голосов
/ 11 февраля 2020

Я моделирую одноранговое отношение равных 2 в базе данных (H2, специально, но для этого вопроса подойдет любая СУБД.)

Скажем, у меня есть таблица оборудования

CREATE TABLE  EQUIPMENTS (
    ID LONG PRIMARY KEY,
    VENDOR VARCHAR(50) NOT NULL,
    MODEL VARCHAR(50) NOT NULL,
    PORT VARCHAR(50),
    peer_equipment_id LONG REFERENCES EQUIPMENTS(ID)
);

Теперь предположим, что мне нужно вставить 2 записи в эту таблицу, как показано ниже:

insert into EQUIPMENTS
    (ID, VENDOR, MODEL, PORT,  peer_equipment_id)
       VALUES (1,  'vendor1', 'model1', 'port3',  2);

БД выдает ошибку нарушения ограничения ссылочной целостности, поскольку строки оборудования с id = 2 еще нет в БД.

Как следует моделировать эти отношения и при этом сохранять ссылочную целостность?

Любое понимание помогает. Большое спасибо.

1 Ответ

0 голосов
/ 11 февраля 2020

insert, insert, update:

insert into EQUIPMENTS (ID, VENDOR, MODEL, PORT,  peer_equipment_id)
    VALUES (1,  'vendor1', 'model1', 'port3',  NULL);

insert into EQUIPMENTS (ID, VENDOR, MODEL, PORT,  peer_equipment_id)
    VALUES (2,  'vendor2', 'model2', 'port3',  NULL);

update EQUIPMENTS
    set peer_equipment_id = 2
    where id = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...