2010-02-17 4 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 всегда равны 1: N, что касается Oracle. Я предполагаю, что можно применить 1: 1, имея два отношения FK в тех же полях, но в противоположных направлениях.

Единственное другое «правило», касающееся мощности, это уникальные ключи, но я думаю, что у вас уже есть эти. Если нет, то это может помочь:

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