Im Vorfeld des Starts der nächsten Studiengruppe für den Kurs haben wir ein kleines, autorisiertes Material mit wichtigen Tipps zur Datenbankkonstruktion vorbereitet. Wir hoffen, dass dieses Material für Sie nützlich sein wird.

Datenbanken sind überall: von einfachsten Blogs und Verzeichnissen bis hin zu zuverlässigen Informationssystemen und großen sozialen Netzwerken. Es ist nicht so wichtig, ob die Datenbank einfach oder komplex ist, viel entscheidender ist es, sie richtig zu entwerfen. Wenn die Datenbank gedankenlos und ohne klares Verständnis der Zielsetzung entworfen wird, ist sie nicht nur ineffektiv, sondern die weitere Arbeit mit der Datenbank wird zu echter Qual, einem undurchdringlichen Dickicht für die Nutzer. Hier sind einige Tipps zur Datenbankkonstruktion, die helfen, ein nützliches und benutzerfreundliches Produkt zu erstellen.
1. Bestimmen Sie, wofür die Tabelle gedacht ist und wie ihre Struktur aussieht

Heutzutage helfen Entwicklungsmethoden wie Scrum oder RAD (Rapid Application Development) IT-Teams, Datenbanken schnell zu entwickeln. Doch in der Hektik ist die Versuchung groß, sofort mit dem Aufbau der Datenbank zu beginnen, ohne genau zu wissen, was das Ziel ist und welche Endergebnisse erzielt werden sollen.
Es scheint, als wäre das Team auf schnelle und effiziente Arbeit ausgerichtet, aber das ist eine Illusion. Je weiter und schneller man in das Projekt eintaucht, desto mehr Zeit wird benötigt, um Fehler im Datenbankprojekt zu identifizieren und zu beheben.
Deshalb ist das erste, was geklärt werden muss, das Ziel für Ihre Datenbank zu definieren. Für welche Art von Anwendung wird die Datenbank entwickelt? Muss der Benutzer nur mit den Eintragungen arbeiten und ist es wichtig, auf Transaktionen zu achten oder interessiert er sich mehr für Datenanalysen? Wo soll die Datenbank gehostet werden? Soll sie das Kundenverhalten verfolgen oder nur die Beziehungen zwischen ihnen verwalten?
Je früher das Designteam diese Fragen beantwortet, desto reibungsloser wird der Prozess der Datenbankgestaltung verlaufen.
2. Welche Daten sollten für die Speicherung ausgewählt werden?

Planen Sie im Voraus. Denken Sie darüber nach, was die Website oder das System in Zukunft tun wird, für das die Datenbank entworfen wird. Es ist wichtig, über die einfachen Anforderungen des technischen Lastenhefts hinauszugehen. Denken Sie bitte nicht sofort an alle möglichen Datentypen, die der Benutzer jemals speichern wird. Überlegen Sie eher, ob die Benutzer Beiträge schreiben, Dokumente oder Fotos hochladen oder Nachrichten austauschen können. Wenn ja, sollte in der Datenbank Platz dafür vorgesehen werden.
Arbeiten Sie mit dem Team, der Abteilung oder der Organisation zusammen, für die die geplante Datenbank in Zukunft unterstützt wird. Kommunizieren Sie mit Menschen auf verschiedenen Ebenen, von Kundenbetreuern bis hin zu Abteilungsleitern. Auf diese Weise erhalten Sie durch Feedback ein klares Verständnis der Anforderungen des Unternehmens.
Unweigerlich werden die Bedürfnisse der Benutzer selbst innerhalb einer Abteilung in Konflikt geraten. Wenn Sie damit konfrontiert werden, scheuen Sie sich nicht, auf Ihre eigene Erfahrung zu vertrauen und einen Kompromiss zu finden, der alle Seiten zufriedenstellt und das Endziel der Datenbank erfüllt. Seien Sie sich sicher: In Zukunft wird Ihnen das +100500 in Karma und eine Menge Kekse bringen.
3. Modellieren Sie Daten sorgfältig

Es gibt mehrere Schlüsselpunkte, auf die Sie beim Datenmodellieren achten sollten. Wie wir bereits erwähnt haben, hängt die Art der verwendeten Methoden beim Modellieren von dem Zweck der Datenbank ab. Wenn wir eine Datenbank für die schnelle Verarbeitung von Datensätzen (OLTP) entwerfen, also zum Erstellen, Bearbeiten und Löschen von Daten, verwenden wir Transaktionsmodellentwicklung. Sollte die Datenbank jedoch relational sein, ist es am besten, mehrdimensionales Modellieren anzuwenden.
Beim Modellieren werden konzeptionelle (CDM), physikalische (PDM) und logische (LDM) Datenmodelle erstellt.
Konzeptionelle Modelle beschreiben die Entitäten und Datentypen, die sie enthalten, sowie die Beziehungen zwischen ihnen. Teilen Sie Ihre Daten in logische Teile auf – das erleichtert vieles.
Das Wichtigste ist das Maß, übertreiben Sie es nicht.
Wenn eine Entität sehr schwierig mit einem Wort oder Satz zu klassifizieren ist, ist es an der Zeit, Untertypen (Unterentitäten) zu verwenden.
Wenn jedoch eine Entität ein eigenes Leben führt, Attribute hat, die ihr Verhalten und ihr Aussehen beschreiben, sowie Beziehungen zu anderen Objekten, kann man nicht nur den Untertyp, sondern auch den Supertyp (Elternentität) problemlos verwenden.
Wenn man diese Regel missachtet, werden andere Entwickler in Ihrem Modell verwirrt und werden die Daten und Regeln, wie sie zu sammeln sind, nicht vollständig verstehen.
Konzeptionelle Modelle werden durch logische Modelle umgesetzt. Diese Modelle dienen wie eine Straßenkarte für das Design der physischen Datenbank. In dem logischen Modell werden Geschäftsdatenentitäten hervorgehoben, Datentypen definiert und die Statusschlüsselregeln festgelegt, die die Beziehungen zwischen den Daten regeln.
Dann wird das logische Datenmodell mit der im Voraus ausgewählten DBMS-Plattform (System für Datenbankmanagement) abgeglichen, und es entsteht ein physisches Modell. Es beschreibt die Art der physischen Speicherung von Daten.
4. Verwenden Sie geeignete Datentypen

