Modèles de conception de bases de données relationnelles?

Les motifs de conception sont généralement liés à la conception orientée object.
Existe-t-il des modèles de conception pour créer et programmer des bases de données relationnelles ?
De nombreux problèmes doivent sûrement avoir des solutions réutilisables.

Des exemples pourraient inclure des modèles pour la conception de tables, des procédures stockées, des déclencheurs, etc.

Existe-t-il un référentiel en ligne de tels modèles, similaire à martinfowler.com ?


Exemples de problèmes que les modèles pourraient résoudre:

  • Stockage des données hiérarchiques (par exemple, table unique avec type vs tables multiples avec clé 1: 1 et différences …)
  • Stocker des données avec une structure variable (par exemple, colonnes génériques vs xml vs colonne délimitée …)
  • Dénormaliser les données (comment le faire avec un impact minimal, etc …)

Il y a un livre dans la série Signature de Martin Fowler, appelé Refactoring Databases . Cela fournit une liste de techniques pour le refactoring des bases de données. Je ne peux pas dire que j’ai entendu une liste de modèles de bases de données.

Je recommande également fortement les modèles de modèles de données de David C. Hay et le suivi de la carte de métadonnées, qui s’appuie sur le premier et qui est beaucoup plus ambitieux et insortingguant. La Préface seule est éclairante.

La série de cahiers de ressources de modèles de données du volume 1 de Len Silverston, qui contient des modèles de données universellement applicables (employés, comptes, expédition, achats, etc.), contient également des modèles de données propres à chaque secteur. soins de santé, etc.), le volume 3 fournit des modèles de modèles de données.

Enfin, alors que ce livre traite ostensiblement de la modélisation d’objects et UML, Modeling in Color With UML de Peter Coad fournit un processus de modélisation d’entités piloté par “archétype”, partant du principe qu’il existe 4 archétypes de base de tout modèle object / données.

Voici un lien vers un homme qui a développé plusieurs centaines de schémas de firebase database gratuits.

http://www.databaseanswers.org/data_models/

Peut-être que si vous devez construire rapidement une firebase database, cela vous donnera un sharepoint départ en termes de tables et de relations dans un schéma donné. Gardez à l’esprit que vous devrez probablement modifier ce sharepoint départ. Je l’ai trouvé très utile.

Deuxièmement, SQL Server Magazine a une colonne occasionnelle appelée “The Data Modeler” qui est très éducative et contient souvent des schémas complets pour un système donné.

Les modèles de conception ne sont pas des solutions sortingvialement réutilisables.

Les modèles de conception sont réutilisables, par définition. Ce sont des modèles que vous détectez dans d’autres bonnes solutions.

Un motif n’est pas sortingvialement réutilisable. Vous pouvez toutefois implémenter votre conception en aval en suivant le modèle.

Les modèles de conception relationnelle incluent des éléments tels que:

  1. Relations un à plusieurs relations (maître-détail, parent-enfant) utilisant une clé étrangère.

  2. Relations plusieurs-à-plusieurs avec une table de bridge.

  3. Relations un à un facultatives gérées avec des valeurs NULL dans la colonne FK.

  4. Star-Schema: Dimension and Fact, conception OLAP.

  5. Conception OLTP entièrement normalisée.

  6. Plusieurs colonnes de recherche indexées dans une dimension.

  7. “Table de consultation” qui contient la valeur PK, la description et la ou les valeurs de code utilisées par une ou plusieurs applications. Pourquoi avoir du code? Je ne sais pas, mais quand ils doivent être utilisés, c’est une façon de gérer les codes.

  8. Uni-table. [Certains appellent cela un anti-modèle; c’est un modèle, parfois c’est mauvais, parfois c’est bon.] Ceci est un tableau avec beaucoup de choses pré-jointes qui viole les deuxième et troisième formes normales.

  9. Table de tableau. C’est une table qui viole la première forme normale en ayant un tableau ou une séquence de valeurs dans les colonnes.

  10. Base de données à usage mixte. Il s’agit d’une firebase database normalisée pour le traitement des transactions, mais avec de nombreux index supplémentaires pour la génération de rapports et l’parsing. C’est un anti-pattern – ne fais pas ça. Les gens le font quand même, alors c’est toujours un modèle.

