English 中文(简体)
How to check modality/cardinality on a relationship in Oracle
原标题:

I am attempting to reverse engineer a Database that is in Oracle. I have been able to find the main keys and the referential integrity rules that correspond to the Foreign Keys but cannot locate where the modality/cardinality rules are stored.

Any help regarding to which table to look in or a sample query would be greatly appreciated.

问题回答

What do you mean by modality / cardinality rules?

FK relationships are always 1:N as far as Oracle is concerned. I guess one could enforce a 1:1 by having two FK relationships on the same fields but in opposite directions.

The only other rule concerning cardinality are unique keys, but I think you already have those. If not, this might help:

http://www.eveandersson.com/writing/data-model-reverse-engineering#constraints

Depending on the setup of the database you also might find heuristics about the cardinality of values in columns:

select * from user_tab_col_statistics

Especially the value NUM_DISTINCT might be of some value.

If you are looking for more information in the data dictionary, I recommend this select for starters

select * from dict
where lower(comments||  @  || table_name) like  %whatareyoulookingfor% 

I think you will have to check for referring columns being nullable:

SELECT column_name, nullable
FROM user_tab_cols
WHERE table_name =  <TABLE_NAME> 

and for unique indices on referring columns:

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> 




相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签