Connaissez-vous une bonne source pour apprendre à concevoir des solutions SQL?
Au-delà de la syntaxe de base du langage, je cherche quelque chose pour m'aider à comprendre:
J'ai commencé avec ce livre: La conception de base de données relationnelle clairement expliquée (La série Morgan Kaufmann dans les systèmes de gestion de données) (Broché) de Jan L. Harrington et l'a trouvé très clair et utile
et au fur et à mesure que vous vous y mettiez, celui-ci était également bon Systèmes de base de données: une approche pratique de la conception, de la mise en oeuvre et de la gestion (Série internationale de la science informatique) (Paperback)
Je pense que SQL et la conception de la base de données sont des compétences différentes (mais complémentaires).
J'ai commencé avec cet article
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
C'est assez concis par rapport à la lecture d'un livre entier et cela explique très bien les bases de la conception de bases de données (normalisation, types de relations).
L'expérience compte pour beaucoup, mais en termes de conception de tables, vous pouvez apprendre beaucoup de choses sur la façon dont les ORM comme Hibernate et Grails fonctionnent pour comprendre pourquoi ils font les choses. En outre:
Conservez les différents types de données séparément - ne stockez pas les adresses dans votre table de commandes, par exemple, créez un lien vers une adresse dans une table d'adresses distincte.
Personnellement, j'aime bien avoir une clé de substitution entière ou longue sur chaque table (qui contient des données, pas celles qui lient différentes tables, par exemple, des relations m: n) qui constitue la clé primaire.
J'aime aussi avoir une colonne timestamp créée et modifiée.
Assurez-vous que chaque colonne que vous faites "où colonne = val" dans toute requête a un index. Peut-être pas l'index le plus parfait au monde pour le type de données, mais au moins un index.
Configurez vos clés étrangères. Configurez également les règles ON DELETE et ON MODIFY, le cas échéant, en cascade ou en définissant la valeur null, en fonction de la structure de votre objet (vous n'avez donc besoin de supprimer qu'une seule fois en "tête" de votre arborescence, et tous supprimé automatiquement).
Si vous souhaitez modulariser votre code, vous pouvez également modulariser votre schéma de base de données. Par exemple, il s’agit de la zone "clients", de la zone "commandes", de la zone "produits" et de l’utilisation des tables join/link. entre eux, même si ce sont des relations 1: n, et dupliquez peut-être les informations importantes (par exemple, dupliquez le nom du produit, le code, le prix dans votre table order_details). Lisez sur la normalisation.
Quelqu'un d'autre recommandera exactement le contraire pour tout ou partie de ce qui précède: p - jamais une seule façon de faire certaines choses, hein!
J'ai vraiment aimé cet article .. http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
Head First SQL est une excellente introduction.
Cela fait longtemps que je ne l'ai pas lu (donc, je ne sais pas dans quelle mesure il est toujours d'actualité), mais je me souviens que le livre SQL for Smarties de Joe Celko fournit de nombreuses informations sur la rédaction de requêtes élégantes, efficaces et efficaces. .
Ce sont des questions qui, à mon avis, exigent des connaissances différentes dans différents domaines.
Cela dit, vous voudrez peut-être lire quelques livres, que j’ai personnellement utilisés ce livre dans mon cours universitaire de base de données (et que j’en ai trouvé un bon, mais je n’ai pas lu d’autres livres dans ce domaine, donc mon conseil est de vérifier quelques bons livres dans la conception de base de données).