J'ai été invité à documenter une base de données Oracle. Je n'ai pas besoin de diagrammes EER ou de quoi que ce soit de fantaisiste: un simple document imprimable avec une description des tables et des colonnes fera l'affaire. Cependant, je préfèrerais ne pas taper les noms des colonnes pour toutes les 79 tables. Existe-t-il un outil pour extraire cette information du serveur de base de données, éventuellement avec quelques informations de base comme les types de données et les commentaires?Document Base de données Oracle
Table: Foo
Comment: Definition of system foo
Columns:
Name | Data type | Default value | Allow NULL | Key | Comment
-----------------------------------------------------------------------------------------
FOO_ID | NUMBER(*,0) | - | NOT NULL | Primary Key | Value from FOO_SEQ
DATE_ADDED | DATE | SYSDATE | NOT NULL | - | -
FOO_NAME | VARCHAR2(50) | - | NOT NULL | Unique | Foo identifier
Je suis sous Windows XP et le serveur est 11g.
Aftermath
Je ne pouvais pas trouver un indice approprié de vue dans la documentation Oracle en ligne donc je finalement attrapé la version PDF et cherchai à travers elle jusqu'à ce que je suis arrivé ces requêtes:
/*
* Tables and views
*/
SELECT UO.OBJECT_NAME, UO.OBJECT_TYPE, UO.TEMPORARY, TC.COMMENTS
FROM USER_OBJECTS UO
LEFT JOIN USER_TAB_COMMENTS TC ON UO.OBJECT_NAME=TC.TABLE_NAME
WHERE UO.OBJECT_TYPE IN ('TABLE', 'VIEW')
ORDER BY UO.CREATED, UO.OBJECT_ID
/*
* Columns
*/
SELECT TC.TABLE_NAME, TC.COLUMN_NAME,
TC.DATA_TYPE, TC.DATA_LENGTH, TC.DATA_PRECISION, TC.DATA_SCALE, TC.CHAR_USED,
TC.DATA_DEFAULT, TC.NULLABLE, CC.COMMENTS
FROM USER_TAB_COLUMNS TC
LEFT JOIN USER_COL_COMMENTS CC ON TC.TABLE_NAME=CC.TABLE_NAME AND TC.COLUMN_NAME=CC.COLUMN_NAME
ORDER BY TC.TABLE_NAME, TC.COLUMN_ID
/*
* Restrictions
*/
SELECT UC.TABLE_NAME, UC.CONSTRAINT_NAME, UC.CONSTRAINT_TYPE, /*UC.SEARCH_CONDITION, UC.R_CONSTRAINT_NAME, UC.DELETE_RULE,*/
CC.COLUMN_NAME, CC.POSITION
FROM USER_CONSTRAINTS UC
LEFT JOIN USER_CONS_COLUMNS CC ON UC.CONSTRAINT_NAME=CC.CONSTRAINT_NAME
ORDER BY UC.TABLE_NAME, UC.CONSTRAINT_TYPE, UC.CONSTRAINT_NAME, CC.POSITION
tables Être ordre chronologique (l'ordre dans lequel l'installateur les a créés) me permet de les documenter dans un ordre logique (I a écrit l'installateur après tout).
voir aussi: http://stackoverflow.com/questions/711575/oracle-documentation-generation-tool –
@bunting, SQL Developer génère de la documentation sur presque tout (index, vues, jobs ...) à l'exception des tables; au moins dans mon ordinateur. –
A travaillé pour moi. Faites un clic droit sur la connexion et choisissez Generate DB Doc –