Maison > Article > base de données > Spécifications et principes de conception MySQL
Spécification de conception de base de données MYSQL
1. La spécification de dénomination de la base de données
utilise 26 lettres anglaises (sensibles à la taille écrit) et un nombre naturel de 0 à 9 (souvent inutile) plus un trait de soulignement '_'
Le nom doit être concis et clair (la longueur ne peut pas dépasser 30 caractères) ;
Par exemple : user, stat , log, vous pouvez également ajouter un préfixe à la base de données avec wifi_user, wifi_stat, wifi_log ;
Sauf s'il s'agit d'une base de données de sauvegarde, vous pouvez ajouter un nombre naturel de 0 à 9 : user_db_20151210.
2. Nom de la table de base de données La convention de dénomination
est composée de 26 lettres anglaises (sensibles à la casse) et de nombres naturels de 0 à 9 (souvent non nécessaires) plus le trait de soulignement '_' ;
est nommé de manière concise et claire. Plusieurs mots sont séparés par le trait de soulignement '_' ;
Par exemple : user_login, user_profile, user_detail, user_role, user_role_relation,
user_role_right, user_role_right_relation
Le préfixe de table 'user_' peut être valide. Afficher les tables avec la même relation ensemble
3. 🎜> utilise 26 lettres anglaises (sensibles à la casse) et 0-9 composées de nombres naturels (souvent inutiles) plus un trait de soulignement '_'
dénomination concise et claire, plusieurs mots séparés par un trait de soulignement ; '_';
Par exemple : champs de la table user_login user_id, user_name, pass_word, eamil, tickit, status, mobile, add_time ;
Chaque table doit avoir une clé primaire à incrémentation automatique, add_time (heure système par défaut)
Le nom du champ associé entre les tables Les exigences sont aussi similaires que possible ;
Spécifications du type de champ de table de base de donnéesUtilisez le moins d'espace de stockage possible pour stocker les données dans un champ ;
Par exemple : si vous pouvez utiliser int, n'utilisez pas varchar ou char si vous pouvez utiliser varchar(16), n'utilisez pas varchar(256);
Il est préférable d'utiliser le type int pour l'adresse IP;
Longueur fixe Il est préférable d'utiliser char pour le type, par exemple : code postal
Si vous pouvez utiliser tinyint, n'utilisez pas smallint, int ;
Il est préférable de donner à chaque champ une valeur par défaut, de préférence non nulle ;
5. spécificationsLe nom est concis et clair Par exemple : l'index du champ user_name de la table user_login doit être l'index unique de user_name_index
est pour chaque Créer un primaire ; index clé pour la table ;
Créez un index raisonnable pour chaque table ;
Veuillez être prudent lors de la création d'un index composite ;
6. paradigme de base de données simplementPremière forme normale (1NF) : les valeurs des champs sont atomiques et ne peuvent pas être divisées (tous les systèmes de bases de données relationnelles satisfont à la première forme normale) ;
Par exemple : champ nom, où nom et Le prénom est un tout Si vous souhaitez faire la distinction entre le nom et le prénom, vous devez configurer deux champs indépendants ;
Deuxième forme normale (2NF) : Un tableau. doit avoir une clé primaire, c'est-à-dire que chaque ligne de données peut être distinguée de manière unique ;
Remarques : la première forme normale doit être remplie en premier ;
Troisième forme normale (3NF) : une table ne peut pas contenir d'informations sur les champs non clés dans d'autres tables associées, c'est-à-dire que la table de données ne peut pas avoir de champs redondants ;
Remarque : la deuxième forme normale doit être remplie en premier ;
La troisième. forme normale de la base de données :
①Les champs sont indissociables.
②Il existe une clé primaire et les champs de clé non primaire dépendent de la clé primaire.
③Les champs de clé non primaire ne peuvent pas dépendre les uns des autres.
Principes de conception de bases de données MYSQL
Principes de baseNe pas effectuer d'opérations dans le. base de données;
Les calculs du CPU doivent être déplacés vers la couche métier
Contrôler le nombre de colonnes (le nombre de champs est petit et précis, il est recommandé que le nombre de champs soit inférieur à 20) ;
Équilibrer le paradigme et la redondance (l'efficacité d'abord ; sacrifier souvent le paradigme)
Rejeter 3B (rejeter l'instruction Big SQL : Big SQL, rejeter les grandes choses : grosse transaction, rejeter le gros lot : gros lot) ;
2. Classe de champ Principe :Faire bon usage des types numériques (utiliser les types de champ appropriés pour économiser de l'espace) ;
les caractères sont convertis ; en nombres (la meilleure conversion qui puisse être effectuée, économise également de l'espace et améliore les performances des requêtes) ;
Évitez d'utiliser des champs NULL (les champs NULL sont difficiles à interroger et à optimiser, les index sur les champs NULL nécessitent de l'espace supplémentaire et les champs composites les index sur les champs NULL ne sont pas valides);
Utilisez moins de type de texte (essayez d'utiliser varchar à la place du champ de texte);
Principes de l'indexUtilisation raisonnable des index (pour améliorer les requêtes, ralentir les mises à jour, plus il y a d'index, mieux c'est);
Les champs de caractères doivent construire des index de préfixe;
Ne pas effectuer d'opérations de colonne dans l'index;
La clé primaire Innodb recommande d'utiliser des colonnes à incrémentation automatique (la clé primaire crée un index clusterisé, la clé primaire ne doit pas être modifiée, la chaîne ne doit pas être la clé primaire) (vous saurez si vous comprenez le stockage d'index d'Innodb structure);
ne nécessite pas de clés étrangères (contraintes par la garantie du programme);
4. Principes de la classe SQLL'instruction SQL est aussi simple. autant que possible (un SQL ne peut être utilisé que sur un seul processeur, les instructions volumineuses sont divisées en instructions plus petites pour réduire le temps de verrouillage, et un SQL volumineux peut bloquer toute la bibliothèque) ;
Transactions simples ;
Évitez d'utiliser trig/func (les déclencheurs et les fonctions ne sont pas remplacés par les programmes clients) ;
Ne pas utiliser select * (consomme du processeur, des io, de la mémoire, de la bande passante, ce genre de programme n'est pas évolutif)
select id from t where phone = ’159′ or name = ‘john’;Évitez les % négatifs ;Utilisez count(*) avec prudence ;limitez la pagination efficace (plus la limite est grande, plus l'efficacité est faible) ; Utilisez union all au lieu de union (union entraîne la surcharge de la déduplication ; Utilisez less join ;Utilisez group by ;Veuillez utiliser la comparaison du même type ;
Mises à jour par lots ;
5. Outils d'analyse des performances
afficher le profil;mysqlsla;mysqldumpslow;expliquer;
afficher le journal lent;
afficher la liste des processus;
Tutoriel recommandé : "Tutoriel MySQL"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!