如何在数据库中对等行建模

问题描述 投票:-1回答:1

我正在对数据库中的对等2对等关系建模(特别是H2,但是对于这个问题,任何RDBMS都应该这样做。)

说,我有一个设备表

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的设备行尚未在数据库中,因此数据库给出了违反引用完整性约束的错误。

一个人应该如何建立这种关系并仍然保持参照完整性?

任何见识都会有所帮助。非常感谢。

sql database-design constraints
1个回答
0
投票

[insertinsertupdate

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;
© www.soinside.com 2019 - 2024. All rights reserved.