Database
 sql >> Datenbank >  >> RDS >> Database

Welche Fähigkeiten und Kenntnisse benötigen Datenbankdesigner?

Fühlen Sie sich überwältigt von der Zeit, die Sie benötigen, um Datenbankdesigner zu werden? Lesen Sie mehr über die wesentlichen Fähigkeiten und Talente, die Sie benötigen – es ist nicht so schlimm!

Wenn Sie mit dem Einkaufswagen in der einen und der Einkaufsliste in der anderen Hand durch die Gänge des Supermarkts gehen, was denken Sie dann? Wenn Sie wie ich sind, stellen Sie sich vor, wie Sie die Organisation der Regale verbessern können, damit Ihr wöchentlicher Einkauf weniger Zeit in Anspruch nimmt. Oder vielleicht verspüren Sie den gleichen Wunsch, Informationen zu organisieren und zu strukturieren, wenn ein Freund Ihnen seine große Zeitschriftensammlung zeigt. Oder vielleicht fällt es auf, wenn Sie Ihre Playlists verwalten, um sie besser an Ihre Vorlieben anzupassen. Wenn Sie durchs Leben gehen und darüber nachdenken, wie Sie die Realität in Bezug auf Entitäten, Attribute und Beziehungen darstellen können, dann ist Ihre Berufung ein Datenbankmodellierer.

Vielleicht sind Sie nicht ganz so extrem, aber die Idee, Datenbankdesigner beruflich zu verfolgen, reizt Sie trotzdem. In jedem Fall müssen Sie ein paar neue Fähigkeiten beherrschen. Einige von ihnen sind rein technisch; Sie können diese Fähigkeiten durch Studium oder Lektüre erlernen und durch Berufserfahrung vertiefen. Andere Fähigkeiten umfassen nicht-technisches Wissen, das Sie durch Kurse, Blogartikel oder durch Beobachtung anderer erlernen können.

Hier ist eine Zusammenfassung der wesentlichen Kenntnisse und Fähigkeiten, die jeder Datenbankdesigner haben muss.

Hard Skills, die Datenbankdesigner benötigen

Hard Skills sind solche, die durch Studium erworben und durch Praxis verfeinert werden. Wenn Sie mit konkreten Nachweisen nachweisen können, dass Sie eine Hard Skill beherrschen, bedeutet dies, dass Sie in der Lage sind, jede Aufgabe auszuführen, die damit verbunden ist.

In Bezug auf Datenbankkenntnisse umfassen die Hard Skills die Grundlagen der Datenbanktheorie und die verschiedenen Techniken, mit denen theoretische Konzepte zur Lösung konkreter Probleme angewendet werden. Sehen wir uns die einzelnen Hard Skills an, die Datenbankdesigner benötigen.

Datenbanktheorie

Die Datenbanktheorie ist voll von abstrakten Konzepten, die schwer zu verstehen sein können, wenn sie nicht mit realen Fakten in Verbindung gebracht werden. Das relationale Modell, Domänen, Attribute, Relationen und Beziehungen, Primär- und Fremdschlüssel, Entitätsintegrität, referenzielle Integrität und Domänenbeschränkungen sind nur einige Beispiele. Wenn Sie noch komplexere Themen (wie relationale Algebra oder relationale Analysis) hinzufügen, fragen Sie sich vielleicht, ob es nicht besser wäre, einen Beruf zu wählen, der sich mit konkreten Dingen wie Gärtnern oder Gourmetkochen befasst.

Keine Panik. Gründliche Kenntnisse der Datenbanktheorie sind wichtig, wenn Sie vorhaben, College-Klassen zu unterrichten oder eine neue Art der Informationsorganisation zu erfinden. Aber um Datenbanken zu entwerfen, müssen Sie nur die theoretischen Konzepte beherrschen, die für die Lösung realer Probleme gelten. Das wichtigste – das ABC des Datenbankdesigns – ist das relationale Modell.

Das relationale Modell

