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:
- Quelles tables créer et comment les lier
- Comment concevoir pour différentes échelles (petite application client vers un énorme site Web distribué)
- Comment écrire des requêtes SQL efficaces / efficientes / élégantes
sql
database
database-design
scalability
ripper234
la source
la source
Réponses:
J'ai commencé avec ce livre: Relational Database Design Clearly Explained (The Morgan Kaufmann Series in Data Management Systems) (Broché) par Jan L. Harrington et je l'ai trouvé très clair et utile
et au fur et à mesure que vous vous mettiez à niveau, celui-ci était également bon Systèmes de base de données: une approche pratique de la conception, de la mise en œuvre et de la gestion (International Computer Science Series )
Je pense que SQL et la conception de bases de données sont des compétences différentes (mais complémentaires).
la source
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).
la source
L'expérience compte pour beaucoup, mais en termes de conception de table, vous pouvez apprendre beaucoup de la façon dont les ORM comme Hibernate et Grails fonctionnent pour voir pourquoi ils font les choses. En outre:
Gardez différents types de données séparés - ne stockez pas les adresses dans votre table de commande, créez un lien vers une adresse dans une table d'adresses séparée, par exemple.
Personnellement, j'aime avoir un entier ou une clé de substitution longue sur chaque table (qui contient des données, pas celles qui relient différentes tables, par exemple, des relations m: n) qui est la clé primaire.
J'aime aussi avoir une colonne d'horodatage créée et modifiée.
Assurez-vous que chaque colonne que vous faites "where column = val" dans n'importe quelle 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, soit en cascade, soit à null, en fonction de la structure de votre objet (vous n'avez donc besoin de supprimer qu'une seule fois à la `` tête '' de votre arborescence d'objets, et tous les sous-objets de cet objet obtiennent supprimé automatiquement).
Si vous souhaitez modulariser votre code, vous voudrez peut-être modulariser votre schéma de base de données - par exemple, c'est la zone "clients", c'est la zone "commandes", et c'est la zone "produits", et utiliser des tables de jointure / liaison entre eux, même s'il s'agit de relations 1: n, et peut-être dupliquer les informations importantes (c'est-à-dire dupliquer le nom du produit, le code, le prix dans votre table order_details). Renseignez-vous sur la normalisation.
Quelqu'un d'autre recommandera exactement le contraire pour tout ou partie de ce qui précède: p - jamais une vraie façon de faire certaines choses hein!
la source
explain analyze
si un index est un avantage.J'ai vraiment aimé cet article. Http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
la source
Head First SQL est une excellente introduction.
la source
Ce sont des questions qui, à mon avis, exigent des connaissances différentes de différents domaines.
Cela dit, vous voulez peut-être lire des livres, personnellement, j'ai utilisé ce livre dans mon cours universitaire de base de données (et j'en ai trouvé un décent, mais je n'ai pas lu d'autres livres dans ce domaine, donc mon conseil est de vérifier quelques bons livres sur la conception de bases de données).
la source
Cela fait un moment que je ne l'ai pas lu (donc, je ne sais pas dans quelle mesure il est encore pertinent), mais je me souviens que le livre SQL pour Smarties de Joe Celko fournit beaucoup d'informations sur l'écriture de requêtes élégantes, efficaces et efficientes. .
la source