2010-02-17 18 views
0

我在嘗試對Oracle中的數據庫進行反向工程。我已經能夠找到與外鍵相對應的主鍵和參照完整性規則,但無法找到模態/基數規則存儲的位置。如何檢查Oracle中關係的模態/基數

任何關於要查看哪個表或示例查詢的幫助將不勝感激。

回答

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>' 
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%'