2010-03-18 8 views
7

Je voudrais ajouter des attributs personnalisés à une table MySQL que je peux lire via php.Ajout d'attributs de métadonnées à la table MySQL

Ces attributs ne doivent pas interférer avec la table elle-même - ils sont principalement accessibles par le code php pendant la génération du code et ces attributs doivent résider dans la base de données elle-même.

Quelque chose de similaire à la réflexion .NET.

Est-ce que MySQL supporte quelque chose comme ça?

Merci.

Répondre

5

Lorsque vous CREATE ou ALTER une table, vous pouvez ajouter COMMENTS - un pour la table dans son ensemble et un pour chaque colonne. Pour récupérer ces commentaires, vous pouvez interroger la base de données INFORMATION_SCHEMA, en particulier les colonnes INFORMATION_SCHEMA.COLUMNS.COLUMNS_COMMENT et INFORMATION_SCHEMA.TABLE.TABLE_COMMENTS. INFORMATION_SCHEMA fournit beaucoup de métadonnées sur vos bases de données, y compris les données fournies par les instructions DESCRIBE. Tout utilisateur disposant d'un accès en lecture à une table ou colonne donnée peut lire les métadonnées correspondantes à partir de INFORMATION_SCHEMA, mais ne peut pas lire les métadonnées relatives aux tables pour lesquelles il n'a pas accès en lecture.

Il semble naturel de stocker vos métadonnées personnalisées dans INFORMATION_SCHEMA, mais il n'est pas aussi flexible que vous pourriez en avoir besoin car vous ne pouvez stocker qu'un seul COMMENT par colonne. Si cela est restrictif ou si vous avez besoin de mettre à jour les données régulièrement, vous devez suivre @Dark Falcon et créer une table supplémentaire.

1

Quel type de caractéristiques? Puisque vous parlez de réflexion, je suppose que vous essayez de trouver quelque chose à propos de la structure de la table? Saviez-vous que les commandes qui vous indiquent la structure de la table sont SQL et renvoient leurs résultats comme n'importe quelle autre requête? Cela vous permet de traiter de manière progammatique les résultats de, par exemple, DESCRIBE TABLE. Est-ce ce que vous cherchez?

+0

Je souhaite ajouter mes propres informations à la liste renvoyée par DESCRIBE TABLE. Mes propres attributs CUSTOM. – Jack

+0

Long et court de c'est à peu près: "Vous ne pouvez pas". Conservez un tableau séparé avec des colonnes pour nom_table, nom_zone, nom_attribut, etc. –