OracleDB - 使用dependencys的外键约束

时间:2017-12-14 12:15:17

标签: oracle database-design

我知道这不是最好的设计,但我们有一个数据库,我们必须适应它。 我们有一个表“自定义”:

CREATE TABLE CUSTDATA ( TYPE NUMBER(11) GENERATED ALWAYS AS IDENTITY INCREMENT BY 1 START WITH 1 NOT NULL , NUMBER NUMBER(5) , VALUE01 NUMBER(11) , VALUE02 NUMBER(11) , TEXT01 VARCHAR2(50) .. .. , CONSTRAINT CUSTDATA_PK PRIMARY KEY( TYPE, NUMBER));

所以,显然数据非常动态 类型1可以有2个数字和不同的值 类型5可以有20个数字...... 现在的问题是,这是数据的存储方式,在此表中。根据类型,可以清楚从值中获取哪些数据。

现在这就是我们所拥有的

我们想做什么:

我们希望将新表中的外键设置为此CUSTDATA表。 因此表XYZ在CUSTDATA.NUMBER上需要外键,其中TYPE = 3

我们如何实现这一目标? 我们尝试了对视图的视图和约束。 它不是美丽的,但如何处理这样的情况?

我们将针对每种类型制作视图,只需要您可以看到所需的值...

更新

也许我们想要做的事情并不清楚。我们不希望将表格转换为新表格。我们希望将它与新类型一起使用。

create table xyz(
     doesntmatterkey        NUMBER(11)
    ,foreignNR
    ,CONSTRAINT xyz_PL PRIMARY KEY 
  (
    doesntmatterkey 
  )
, CONSTRAINT ADRPOSTALADR_FK1 FOREIGN KEY
    (
    foreignNR
      )
    REFERENCES CUSTDATA
    (
      TYPE = 3000
      NUMBER <- this is the real foreign column
    )
);

1 个答案:

答案 0 :(得分:0)

我通过添加新生成的列在其他数据库中完成了此操作:

str[strlen(str)]='\0';