Maison >base de données >tutoriel mysql >Spécification préliminaire de conception de base de données MySQL V1.0
Spécifications de conception de la base de données :
a) Table Les noms et noms de colonnes doivent être commentés.
b) La dénomination doit utiliser des mots ou des abréviations anglais significatifs, composés de plusieurs mots, tous en lettres majuscules, séparés par "_", et seuls les lettres et chiffres anglais peuvent être utilisés et soulignés. , pas d'espaces. Par exemple, USER_DETALL n'autorise pas l'utilisation des mots-clés TYPE ou STATUS comme noms de champs.
c) La longueur du nom ne doit pas dépasser 15 caractères (évitez de dépasser 20) et doit refléter la portée commerciale de l'ensemble de données ou les fonctions commerciales, telles que POWER_USER (Centre utilisateur) , etc.
d) Lorsque le type de champ est une énumération ou un booléen, utilisez le type CHAR(1) (ou CHAR(2)) et renseignez la valeur par défaut du. Le champ de statut ne peut pas être nul est généralement défini sur 0 ou -1, et la description du champ de statut est écrite sous la forme d'un commentaire « Statut du coupon d'achat groupé : 1. Acheté ; 2. Utilisé 3. Remboursement ; 4 Remboursé ;
e) Essayez d'inclure des champs de date lors de la conception : CREATE_DATE (date de création), UPDATE_DATE (date de mise à jour), etc. MySQL accepte une méthode de saisie pour les dates, telle que '2014-12-31 00:00:00.0'
f) La valeur par défaut est 0 pour les types numériques et 0 pour les chaînes. la valeur est '' et la valeur par défaut pour la date est « 1900-01-01 00:00:00.0 ».
g) Utilisez bigint pour l'ID du champ de clé primaire S'il y a une marque AUTO_INCREMENT=6653864 dans l'instruction create, veuillez la supprimer.
h) La valeur par défaut du champ de date ne peut pas être nulle et est généralement définie sur 1970-12-31 00:00:00.0.
i) Le champ du téléphone portable, le champ de l'e-mail, etc. qui seront récupérés ne peuvent pas être nuls, et la valeur par défaut la valeur est la chaîne vide ''. Les champs de type numérique ne peuvent pas être nuls et la valeur par défaut est 0.
j) L'encodage des caractères par défaut est utf8, et le moteur de stockage par défaut est INNODB
PS : Chaque table doit avoir un champ de clé primaire et doivent être saisis. Les champs de date et les valeurs ne peuvent pas être NULL.
1) Index ordinaire, connectez les noms de champs commençant par IDX_. <
3) Le champ de clé primaire n'a pas besoin de créer une clé unique, et le champ de clé primaire n'a pas besoin d'être indexé séparément.
4) Les champs fréquemment interrogés derrière la condition WHERE doivent être indexés, comme ORDER_SN (numéro de produit) de la table ORDER_GOODS, etc.
5) Les champs de plage n'ont pas besoin d'être indexés, comme le champ IS_DEL de la table SHOP_MALL, etc.
6) Les champs à indexer ne doivent pas avoir de valeurs nulles, sinon cela affectera l'efficacité de l'index.
Exemple de création de table déclaration:
CREATE TABLE `SHOP_GAY` (
`ID` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT ' ID de la boutique',
`SHOP_NAME` VARCHAR(50) DEFAULT '' COMMENT 'Nom du magasin',
`LEGAL_PERSON_MOBILE` VARCHAR(11 ) COMMENTAIRE NULL PAR DÉFAUT 'Téléphone portable personne morale',
`SCORE` BIGINT(20) COMMENTAIRE PAR DÉFAUT 0 'Points',
. .. ...
`MANAGER_NAME` VARCHAR(20) DEFAULT '' COMMENT 'Nom du gérant du magasin',
`BRIEF` VARCHAR (500 ) DEFAULT '' COMMENT 'Introduction au magasin',
`HAS_WAREHOUSE` CHAR(1) DEFAULT '0' COMMENT 'S'il y a un entrepôt, 0 : Non 1 : Oui ; ',
`DESCRIPTION_FIT` DECIMAL(3,1) DEFAULT 0 COMMENT 'La description correspond - elle est obtenue en calculant la moyenne de l'évaluation de tous les articles commandés et en prenant une décimale',
`BACKGROUND` VARCHAR(200) DEFAULT '' COMMENT 'Image du titre du magasin',
`CREATED_DATE` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Heure de création',
`UPDATED_DATE` DATETIME DEFAULT '1970-12-31 00:00:00.0' COMMENT 'Heure de mise à jour',
CLÉ PRIMAIRE (`ID `),
CLÉ IDX_MOB(LEGAL_PERSON_MOBILE),
CLÉ IDX_CRETIME(CREATED_DATE),
KEY IDX_UPTIME(UPDATED_DATE) )
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='GAY store'
Exemple d'ajout de champs :
ALTER TABLE AUTH_MALL ADD COLUMN SHORT_NAME VARCHAR(20) DEFAULT '' COMMENT 'Abréviation du nom du carré' AFTER FULL_NAME ;
Exemple de modification des champs du tableau :
ALTER TABLE GATEWAY_PAYMENT_ORDER MODIFY COLUMN STAT varchar(2) DEFAULT '0'
commentaire 'Statut de la transaction 0 : Paiement/remboursement en attente, 1 : En attente de rappel d'un canal tiers, 2 : Paiement/remboursement réussi, 3 : Échec du paiement/remboursement, 4 : Confirmation du paiement/remboursement réussi, 5 : Échec de la confirmation du paiement/remboursement, 6 ; Transaction clôturée, 7 : Paiement en attente (si tel est le statut – vous devez confirmer si le compte destinataire est normal), 8 : Confirmation du paiement/remboursement réussi – aucune autre opération n'est autorisée, 9. : Échec de la vérification, 10 : Confirmation synchrone/L'acheteur a payé - en attente que le vendeur expédie WAIT_SELLER_SEND_GOODS, 11 : Confirmation synchrone/Le vendeur a expédié, en attente que l'acheteur confirme WAIT_BUYER_CONFIRM_GOODS' APRÈS DESCRIPTION ;
2.1, essayez d'utiliser une requête à table unique, Évitez les JOIN multi-tables. Les conditions ON ultérieures de JOIN ne peuvent pas être jugées par OR, telles que SELECT A.C1,B.C2 FROM A,B ON(A.ID=B.PID OR B.TAG=A.TAR_GET OR les performances sont très faibles) ; , PS : Nous Certains modules fonctionnels en ligne qui s'ouvrent lentement sont causés par cette méthode d'écriture OR.
2.2, écrire l'instruction SQL de l'application et interdire toutes les opérations DDL, telles que : créer, supprimer, modifier, accorder, supprimer ; Si vous avez des besoins particuliers, veuillez consulter le DBA avant de l'utiliser.
2.3 Lors de l'écriture de SQL, assurez-vous de spécifier le nom de la table comme préfixe pour chaque champ. Par exemple, sélectionnez ub.id,ub.name dans user_business ub où ub.create_date > ''; Dans le fichier iBatis SQLMap, la variable de liaison est représentée par "#var_name" et la variable de substitution est représentée par "$var_name". $"; tous nécessitent un ordre dynamique. Lors de l'utilisation de variables de substitution pour des requêtes avec des conditions by, le contenu entrant possible doit être codé en dur dans le code sous forme d'énumérations, et il est interdit d'accepter du contenu entrant externe.
2.4 Si vous avez besoin d'une prise en charge des transactions, lorsque vous utilisez innodb, lors de la connexion à la base de données, désactivez d'abord la soumission automatique. : set auto_commit=0; Lors de l'écriture du code Java, lorsqu'il y a un traitement de transaction, après avoir exécuté insert, delete, update, commit dans le bloc de code d'exception, l'opération de restauration doit être écrite.
2.5, n'écrivez pas select * code similaire, vous devez préciser le nom du champ.
2.6, la date et les caractères de MySQL sont les mêmes, il n'est donc pas nécessaire de faire une conversion supplémentaire comme Oracle, comme :
sélectionnez e.username de l'employé e où e.birthday>='1998-12-31 11:30:45'.
2.7, évitez d'appliquer des fonctions aux champs dans les clauses Where, sauf s'il s'agit d'une exigence commerciale, mais vous devez consulter le DBA lors de l'écriture. Par exemple, DATE_FORMAT(p.PAYMENT_DATE, '%Y-%m-%d') >= DATE_FORMAT('2014-10-01', '%Y-%m-%d') doit être corrigé.
2.8, évitez le tri redondant lorsque vous utilisez le regroupement par, le tri sera effectué par défaut lorsque vous n'avez pas besoin de trier. , Vous pouvez utiliser order by null
2.9. deux tables sont incohérentes, vous devez ajouter une fonction de conversion de type d'un côté. Empêchez MySQL d'effectuer une conversion de type implicite.
2.10 Il est interdit d'effectuer des opérations SQL de mise à jour par lots sur la base de données dans l'application. Si nécessaire, veuillez envoyer un email et. laissez le DBA juger si cela est approprié. Dans le délai imparti, il est exécuté manuellement sur la bibliothèque IDC.
PS : Les modifications de la structure de la table doivent être initiées par l'équipe à laquelle la base de données table appartient.
1. Toutes les instructions SQL qui modifient la structure des tables exécutées dans l'environnement de test doivent être examinées par le DBA.
2, la suppression physique n'est pas autorisée, les procédures stockées, les déclencheurs et les vues ne sont pas autorisés, des circonstances particulières et des scénarios commerciaux s'appliquent pour DBA
PS : Toutes les spécifications sont adaptées à vos propres scénarios commerciaux. Tout le monde est invité à faire de meilleures suggestions. Je continuerai également à résumer et à développer les spécifications de bases de données les plus adaptées en fonction du développement commercial.
Ce qui précède est le contenu de la spécification préliminaire de conception de base de données MySQL V1.0, plus liée contenu Veuillez faire attention au site Web PHP chinois (www.php.cn) !