2010-02-17 10 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

는 양상/기수 규칙에 의해 무엇을 의미합니까?

FK 관계는 항상 Oracle과 관련하여 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%' 
이 선택하는 것이 좋습니다