0

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

任何有关查看哪个表或示例查询的帮助将不胜感激。

4

2 回答 2

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%'
于 2010-02-17T19:34:50.403 回答
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>'
于 2010-02-17T19:33:58.937 回答