College-Professoren werden Ihnen sagen, dass das relationale Modell ein Datenorganisationsmechanismus ist, der auf Mengentheorie und Prädikatenlogik basiert. Aber das wird Ihnen in Ihrer täglichen Arbeit als Datenbankmodellierer nicht viel nützen. In der Praxis müssen Sie wissen, dass das relationale Modell eine intuitive und unkomplizierte Art ist, Daten in Form von Tabellen zu organisieren – Relationen genannt – die aus Zeilen (auch Tupel genannt) bestehen. Jede Tabelle (oder Relation) wird durch ihre Attribute (oder Spalten) definiert.

Grundlegende Konzepte des relationalen Modells.

Alle Relationen sollten ein oder mehrere herausragende Attribute haben, die eine eindeutige Kennung für jedes Tupel darstellen. Im Datenbank-Slang ist das der Schlüssel der Tabelle. Nicht-Schlüsselattribute sind in dem Sinne schlüsselabhängig, dass jeder Schlüsselwert einen einzigen möglichen Wert für jedes Attribut bestimmt.

Stellen Sie sich eine Tabelle mit Fahrzeuginformationen vor, in der der Schlüssel das Nummernschild ist. Das Nummernschild bestimmt die Attribute jedes Fahrzeugs (wie Hersteller, Modell, Besitzer usw.), da die Regeln der Domäne verhindern, dass zwei verschiedene Fahrzeuge dasselbe Nummernschild verwenden.

Relationale Datenbanken

Relationale Datenbankverwaltungssysteme (RDBMS) implementieren das relationale Modell unter Beachtung seiner Prinzipien. Sie bieten Möglichkeiten, Informationen durch Abfragen abzurufen und Informationen durch Transaktionen zu aktualisieren. Damit die Informationen in einer relationalen Datenbank reale Fakten und Situationen widerspiegeln, können Sie Bedingungen oder Einschränkungen definieren, die für die Domäne spezifisch sind, auf die sich die Datenbank bezieht. Beispielsweise kann in einer Tabelle, die Informationen über Schüler speichert, eine Beschränkung auferlegt werden, sodass die Geburtsdaten keine Daten in der Zukunft oder zu weit in der Vergangenheit zulassen.

Die Organisation von Tabellen in einer Datenbank wird allgemein als Datenbankschema bezeichnet. Zusätzlich zu den Tabellen enthält das Schema Einschränkungen, die Tabellenpaare betreffen, die als Beziehungen bezeichnet werden. Eine Beziehung verbindet zwei Tabellen, indem sie die Einschränkung auferlegt, dass die Werte im Feld einer der Tabellen den Werten im Primärschlüssel der anderen Tabelle entsprechen.

Datenbankschemata werden normalerweise durch das Entity-Relationship-Diagramm (ERD) dargestellt, ein allgemeines Werkzeug für jeden Datenbankdesigner.

Eine ERD, die ein Kundendatenmodell darstellt.

Anomalien und Normalisierung

Alle Konzepte, die wir bisher besprochen haben, sind ziemlich klar, oder? Jetzt können wir über die Anomalien sprechen, die in Datenbanken aufgrund von fehlerhaftem oder unzureichendem Design auftreten (d. h. die Datenbank spiegelt die Realität, die sie darzustellen versucht, nicht angemessen wider).

Anomalien treten auf, wenn ein Einfüge-, Aktualisierungs- oder Löschvorgang Inkonsistenzen in den Daten erzeugt. Angenommen, Sie haben eine Tabelle zum Speichern von Verkaufsdaten. Für jeden Verkauf (d. h. in jedem Datensatz der Tabelle) werden Name und Adresse der Kunden erfasst. Die Anomalie ist wie folgt:

  1. Wenn die Adresse des Kunden in einem der Verkäufe geändert wird, und
  2. Derselbe Kunde hat andere Verkäufe
  3. Die anderen Verkäufe haben eine veraltete Adresse.

Um Anomalien zu vermeiden, können Sie eine Entwurfstechnik namens Datenbanknormalisierung anwenden. Dies beinhaltet die Zerlegung von Tabellen und Spalten (d. h. ihre Aufteilung in kleinere Teile), um Designfehler zu vermeiden wie:

  • Spalten, die mehr als eine Information enthalten (z. B. die ID-Nummer eines Artikels sowie seinen Namen).
  • Speichern der gleichen Informationen mehr als einmal in der gleichen Tabelle.
  • Felder, die von anderen Nicht-Schlüsselfeldern abhängen.