Die Verwendung falscher Datentypen kann zu ungenaueren Daten, Schwierigkeiten beim Verknüpfen von Tabellen, beim Synchronisieren von Attributen und zur Aufblähung der Dateigrößen führen.
Um die Integrität der Informationen zu gewährleisten, sollte ein Attribut nur akzeptable Datentypen enthalten. Wenn das Alter in die Datenbank eingegeben wird, stellen Sie sicher, dass in der Spalte ganze Zahlen mit maximal 3 Ziffern gespeichert werden.
Erstellen Sie möglichst wenige leere Spalten mit dem Wert NULL. Wenn Sie alle Spalten als NULL erstellen, ist das ein grober Fehler. Wenn Sie hingegen eine leere Spalte für die Ausführung einer bestimmten Geschäftsanforderung benötigen, wenn die Daten unbekannt sind oder noch keinen Sinn ergeben, können Sie diese problemlos erstellen. Schließlich können wir die Spalten „Sterbedatum“ oder „Austrittsdatum“ nicht im Voraus ausfüllen, wir sind keine Wahrsager, die ins Blaue hinein tippen :-).
Die meisten Modellierungssoftware (ER/Studio, MySQL Workbench, SQL DBM, gliffy.com) ermöglicht es, Prototypen von Datenbereichen zu erstellen. Damit wird sichergestellt, dass nicht nur der richtige Datentyp, die Logik der Anwendung und eine gute Leistung gegeben sind, sondern auch, dass eine Wertzuweisung erforderlich ist.
5. Bevorzugen Sie natürliche

Wenn Sie entscheiden, welche Spalte in der Tabelle als Schlüssel verwendet werden soll, achten Sie immer darauf, welche Felder der Benutzer bearbeiten kann. Wählen Sie niemals diese als Schlüssel – das ist eine schlechte Idee. Es kann alles Mögliche passieren, und Sie müssen die Einzigartigkeit garantieren.
Am besten verwenden Sie einen natürlichen oder Geschäftsschlüssel (natural key). Er hat eine bedeutungsvolle Relevanz, so vermeiden Sie Duplikate in der Datenbank.
Es sei denn, der Geschäftsschlüssel ist nicht einzigartig (Vorname, Nachname, Position) und kommt in verschiedenen Zeilen der Tabelle vor oder muss geändert werden, sollte der Primärschlüssel einen generierten künstlichen oder surrogate Schlüssel (artificial key) zugewiesen bekommen.
6. Normalisieren Sie in Maßen

Um die Daten in der Datenbank effizient zu organisieren, müssen Sie einer Reihe von Empfehlungen folgen und die Datenbank normalisieren. Es gibt fünf normale Formen, denen Sie folgen sollten.
Mit Hilfe der Normalisierung vermeiden Sie Redundanzen und gewährleisten die Integrität der Daten, die in der Anwendung oder auf der Website verwendet werden.
Wie immer, alles sollte in Maßen sein, auch die Normalisierung. Wenn es in der Datenbank zu viele Tabellen mit denselben einzigartigen Schlüsseln gibt, haben Sie übertrieben und die Datenbank übernormalisiert. Übermäßige Normalisierung wirkt sich negativ auf die Leistung der Datenbank aus.
7. Testen Sie frühzeitig, testen Sie häufig

Der Testplan und angemessene Tests sollten Teil des Designs der Datenbank sein.
Es ist am besten, die Datenbank durch Continuous Integration (kontinuierliche Integration) zu testen. Modellieren Sie das Szenario 'Ein Tag im Leben der Datenbank' und prüfen Sie, ob alle Randfälle behandelt werden und welche Benutzerinteraktionen wahrscheinlich sind. Je früher Sie Bugs finden, desto mehr Zeit und Geld sparen Sie.
Das sind nur sieben Tipps, mit denen Sie eine hervorragende Datenbank in Bezug auf Leistung und Effizienz entwerfen können. Wenn Sie ihnen folgen, vermeiden Sie die meisten Kopfschmerzen in der Zukunft. Diese Tipps sind nur die Spitze des Eisbergs im Datenbankdesign. Es gibt eine riesige Anzahl von Lifehacks. Welche verwenden Sie?
Quelle: habr.com
