Un guide du débutant pour la conception de bases de données SQL

Connaissez-vous une bonne source pour apprendre à concevoir des solutions SQL?

Au-delà de la syntaxe de base, je recherche quelque chose pour m’aider à comprendre:

  1. Quelles tables construire et comment les relier
  2. Comment concevoir pour différentes échelles (petite application cliente sur un énorme site Web dissortingbué)
  3. Comment écrire des requêtes SQL efficaces / efficaces / élégantes

J’ai commencé avec ce livre: Conception de bases de données relationnelles clairement expliquées (La série Morgan Kaufmann dans les systèmes de gestion de données) (Paperback) par Jan L. Harrington et l’a trouvé très clair et utile

et comme vous vous en sortez plus vite, celui-ci était bon aussi

Je pense que le SQL et la conception de bases de données sont des compétences différentes (mais complémentaires).

J’ai commencé avec cet article

http://fr.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html

C’est assez concis comparé à la lecture d’un livre entier et il explique très bien les bases de la conception de bases de données (normalisation, types de relations).

L’expérience compte beaucoup, mais en termes de conception de tables, vous pouvez apprendre beaucoup sur la manière dont les ORM comme Hibernate et Grails fonctionnent pour voir pourquoi ils font les choses. En outre:

  1. Gardez différents types de données séparés – ne stockez pas les adresses dans votre table de commande, par exemple, un lien vers une adresse dans une table d’adresses distincte.

  2. Personnellement, j’aime avoir une clé de substitution entière ou longue sur chaque table (qui contient des données, pas celles qui lient différentes tables ensemble, relations e, g., M: n) qui est la clé primaire.

  3. J’aime aussi avoir une colonne d’horodatage créée et modifiée.

  4. Assurez-vous que chaque colonne que vous faites “où column = val” dans une 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.

  5. Configurez vos clés étrangères. Configurez également les règles ON DELETE et ON MODIFY, le cas échéant, en cascade ou en null, selon la structure de votre object (vous n’avez donc qu’à supprimer une seule fois en tête de votre arbre d’object et tous les sous-objects de cet object obtiennent enlevé automatiquement).

  6. Si vous voulez modulariser votre code, vous voudrez peut-être modulariser votre schéma de firebase database – par exemple, il s’agit de la zone “clients”, il s’agit de la zone “commandes” et de la zone “produits”. entre eux, même s’ils sont des relations 1: n, et peut-être dupliquer les informations importantes (par exemple, dupliquer le nom du produit, le code, le prix dans votre tableau order_details). Lisez sur la normalisation.

  7. 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!

Head First SQL est une excellente introduction.

Cela fait un moment que je ne l’ai pas lu (donc, je ne suis pas certain de son importance), mais si je me souviens bien, le livre SQL pour Smarties de Joe Celko fournit beaucoup d’informations sur l’écriture de requêtes élégantes, efficaces et efficaces. .

Ce sont des questions qui, dans mon opinion, nécessitent des connaissances différentes de différents domaines.

  1. Vous ne pouvez pas savoir à l’avance “quelles” tables à construire, vous devez connaître le problème que vous avez à résoudre et concevoir le schéma en conséquence;
  2. Ceci est un mélange de décision de conception de firebase database et de capacités personnalisées de votre fournisseur de firebase database (c.-à-d. mise à l’échelle (réplication, partitionnement des données, etc.);
  3. encore une fois, presque tous les rdbms ont un “dialecte” particulier du langage SQL, donc si vous voulez des requêtes efficaces, vous devez apprendre ce dialecte particulier –btw. probablement écrire une requête élégante et efficace est un gros problème: élégance et efficacité sont souvent des objectives contradictoires …

Cela dit, peut-être que vous voulez lire certains livres, personnellement, j’ai utilisé ce livre dans mon cours universitaire de firebase database (et en ai trouvé un correct, mais je n’ai pas lu d’autres livres dans ce domaine) quelques bons livres en conception de firebase database).