Nicht normalisierte Tabelle (links) versus normalisiertes Schema (rechts).

Data Warehouses und Denormalisierung

Einige Datenbanken werden anstelle der Online-Transaktionsverarbeitung (OLTP) zum Abfragen großer Informationsmengen verwendet. Diese Datenbanken werden Data Warehouses genannt.

Die Informationen in einem Data Warehouse stammen nicht von Benutzeroberflächen (z. B. direkt aus einem E-Commerce-Bestellsystem eingegeben). Es stammt aus Batch-Prozessen, die Informationen aus verschiedenen Quellen sammeln, verarbeiten, bereinigen und in Tabellen speichern. Aus diesem Grund können wir davon ausgehen, dass Data Warehouses nicht denselben Anomalien ausgesetzt sind wie herkömmliche Datenbanken.

Aus diesem Grund müssen Data Warehouses nicht die gleichen Normalisierungsbedingungen wie eine OLTP-Datenbank beibehalten. Andererseits ist es wichtiger, die Abfrageeffizienz in Data Warehouses zu optimieren. Aus diesem Grund wird die Denormalisierung in einem Data Warehouse angewendet. diese Technik verwendet ein gewisses Maß an Redundanz, um Abfragen zu vereinfachen und zu vermeiden, dass Schemas mit einer übermäßigen Anzahl von Tabellen unübersichtlich werden.

Ein typisches Data-Warehouse-Schema.

Große Daten

Wie Data Warehousing bezieht sich das Konzept von Big Data auf Repositories, die große Datenmengen beherbergen. Es gibt jedoch einen wichtigen Unterschied zwischen den beiden Konzepten. Ein Data Warehouse ist für einen bestimmten Zweck konzipiert und zielt darauf ab, Berichte zu erstellen, deren Verhalten und Format im Voraus bekannt sind.

Big Data hingegen zielt darauf ab, große Datenmengen zu sammeln, die mit hoher Geschwindigkeit aus verschiedenen Quellen – z. Informationen aus sozialen Medien, Mikrotransaktionen oder intelligenten Sensoren. Diese riesige Menge an Informationen kann zur Erkundung und Analyse oder zum Trainieren von Modellen für maschinelles Lernen verwendet werden.

Beim Design von Big-Data-Datenbanken werden unter anderem Speicherplatzeinsparung und Datenpartitionierung priorisiert, um Parallelität und Datenerfassung in Echtzeit zu ermöglichen. Darüber hinaus werden nicht-relationale oder NoSQL-Datenbanksysteme verwendet, die bessere Alternativen für den Umgang mit unstrukturierten Informationen bieten.

Technologien wie NoSQL und das Konzept von Big Data selbst sind relativ neu im Vergleich zu relationalen Datenbanken, die bereits über 40 Jahre alt sind. Aus diesem Grund müssen Sie als Datenbankdesigner auf neue Entwicklungen in diesem Bereich achten. Denken Sie daran, dass Big Data auch ein großes Geschäft ist. Viele Unternehmen wollen darin eine führende Position einnehmen und entwickeln dafür neue Tools und Technologien.

Datenbankverwaltung

Sobald eine Datenbank eingerichtet ist und läuft, muss sich jemand um ihre tägliche Verwaltung kümmern. Das bedeutet, Routineaufgaben zu erledigen, damit die Datenbank nie zum Engpass für die Anwendungen wird, die sie verwenden. Zu den Verwaltungsaufgaben gehören das Verwalten von Sicherungen, das Überwachen des Speicherplatzverbrauchs, das Erkennen von Abstürzen zwischen Prozessen und das Beheben von Datenproblemen, die den normalen Betrieb von Anwendungen verhindern.

