Frage

Entwurfsmuster beziehen sich normalerweise auf objektorientiertes Design.
Gibt es Designmuster zum Erstellen und Programmieren relationale Datenbanken?
Für viele Probleme müssen sicherlich wiederverwendbare Lösungen gefunden werden.

Beispiele wären Muster für Tabellendesign, gespeicherte Prozeduren, Trigger usw.

Gibt es ein Online-Repository für solche Muster, ähnlich wie martinfowler.com?


Beispiele für Probleme, die Muster lösen könnten:

  • Speicherung hierarchischer Daten (z. B.einzelne Tabelle mit Typ vs. mehrere Tabellen mit 1:1-Schlüssel und Unterschieden ...)
  • Speichern von Daten mit variabler Struktur (z. B.generische Spalten vs. XML vs. getrennte Spalte ...)
  • Daten denormalisieren (wie man es mit minimalen Auswirkungen macht usw.)
War es hilfreich?

Lösung

Es ist ein Buch, in Martin Fowler Signature Series genannt Refactoring Datenbanken . Das stellt eine Liste von Techniken für Refactoring-Datenbanken. Ich kann nicht sagen, dass ich so viel eine Liste der Datenbank-Muster gehört haben.

würde ich auch sehr David C. Hay empfehlen Data Model Patterns und das Follow-up A Metadata Map , die auf dem ersten aufbaut und ist weit ehrgeiziger und faszinierend. Das Vorwort allein ist aufschlussreich.

Auch ein großartiger Ort für einige Pre-Dosen Datenbank Modelle zu suchen ist Len Silverston der Data Model Resource Book Series Volume 1 enthält universell einsetzbare Datenmodelle (Mitarbeiter, Konten, Versand, Einkauf, etc.), Volume 2 enthält branchenspezifische Datenmodelle (Rechnungswesen, Gesundheitswesen usw.), Volume 3 Muster-Datenmodell zur Verfügung stellt.

Schließlich, während dieses Buch ist angeblich über UML und Objektmodellierung, Peter Coad Modellierung in Farbe mit UML stellt eine „Urform“ gesteuerter Prozess des Modellierens Entität von der Voraussetzung ausgehend, dass es 4-Kern Urformen eines Objekts / Datenmodell sind

Andere Tipps

Hier ist ein Link zu einem Herrn, der mehrere hundert freie Datenbank-Schemata entwickelt hat.

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

Vielleicht, wenn Sie eine db bauen schnell dies wird Ihnen in einem bestimmten Schema einen Ausgangspunkt in Bezug auf die Tabellen und Beziehungen geben. Denken Sie daran, werden Sie wahrscheinlich benötigen diesen Startpunkt zu ändern. Ich habe es sehr nützlich erwiesen.

Zum anderen SQL Server Magazine haben eine gelegentliche Spalte „Der Data Modeler“ genannt, was sehr lehrreich und enthalten oft komplette Schemata für ein bestimmtes System.

Entwurfsmuster sind nicht triviale Weise wiederverwendbare Lösungen.

Entwurfsmuster sind wiederverwendbar, per Definition. Sie sind Muster Sie erkennen in anderen guten Lösungen.

Ein Muster ist nicht triviale Weise wiederverwendbar. Sie können jedoch Ihr Down-Design nach dem Muster implementieren.

Relational Design prasselt gehören Dinge wie:

  1. One-to-Many-Beziehungen (Master-Detail, Eltern-Kind) Beziehungen einen Fremdschlüssel verwendet wird.

  2. Viele-zu-Viele-Beziehungen mit einer Brücke Tabelle.

  3. Optional Eins-zu-eins-Beziehungen mit NULL-Werten in der FK-Säule geführt werden.

  4. Star-Schema:. Dimension und Fact, OLAP Design

  5. Voll normalisieren OLTP-Design.

  6. Mehr Indexsuche Spalten in einer Dimension.

  7. „Lookup-Tabelle“, die von einer oder mehreren Anwendungen verwendet, PK, Beschreibung und Codewert (e) enthält. Warum haben Code? Ich weiß es nicht, aber wenn sie verwendet werden müssen, ist dies ein Weg, um die Codes zu verwalten.

  8. Uni-Tabelle. [Diese Manche nennen ein Anti-Muster; es ist ein Muster, manchmal ist es schlecht, manchmal ist es gut.] Dies ist eine Tabelle mit vielen vorher verbundenen Sachen, die zweite und die dritte Normalform verletzt.

  9. Array-Tabelle. Dies ist eine Tabelle, die durch, die eine Anordnung oder Sequenz von Werten in den Spalten.

  10. erste Normalform verletzt
  11. Mixed-Use-Datenbank. Dies ist eine Datenbank für die Transaktionsverarbeitung normalisiert, aber mit vielen zusätzlichen Indizes für Reporting und Analyse. Es ist ein Anti-Muster - dies nicht tun. Menschen tun es trotzdem, so ist es noch ein Muster.

