如何在Oracle中检查关系的模态/基数
我正在尝试对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
非常感谢您提供有关要查找的表或示例查询的任何帮助。我认为您必须检查引用列是否可为
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%'