Die Person, die über die Datenbankkenntnisse verfügt, um sich um diese Aufgaben zu kümmern, ist der Datenbankadministrator oder DBA – sofern vorhanden. In sehr kleinen Organisationen – oder in Entwicklungsumgebungen, in denen der Betrieb der Datenbanken nicht geschäftskritisch ist – kann die Verantwortung für die Datenbankwartung auf den Datenbankmodellierer fallen. Daher sollten Sie über Kenntnisse verfügen, die es Ihnen ermöglichen, den DBA in bestimmten Situationen zu übernehmen. Sie sollten jedoch unter keinen Umständen die Verantwortung für die Verwaltung einer Datenbank in einer Produktionsumgebung übernehmen, die geschäfts- oder unternehmenskritische Anwendungen unterstützt .

Verwaltungsaufgaben sind je nach Datenbanksystem und der Infrastruktur, auf der es gemountet ist, sehr unterschiedlich. Beispielsweise unterscheiden sich die Aufgaben der Verwaltung von Microsoft SQL Server-Datenbanken stark von denen der Verwaltung von MySQL- oder Oracle-Datenbanken. Und die Verwaltung eines Servers, den Sie lokal auf Ihrem Notebook ausführen, unterscheidet sich stark von der Verwaltung eines Servers, der in der Cloud ausgeführt wird.

Ich empfehle nicht, viel Mühe darauf zu verwenden, zu lernen, wie man einen bestimmten Datenbankserver verwaltet, da Sie im Laufe Ihrer Karriere mit sehr unterschiedlichen Datenbanken und Umgebungen zu tun haben. Es wird Ihnen nicht viel nützen, sich nur auf eines zu spezialisieren.

Gleichzeitigkeits- und Transaktionsverwaltung

Der gleichzeitige Zugriff auf eine Datenbank kann in Anwendungen zu Problemen führen, wenn mehrere Benutzer gleichzeitig versuchen, auf dieselbe Ressource zuzugreifen. Wir könnten denken, dass uns das als Designer nichts angeht und dass es in der Verantwortung des DBA liegt, sich mit diesen Problemen zu befassen. Wir können auch denken, dass es die Schuld der Programmierer ist, Anwendungen zu erstellen, die dies zulassen.

Designer können jedoch ihren Teil dazu beitragen, potenzielle Parallelitätsprobleme zu minimieren, indem sie Schemata entwerfen, die sie vermeiden.

Viele Parallelitätsprobleme treten auf, wenn lange und komplexe Transaktionen in einer Datenbank ausgeführt werden; Während die Transaktion verarbeitet wird, sind die beteiligten Tabellen für andere Prozesse gesperrt, die sie zum Lesen oder Schreiben von Informationen benötigen. Um solche Probleme zu vermeiden, sollten Sie am besten sicherstellen, dass Ihre Entwürfe mindestens bis zur dritten Normalform übereinstimmen. Dann liegt es in der Verantwortung des Programmierers, die Transaktionen richtig zu durchdenken, um Deadlocks zu vermeiden.

Sie können aber auch Strategien anwenden, die Nebenläufigkeit vermeiden, wie das Partitionieren von Schemas oder das Gruppieren von Tabellen nach der Funktion, die jedes Schema erfüllt.

Stellen wir uns eine Datenbank für eine E-Commerce-Site vor. Sie können die Stammdatentabellen für Produkte, Bestände und Preise in einem Schema und Bestellungen und Verkäufe in einem anderen platzieren, zusammen mit Ansichten oder schreibgeschützten Kopien der Tabellen aus dem ersten Schema. Dies hilft, Fehler beim Ausführen von Transaktionen zu vermeiden, die die Stammdaten aktualisieren.

Datenbankdesign-Tools

Wenn Sie das relationale Modell, Entity-Relationship-Diagramme und Normalisierungstechniken verstehen, können Sie Datenbanken mit keinem anderen Werkzeug als Bleistift und Papier entwerfen. Ihre Leistung wird jedoch erheblich verbessert, wenn Sie ein intelligentes Tool verwenden, insbesondere eines, das bestimmte Designaufgaben wie das Verschieben oder Ändern von Objekten in einem Diagramm, das Erkennen von Designfehlern, das Generieren von SQL-Skripten zum Erstellen oder Aktualisieren einer Datenbank und das Umkehren automatisieren kann. Entwicklung eines bestehenden Datenbankdesigns.