Die meisten Leute, die Design-Datenbanken leicht ein halbes Dutzend rattern kann: „Es ist eine weitere dieser“; diese sind Entwurfsmuster, die sie auf einer regelmäßigen Basis zu verwenden.

Und das beinhaltet nicht administrative und operative Nutzungsmuster und Management.

Dieses Blog Check out -. Der Datenbank-Programmierer

Er beschreibt einige Datenbank Muster .

Joe Celko Bücher sind hervorragend für diese Art von Sachen, insbesondere „SQL für Smarties“. Er hat einige innovative Lösungen für gemeinsame Probleme, von denen die meisten Muster wiederverwendbare Design sind.

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

AskTom ist wahrscheinlich die am meisten nützliche Ressource auf Best Practices auf Oracle-DBs. (I in der Regel einfach „AskTom“ als das erste Wort von einer Google-Abfrage zu einem bestimmten Thema)

Ich glaube nicht, es wirklich angemessen ist von Entwurfsmustern mit relationalen Datenbanken zu sprechen. Relationale Datenbanken sind bereits die Anwendung einer „Entwurfsmuster“ auf ein Problem (das Problem zu sein „wie zu repräsentieren, zu speichern und mit den Daten arbeiten, während ihre Integrität beibehalten wird“, und das Design wird das relationale Modell). Andere approches (allgemein als veraltet) sind die Navigations und hierarchische Modelle (und ich bin nure viele andere existieren).

Having said that, könnten Sie "Data Warehousing" als etwas getrennt "Muster" oder Ansatz in Datenbank-Design betrachten. Insbesondere könnte man bei der Lektüre über die Star-Schema rel="noreferrer">

Nach vielen Jahren der Datenbank-Entwicklung ich sagen kann, es gibt einige, nicht geht und einige Frage, die Sie, bevor Sie antworten sollten beginnen:

Fragen:

  • Möchten Sie in Zukunft ein anderes DBMS verwenden? Wenn ja, dann nicht verwenden, um spezielles SQL-Material des aktuellen DBMS. Entfernen Sie Logik in Ihrer Anwendung.

Nicht verwenden:

  • White Spaces in Tabellennamen und Spaltennamen
  • Non Ascii-Zeichen in Tabellen- und Spaltennamen
  • Bindung an einen bestimmten Kleinschreibung oder Großbuchstaben. Und nie zwei Tabellen oder Spalten verwenden, die nur mit Kleinbuchstaben unterscheiden und Großbuchstaben.
  • SQL-Schlüsselwörter für Tabellen oder Spalten Namen nicht wie „AUS“, „zwischen“, „LÖSCHEN“, usw.

recomendations:

  • Verwenden Sie NVARCHAR oder Äquivalente für Unicode-Unterstützung, dann haben Sie keine Probleme mit Codepages.
  • Geben Sie jeden Spalte einen eindeutigen Namen. Diese machen es easer auf beitreten die Spalte auszuwählen. Es ist sehr schwierig, wenn jede Tabelle eine Spalte „ID“ oder „Namen“ oder „Beschreibung“ hat. Verwenden Sie XyzID und AbcID.
  • Verwenden Sie ein Ressourcenbündel oder gleich für komplexe SQL-Ausdrücke. Es macht es einleuchtender zu einem anderen DBMS zu wechseln.
  • Ist gegossen schwer, nicht auf beliebige Datentypen. Ein anderes DBMS kann diesen Datentyp hat. Zum Beispiel Daes kein SMALLINT nur eine Nummer haben Oracle.

Ich hoffe, dass dies ein guter Ausgangspunkt.

Ihre Frage ist ein wenig vage, aber ich nehme an UPSERT ein Entwurfsmuster in Betracht gezogen werden könnte . Für Sprachen, die MERGE nicht implementieren, href="https://stackoverflow.com/questions/108403/solutions-for-insert-or-update-on-sql-server"> (wenn eine geeignete Zeilen besteht, UPDATE, sonst INSERT). existieren

Hängt davon ab, was Sie unter einem Muster verstehen.Wenn Sie an Person/Firma/Transaktion/Produkt usw. denken, dann ja – es sind bereits viele generische Datenbankschemata verfügbar.

Wenn Sie an Factory, Singleton denken ...Dann nein – Sie brauchen keines davon, da sie für die DB-Programmierung zu niedrig sind.

Wenn Sie über die Benennung von Datenbankobjekten nachdenken, dann gehört dies zur Kategorie der Konventionen und nicht zum Design an sich.

Übrigens, S.Lott, Eins-zu-Viele- und Viele-zu-Viele-Beziehungen sind keine „Muster“.Sie sind die Grundbausteine ​​des relationalen Modells.

Dieses Buch sieht interessant

Title: Data Patterns
By: Microsoft Corporation
Publisher: Microsoft Press
Pub. Date: December 21, 2004
Print ISBN-13: 978-0-7356-2200-5
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top