La plupart des gens qui conçoivent des bases de données peuvent facilement décrocher une demi-douzaine de personnes. Ce sont des modèles de conception qu’ils utilisent régulièrement.

Et cela n’inclut pas les modes d’administration et d’exploitation opérationnels et de gestion.

Consultez ce blog – Le programmeur de firebase database .

Il décrit certains modèles de firebase database .

Les livres de Joe Celko sont excellents pour ce genre de choses, en particulier “SQL for Smarties”. Il a des solutions innovantes aux problèmes communs, dont la plupart sont des modèles de conception réutilisables.

http://www.celko.com/books.htm

AskTom est probablement la ressource la plus utile sur les meilleures pratiques concernant les bases de données Oracle. (Je tape habituellement “asktom” comme premier mot d’une requête google sur un sujet particulier)

Je ne pense pas qu’il soit vraiment approprié de parler de modèles de conception avec des bases de données relationnelles. Les bases de données relationnelles sont déjà l’application d’un “modèle de conception” à un problème (le problème étant “comment représenter, stocker et travailler avec des données tout en conservant leur intégrité”, et la conception en tant que modèle relationnel). Les autres approches (généralement considérées comme obsolètes) sont les modèles de navigation et hiérarchiques (et bien sûr, il en existe bien d’autres).

Cela dit, vous pourriez considérer le “Data Warehousing” comme un “modèle” ou une approche quelque peu distinct dans la conception de la firebase database. En particulier, vous pourriez être intéressé par le schéma Star .

Après de nombreuses années de développement de bases de données, je peux affirmer qu’il ya des problèmes à résoudre avant de commencer:

des questions:

  • Voulez-vous utiliser à l’avenir un autre SGBD? Si oui, n’utilise pas les fonctions SQL du SGBD courant. Supprimez la logique dans votre application.

N’utilise pas:

  • espaces blancs dans les noms de table et les noms de colonne
  • Caractères non ascii dans les noms de table et de colonne
  • liaison à une minuscule ou une majuscule spécifique. Et n’utilisez jamais 2 tables ou colonnes qui ne diffèrent que par des minuscules et des majuscules.
  • n’utilise pas les mots-clés SQL pour les noms de tables ou de colonnes comme “FROM”, “BETWEEN”, “DELETE”, etc.

recommandations:

  • Utilisez NVARCHAR ou des équivalents pour la prise en charge unicode, alors vous n’avez aucun problème avec les pages de code.
  • Donnez un nom unique à chaque colonne. Cela facilite la jointure pour sélectionner la colonne. Il est très difficile que chaque table ait une colonne “ID” ou “Nom” ou “Description”. Utilisez XyzID et AbcID.
  • Utilisez un regroupement de ressources ou est égal à des expressions SQL complexes. Cela facilite le passage à un autre SGBD.
  • Ne lance pas de disque dur sur un type de données. Un autre SGBD ne peut pas avoir ce type de données. Par exemple, Oracle daes n’a pas de numéro SMALLINT.

J’espère que c’est un bon sharepoint départ.

Votre question est un peu vague, mais je suppose que UPSERT pourrait être considéré comme un modèle de conception. Pour les langages qui n’implémentent pas MERGE , il existe un certain nombre d’alternatives pour résoudre le problème (si une ligne appropriée existe, UPDATE ; sinon INSERT ).

Cela dépend de ce que vous entendez par un motif. Si vous pensez à Person / Company / Transaction / Product et autres, alors oui – de nombreux schémas de firebase database génériques sont déjà disponibles.

Si vous pensez à Factory, Singleton … alors non – vous n’avez besoin d’aucun de ces éléments car ils sont trop faibles pour la programmation de la firebase database.

Si vous envisagez de nommer un object de firebase database, alors c’est dans la catégorie des conventions, pas dans la conception en soi.

BTW, S.Lott, les relations un-à-plusieurs et plusieurs-à-plusieurs ne sont pas des “patterns”. Ce sont les éléments de base du modèle relationnel.

Ce livre a l’air intéressant

 Title: Data Patterns By: Microsoft Corporation Publisher: Microsoft Press Pub. Date: December 21, 2004 Print ISBN-13: 978-0-7356-2200-5