MySQL information_schema

Résolu
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 7 janv. 2009 à 22:55
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 8 janv. 2009 à 11:51
Bonsoir,

M'interessant pas mal à MySQL pour l'instant, j'aimerais comprendre un peu mieux certains mécanismes ^_^
J'ai donc commencé a triturer la Db information_schema qui contient la structure "logique" des autres Db et j'arrive sur un os! Mon manque de connaissance de MySQL et des autres base de données ne me permet pas de comprendre comment a été pensé/architecturé MySQL d'ou mon appel à l'aide.
Pour la petite explication, je fais un Mapper OR et pour le faire le plus autonome possible, j'ai besoin de savoir ^_^

Pour le faire, je suis parti de information_shema et de la table COLUMNS.
Elle me permet deja de savoir ce que je dois mettre dans chaque champs via les champs information_shema.COLUMNS. TABLE_NAME,COLUMN_NAME,ORDINAL_POSITION,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,NUMERIC_PRECISION

Ensuite si le champs information_shema.COLUMNS.COLUMN_KEY est égal a PRI => PK si MUL=>FK, si UNI =>UNIQUE
Je peux savoir si une PK a un comportement grace à information_shema.COLUMNS.EXTRA auto_increment est la seule valeur possible a première vue.

Ensuite,


Soucieux de vouloir améliorer le Mapper, je me suis mit en tête de pouvoir générer la CASCADE.

Première difficulté, je ne trouve pas ou il stocke cette information. Qqun pourrait m'aiguiller sur cette info ?
Par contre j'ai trouvé ou il stocke la reference de la FK dans :
information_shema.KEY_COLUMN_USAGE FK qui me donne via ses champs la table et clef référençant une clef d'une autre table et clef référencé. Qqun peut me valider cette trouvaille ?

En gros voilà les choses qui pour moi et pour l instant ont un sens.
Donc, y'a t'il qqch que je rate d'important ?

Merci

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro

2 réponses

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
8 janv. 2009 à 11:51
Ok après pas mal de recherche :

D'après http://neacm.fe.up.pt/docs/mysql/information-schema.html#referential-constraints-table
Il faut MySQL 5.1.10. Après installation de celle je retrouve bien la dite table avec les informations que je cherchais ! on delete, on update, ...Donc nickel!
Ensuite,
Chaque structure pour générer le model est différent ci dessous suite à mes recherches ...
Je ne promet rien de ces requêtes pas même celle que j'ai faite moi >_<

MySQL

SELECT
TABLE_NAME,
COLUMN_NAME,
ORDINAL_POSITION,
IS_NULLABLE,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION,
COLUMN_KEY,
EXTRA
FROM
COLUMNS
WHERE
TABLE_SCHEMA=:database
AND TABLE_NAME=:table
ORDER BY ORDINAL_POSITION ASC

PostGreSQL

SELECT COLUMN_NAME,
       DATA_TYPE,
       CHARACTER_MAXIMUM_LENGTH,
       NUMERIC_PRECISION,
       NUMERIC_SCALE,
       IS_NULLABLE,
       SUBSTR(COALESCE(COLUMN_DEFAULT, '' ), 1, 8 ) = 'nextval(' AS IS_AUTOINCREMENT,
       COLUMN_DEFAULT
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_NAME = 'xxxxxxxx'
ORDER BY ORDINAL_POSITION



Les schemas semblent avoir des équivalences et certaines valeurs n'ont pas d'équivalence directe donc attention !

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
3
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
7 janv. 2009 à 23:58
D'autres questions me viennent...

je voulais également savoir si cette Db information_schema est commune à
toute les bases de données ou si le schéma dépend de cette dernière. Y'a
t'il des base de données fonctionnant avec ce même information_schema
(celui MySQL)? Dans le cas contraire ou puis je me documenter sur les
équivalences?

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
Rejoignez-nous