11
votes

Ajout d'attributs de métadonnées à la table MySQL

Je voudrais ajouter des attributs personnalisés à une table MySQL que je peux lire via PHP.

Ces attributs ne doivent pas interférer avec la table elle-même - elles sont principalement accessibles par code PHP pendant le temps de génération de code et ces attributs doivent résider dans la DB elle-même.

quelque chose de similaire dans le concept à la réflexion .NET.

MySQL supporte-t-il quelque chose comme ça?

merci.


0 commentaires

3 Réponses :


1
votes

quel type d'attributs? Depuis que vous mentionnez la réflexion, je suppose que vous essayez de trouver quelque chose à propos de la structure de la table? Avez-vous compris que les commandes qui vous indiquent que la structure de la table sont SQL et renvoient leurs résultats comme une autre requête? Cela vous permet de traiter progressment les résultats de, par exemple, décrivez la table. Est-ce ce que vous cherchez?


2 commentaires

Je souhaite ajouter mes propres informations à la liste décrivant les rendements de table. Mes propres attributs personnalisés.


Long et court de cela est à peu près: "Vous ne pouvez pas". Gardez une table séparée avec des colonnes pour Table_Name, Field_Name, Attribute_Name, etc.



5
votes

Lorsque vous Créez ou alter une table, vous pouvez ajouter commentaires - un pour la table dans son ensemble et une pour chaque colonne. Pour récupérer ces commentaires, vous pouvez interroger la base de données informations_schema , spécifiquement les colonnes informations_schema.columns.Columns_comment et informations_schema.table.table_comments . Information_schema fournit beaucoup de métadonnées à propos de vos bases de données, y compris les données fournies par Décrire les déclarations . Tout utilisateur qui a lu accès à une seule table ou colonne peut lire les métadonnées respectives de informations_schema , mais ne peut pas lire les métadonnées sur les tables dont ils n'ont pas lu l'accès en lecture.

Il semble naturel de stocker vos métadonnées personnalisées dans informations_schema , mais il n'est pas aussi flexible que vous en aurez besoin, car vous ne pouvez stocker qu'un seul commenter par colonne. Si cela est restreint à votre usage ou que vous devez mettre à jour les données régulièrement, vous devez suivre @dark Falcon et créer une table supplémentaire.


0 commentaires

0
votes

Suivre de La réponse de Titanoboa , voici comment définir une table de table forte> à PHP :

$res = $mysqli->query("SELECT `TABLE_COMMENT` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'my_db_name' AND `TABLE_NAME` = 'my_table_name' LIMIT 1");
$row = $res->fetch_assoc();
$my_comment = $row['TABLE_COMMENT']; // "Test comment."


0 commentaires