【问题标题】:How do you recreate the arc relationship in the Oracle Database Modeler in Oracle APEX?如何在 Oracle APEX 的 Oracle Database Modeler 中重新创建弧关系?
【发布时间】:2020-08-20 19:03:40
【问题描述】:

我不知道如何在 Oracle APEX 中写出一个外键约束来表示 Oracle Database Modeler 中的弧线关系。

【问题讨论】:

    标签: oracle oracle-sqldeveloper oracle-apex


    【解决方案1】:

    您可以让数据建模器生成关系模型和 DDL 代码。然后,在 APEX 中打开 SQL 脚本编辑器,粘贴 DDL 代码,为脚本命名并执行它 - 请参见下面的屏幕截图。

    (示例)ERD

    关系模型(生成)

    DDL 代码(生成)

    APEX 脚本编辑器(注意强制执行“弧”的 CHECK 约束)

    脚本执行

    您可能需要稍微调整一下脚本(如果有错误消息)。

    然后,你应该做一些测试,让你看到“弧”实际上是有效的,例如

    测试

    -- these 3 INSERTs must fail
    -- {1} event without a "venue id"
    insert into event ( 
      id, eventdate, private_home_id, public_space_id 
    ) values (
      1, sysdate, null, null
    ) ;
    -- ORA-02290: check constraint (...ARC_1) violated
    
    -- {2} private home does not exist
    insert into event ( 
      id, eventdate, private_home_id, public_space_id 
    ) values (
      1, sysdate, 1000, null
    ) ;
    -- ORA-02291: integrity constraint (...EVENT_PRIVATE_HOME_FK) violated - parent
    key not found
    
    -- {3} public space does not exist
    insert into event ( 
      id, eventdate, private_home_id, public_space_id 
    ) values (
      1, sysdate, null, 2000
    ) ;
    -- ORA-02291: integrity constraint (...EVENT_PUBLIC_SPACE_FK) violated - parent
    key not found
    

    在 PRIVATE_HOME 和 PUBLIC_SPACE 表中插入一些数据

    -- add a PRIVATE_HOME and a PUBLIC_SPACE
    insert into private_home( id, vname ) values ( 1000, 'The Manor' ) ;
    insert into public_space( id, vname ) values ( 2000, 'Royal Albert Hall' ) ;
    
    
    -- add 2 events
    insert into event ( 
      id, eventdate, private_home_id, public_space_id 
    ) values (
      1, sysdate, 1000, null
    ) ;
    
    insert into event ( 
      id, eventdate, private_home_id, public_space_id 
    ) values (
      2, sysdate, null, 2000
    ) ;
    
    select * from event ;
    SQL> select * from event ;
    
            ID EVENTDATE PRIVATE_HOME_ID PUBLIC_SPACE_ID
    ---------- --------- --------------- ---------------
             1 06-MAY-20            1000                
             2 06-MAY-20                            2000
    

    【讨论】:

    • 很好的答案!关系模型的重点是帮助您处理 ddl。
    猜你喜欢
    • 2011-06-21
    • 2012-04-27
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多