我正在尝试对Oracle中的数据库进行逆向工程。我已经能够找到与外键对应的主键和参照完整性规则,但无法找到存储模态/基数规则的位置。
非常感谢有关查看哪个表或示例查询的任何帮助。
答案 0 :(得分:2)
你的形态/基数规则是什么意思?
就Oracle而言,FK关系总是1:N。我想可以通过在相同的字段上但在相反的方向上具有两个FK关系来强制执行1:1。
关于基数的唯一其他“规则”是唯一的键,但我认为你已经拥有了这些。如果没有,这可能会有所帮助:
http://www.eveandersson.com/writing/data-model-reverse-engineering#constraints
根据数据库的设置,您还可以找到关于列中值的基数的启发式:
select * from user_tab_col_statistics
特别是'NUM_DISTINCT'值可能具有某种价值。
如果您要在数据字典中查找更多信息,我建议您选择初学者
select * from dict
where lower(comments|| '@' || table_name) like '%whatareyoulookingfor%'
答案 1 :(得分:1)
我认为您必须检查引用列nullable
:
SELECT column_name, nullable
FROM user_tab_cols
WHERE table_name = '<TABLE_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>'