【问题标题】:How to model Peer Row in a Database如何在数据库中对 Peer Row 建模
【发布时间】:2020-02-12 00:42:34
【问题描述】:

我正在对数据库中的 Peer 2 Peer Relation 建模(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 的设备行尚未在 DB 中,因此 DB 给出了违反参照完整性约束的错误。

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

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

【问题讨论】:

    标签: sql database-design constraints


    【解决方案1】:

    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;
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2021-09-07
      • 2011-11-12
      • 2021-10-09
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 2010-11-22
      相关资源
      最近更新 更多