Wenn Sie ein spezialisiertes Tool wie die Vertabelo-Plattform beherrschen, können Sie viel schneller arbeiten. Und es wird Ihnen ermöglichen, sich von anderen Designern abzuheben, die diese Hilfe nicht haben.

SQL und Programmierung

Wir alle würden gerne ein Datenbankdesign liefern können, stolz sagen „Meine Arbeit hier ist getan“ und in den wohlverdienten Urlaub gehen. Aber normalerweise tritt diese ideale Situation nie ein. Sobald Sie Ihr Design fertiggestellt haben, müssen die Anwendungsprogrammierer es verwenden, und sie müssen Sie um sich haben, um ihnen zu helfen.

Eine Möglichkeit, wie Sie weiterhin in einem Entwicklungsprojekt helfen sollten, besteht darin, Ansichten, Trigger, gespeicherte Prozeduren und andere Dinge in SQL (Structured Query Language) zu schreiben, um bestimmte Anwendungsanforderungen zu erfüllen. Eine andere Möglichkeit besteht darin, die Programmieraufgaben zu überwachen, die mit etwas namens Object-Relational Mapping (ORM) ausgeführt werden.

ORMs sollen den Datenzugriff von einem bestimmten RDBMS abstrahieren. Das Gute daran ist, dass Programmierer sich keine Gedanken über die Besonderheiten der Datenbank machen müssen, die sie verwenden werden – mit anderen Worten, sie müssen sich nicht darum kümmern, ob das RDBMS MySQL, Oracle, IBM DB2 oder MS SQL Server ist , oder etwas anderes.

Der Nachteil von ORMs besteht darin, dass die Datenbankdesignobjekte – Tabellen, Attribute und Beziehungen – im Code einer höheren Programmiersprache wie Java, Python, R oder C# definiert sind. Mit anderen Worten, sie sind dort, wo wir Datenbankdesigner sie nicht sehen können.

Die Lösung für dieses Problem liegt in agilen Entwicklungsmethoden und ihrer kollaborativen Philosophie. Diese fördern die Zusammenarbeit von Designern und Programmierern im Laufe eines Projekts, sodass Sie eine gute Beziehung zu den Programmierern pflegen sollten. Sie sollten bereit sein, neben ihnen zu sitzen, sich den Programmiercode anzusehen und gemeinsam die Definitionen der Datenobjekte zu schreiben.

Soft Skills, die Datenbankdesigner haben sollten

Zusätzlich zu den theoretischen und technischen Kenntnissen des Datenbankdesigns sollte ein Designer idealerweise über andere Fähigkeiten verfügen, die als „Soft Skills“ bezeichnet werden. Diese Fähigkeiten – wie ein guter Kommunikator zu sein und die Vision des Unternehmens für das Endprodukt zu verstehen – wirken sich indirekt auf den Erfolg Ihrer Arbeit aus. Die, die ich unten erwähne, sind nur einige Beispiele, aber es gibt noch viele weitere Soft Skills, die von potenziellen Arbeitgebern sehr geschätzt werden.

Geschäftsvision

Wenn Sie eine Datenbank entwerfen, repräsentieren Sie die Realität eines Unternehmens in Bezug auf miteinander verbundene Datenobjekte. Wir haben gesehen, dass das Design Standardisierungsbedingungen erfüllen und Inkonsistenzen, Anomalien und Nebenläufigkeitsprobleme vermeiden muss. Aber genauso wichtig – oder vielleicht noch wichtiger – ist es, dass das Design auf die Geschäftsvision desjenigen ausgerichtet ist, der Ihr Gehalt zahlt.

Wenn Sie die Geschäftsvision verstehen, können Sie die Bedeutung jeder Anforderung besser erfassen und Ihre Entscheidungen so steuern, dass Ihre Entwürfe besser auf die Ziele der Organisation abgestimmt sind.

