Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Oracle中检查关系的模态/基数_Oracle_Integrity_Cardinality_Modality_Referential - Fatal编程技术网

如何在Oracle中检查关系的模态/基数

如何在Oracle中检查关系的模态/基数,oracle,integrity,cardinality,modality,referential,Oracle,Integrity,Cardinality,Modality,Referential,我正在尝试对Oracle中的数据库进行反向工程。我已经能够找到与外键相对应的主键和引用完整性规则,但无法找到模态/基数规则的存储位置 非常感谢您提供有关要查找的表或示例查询的任何帮助。我认为您必须检查引用列是否可为null: SELECT column_name, nullable FROM user_tab_cols WHERE table_name = '<TABLE_NAME>' 选择列名称,可为空 来自用户选项卡 其中表_name=“” 对于参考列上的唯一索引: SELE

我正在尝试对Oracle中的数据库进行反向工程。我已经能够找到与外键相对应的主键和引用完整性规则,但无法找到模态/基数规则的存储位置


非常感谢您提供有关要查找的表或示例查询的任何帮助。

我认为您必须检查引用列是否可为
null

SELECT column_name, nullable
FROM user_tab_cols
WHERE table_name = '<TABLE_NAME>'
选择列名称,可为空
来自用户选项卡
其中表_name=“”
对于参考列上的唯一索引:

SELECT idx.index_name, col.column_name
FROM user_indexes idx
JOIN user_ind_columns col ON ( col.index_name = idx.index_name )
WHERE idx.uniqueness = 'UNIQUE'
  AND idx.table_name = '<TABLE_NAME>'
选择idx.index\u名称、col.column\u名称
从用户索引idx
将用户索引列col ON(col.index\U name=idx.index\U name)
其中idx.university='UNIQUE'
和idx.table_name=''

我认为您必须检查引用列是否可为

SELECT column_name, nullable
FROM user_tab_cols
WHERE table_name = '<TABLE_NAME>'
选择列名称,可为空
来自用户选项卡
其中表_name=“”
对于参考列上的唯一索引:

SELECT idx.index_name, col.column_name
FROM user_indexes idx
JOIN user_ind_columns col ON ( col.index_name = idx.index_name )
WHERE idx.uniqueness = 'UNIQUE'
  AND idx.table_name = '<TABLE_NAME>'
选择idx.index\u名称、col.column\u名称
从用户索引idx
将用户索引列col ON(col.index\U name=idx.index\U name)
其中idx.university='UNIQUE'
和idx.table_name=''

你所说的模态/基数规则是什么意思

就Oracle而言,FK关系始终为1:N。我想可以通过在同一个字段上但方向相反的两个FK关系来强制执行1:1

关于基数的唯一其他“规则”是唯一的键,但我认为您已经有了这些键。如果没有,这可能会有帮助:

根据数据库的设置,您还可能会找到关于列中值基数的启发式方法:

select * from user_tab_col_statistics
尤其是“NUM_DISTINCT”值可能具有某种价值

如果您要在数据字典中查找更多信息,我建议初学者选择此选项

select * from dict
where lower(comments|| '@' || table_name) like '%whatareyoulookingfor%'

你所说的情态/基数规则是什么意思

就Oracle而言,FK关系始终为1:N。我想可以通过在同一个字段上但方向相反的两个FK关系来强制执行1:1

关于基数的唯一其他“规则”是唯一的键,但我认为您已经有了这些键。如果没有,这可能会有帮助:

根据数据库的设置,您还可能会找到关于列中值基数的启发式方法:

select * from user_tab_col_statistics
尤其是“NUM_DISTINCT”值可能具有某种价值

如果您要在数据字典中查找更多信息,我建议初学者选择此选项

select * from dict
where lower(comments|| '@' || table_name) like '%whatareyoulookingfor%'