Hier ist ein einfaches Beispiel dafür, wie das Verständnis der Geschäftsvision Ihre Arbeit prägen wird. Sie denken vielleicht, dass die Verwendung eines Ersatzschlüssels in einer Tabelle Ihr Design unübersichtlich macht und ein unnötiges und störendes Element hinzufügt. Wenn Sie jedoch den Ersatzschlüssel weglassen, können Sie Abfragen für diese Tabelle verlangsamen, da ein Schlüssel vom Typ INTEGER eine bessere Leistung erbringen könnte. Wenn die Geschäftsvision darin besteht, schnelle Abfragen bereitzustellen, ist der Ersatzschlüssel der richtige Weg.

Kommunikationsfähigkeiten

Es reicht nicht aus, großartige Designs zu erstellen. Sie müssen auch erklären können, warum Ihr Design funktioniert. Der Weg, dies zu tun, besteht darin, zu wissen, wie man es sowohl diskursiv (gesprochen oder geschrieben) als auch visuell präsentiert.

Erstelle eine Liste mit den Stärken deines Designs, damit sie hervorstechen. Denken Sie über die Entscheidungen nach, die Sie getroffen haben, um es zu erstellen, und schreiben Sie die Gründe für diese Entscheidungen auf. Seien Sie bereit, Ihre Entscheidungen und Ihr Design gegenüber denen zu verteidigen, die es nicht verstehen oder ändern möchten, wodurch es unvollkommen oder fehlerhaft wird.

Sie müssen aber auch bereit sein, konstruktive Kritik anzunehmen und andere Sichtweisen zu berücksichtigen. Manchmal entdeckt ein Programmierer ein Problem, das Sie nicht gesehen haben, und gibt Ihnen gute Ratschläge. Entlassen Sie Ihre Kollegen nicht, weil Sie glauben, sie hätten keine Datenbankkenntnisse.

Interpersonelle Fähigkeiten

Ich habe oben die Vorteile einer guten Beziehung zu Programmierern kommentiert. Unabhängig davon, wie fortgeschritten Sie in Ihrem Fachgebiet sind, ist es wichtig, dass Sie mit allen Teammitgliedern eine kameradschaftliche Haltung pflegen, sei es ein Tester, der einen Fehler entdeckt hat, der Sie dazu zwingt, einen Teil Ihres Designs zu überdenken, oder ein Projektmanager, der dies benötigt Ihnen, eine Aufgabe bis zu einem bestimmten Datum zu erledigen. Kurz gesagt, müssen Sie ein Teamplayer sein . Niemand möchte Primadonnen in seinem Team haben, die sich unersetzlich fühlen und ihre Regeln durchsetzen wollen.

Es kann vorkommen, dass Sie nicht der einzige Datenbankdesigner in einem Entwicklungsteam sind. Vielleicht müssen Sie eine Untergruppe Ihrer Kollegen leiten. Dazu müssen Sie Führungsqualitäten beweisen und als Projektmanager fungieren, um sicherzustellen, dass das Team der Datenbankdesigner seine Ziele erreicht und motiviert bleibt.

Wie man Datenbankdesignfähigkeiten lernt

Die Fähigkeiten, die Sie als Datenbankdesigner benötigen, können Sie sich in Universitätsabschlüssen, Kursen, Büchern und Fachartikeln aneignen. Der Vorteil von Universitätslehrgängen ist, dass sie Ihnen alle erforderlichen Kenntnisse vermitteln und diese Kenntnisse mit einem anerkannten Abschluss bestätigen. Der Nachteil ist, dass sie eine große Investition an Zeit und Geld erfordern.

Wenn Sie lieber alleine lernen, indem Sie Bücher und Artikel lesen, sparen Sie Zeit und Geld – aber Sie benötigen einen Leitfaden, der Sie durch die wesentlichen Themen führt und Ihr Wissen bewertet. Und Sie müssen Ihr Wissen praktisch unter Beweis stellen, da Sie keinen Abschluss haben, um es zu untermauern.

Unabhängig davon, ob Sie durch Kurse oder durch Lesen lernen, dient dieses Wissen in jedem Fall nur als Grundlage. Sie werden am meisten lernen, indem Sie Modelle erstellen, sich echten Problemen stellen und die Aktionen Ihrer Kollegen und Mitarbeiter beobachten.