C# SQL-Datenbank: Ein tieferer Einblick durch die Lektion von Tim Corey
In der Welt der C#-Anwendungsentwicklung gehört die Arbeit mit einer SQL-Datenbank zu den wichtigsten Fähigkeiten, die Sie erlernen können. In seinem Video "C# App Start To Finish Lesson 08 – SQL Database Design", geht Tim Corey den Prozess der Gestaltung einer relationalen Datenbank, dem Erstellen von Tabellen, dem Definieren von Beziehungen und dem Schreiben von gespeicherten Prozeduren durch.
In diesem Artikel werden wir einen tieferen Blick auf Tims Lektion werfen und die Ideen genau so erklären, wie er sie präsentiert. Wenn Sie ein besseres Verständnis darüber erlangen möchten, wie eine C#-Anwendung sich mit SQL Server verbindet und wie Sie Ihre Datenbank richtig strukturieren, bietet Tims Video einen hervorragenden Leitfaden.
Einführung in das Datenbankdesign
Um 1:00 erinnert Tim die Zuschauer daran, dass sie alle Skripte und Dateien im Paket erhalten, einschließlich der Datenbankskripte. Er betont, dass es das Ziel nicht ist, in einer Lektion ein voller SQL Server-Experte zu werden, sondern das Design zu verstehen und zu lernen, wie man über die Strukturierung von Daten nachdenkt. Tim geht dann direkt in das Datenbankdiagramm über.
Verständnis des Datenbankdiagrams
Um 1:52 hebt Tim die Tabelle der Teammitglieder hervor und erklärt, dass sie nicht den Vornamen oder Nachnamen einer Person direkt speichert. Stattdessen speichert sie eine Personen-ID, die auf die Personen-Tabelle verweist. Dies ist ein Beispiel für eine Eins-zu-Viele-Beziehung in einer relationalen Datenbank, bei der eine Person mehreren Teams angehören kann.
Tim gibt ein praktisches Beispiel: Eine Person könnte Teil von mehr als einem Team sein, wenn mehrere Turniere gleichzeitig stattfinden. Dies vermeidet Duplikate und zeigt, wie die Verwendung eines Primärschlüssels Ihnen hilft, Daten effizient abzufragen. Tim betont, dass doppelte Daten schädlich sind, da sie zu widersprüchlichen Informationen wie inkonsistenten E-Mail-Adressen führen.
Er erklärt, dass der Designansatz darin besteht, IDs zu verwenden, anstatt vollständige doppelte Daten zu speichern. Dies ist die Grundlage für gutes SQL Server-Datenbankdesign.
Vermeidung doppelter Spalten
Um 4:48 spricht Tim darüber, warum man vermeiden sollte, mehrere E-Mail-Adressen in separaten Spalten wie Email2 oder Email3 zu speichern. Stattdessen schlägt er vor, eine separate E-Mail-Adressen-Tabelle zu erstellen, die die Person ID und E-Mail-Adresse Spalten enthält. Dies ermöglicht einer Person, mehrere E-Mail-Adressen zu haben, ohne die Personentabelle zu verkomplizieren.
Tim erklärt, dass das Datenbankdesign ein Gleichgewicht zwischen Einfachheit und Flexibilität ist. Für dieses Tutorial entscheidet er sich, nur eine E-Mail und eine Telefonnummer zu speichern, um das Design sauber und praktisch zu halten.
Erstellen einer Datenbank in SQL Server Management Studio
Um 6:44 wechselt Tim zu SQL Server Management Studio und erklärt, dass er die SQL Server 2016 Developer Edition verwendet, die kostenlos ist und die gleichen Funktionen wie die Enterprise Edition hat. Er bemerkt, dass sie nicht in der Produktion verwendet werden kann, aber perfekt für die Entwicklung auf einem lokalen Rechner ist.
Tim erklärt zwei Möglichkeiten, eine SQL Server-Datenbank zu erstellen: über den SSMS-Dialog oder mit einer SQL-Abfrage. Er bevorzugt die Abfragemethode, da sie schneller ist. Der Befehl, den er verwendet, ist:
create database tournaments;
Er erklärt, dass das Semikolon wichtig ist und am Ende jeder SQL-Anweisung verwendet werden sollte. Nachdem er die Datenbank erstellt hat, zeigt Tim, wie man das SSMS-Fenster aktualisiert, um die neue Datenbank erscheinen zu sehen.
Anzeigen von Tabellen und Tabellendesign
Um 12:06 erwähnt Tim, dass er alle Tabellen bereits mithilfe von Skripten erstellt hat. Dann demonstriert er, wie man den Tabellendesigner in SSMS öffnet. Tim erklärt, dass SQL-Skripte für C#-Entwickler einschüchternd sein können, und der Designer hilft Ihnen, Tabellen visuell zu bearbeiten, ohne die SQL-Syntax auswendig lernen zu müssen.
Tim verwendet die Preistabelle als Beispiel. Er erklärt, wie man den Primärschlüssel setzt, Datentypen wählt und Null-Werte verwaltet. Er stellt auch fest, dass der Primärschlüssel SQL dabei hilft, die Tabellenlagerung und Abruf zu optimieren. Ohne Primärschlüssel erstellt SQL einen "Heap", was Abfragen langsamer macht.
Auto-Inkrementierende IDs
Um 15:36 erklärt Tim, wie man die ID-Spalte mit Hilfe der Identity-Spezifikation automatisch inkrementierend macht. Er setzt den Inkrement und die Saat auf 1. Tim betont, dass dies jeder Zeile eine eindeutige Kennung gibt und SQL dabei hilft, Daten effizient zu sortieren.
Er weist darauf hin, dass dieser Ansatz Ihnen ein hochoptimiertes Design mit minimalem Aufwand bietet, was perfekt für C#-Entwickler ist, die eine solide SQL Server-Datenbank ohne komplexe Feinabstimmung möchten.
Verständnis der Datentypen
Um 18:09 erklärt Tim die verschiedenen SQL-String-Typen: varchar, nvarchar und nvarchar(max). Er beschreibt:
-
Char: speichert Zeichen
-
Var: variable Länge (bis zu einer maximalen Zahl)
- N: Unicode-Unterstützung für internationale Zeichen
Tim erklärt, dass nvarchar mehr Speicherplatz benötigt, aber globale Sprachen unterstützt, während varchar ideal für reinen englischen Text ist. Er erklärt auch, dass nvarchar(max) für sehr große Zeichenfolgen wie JSON verwendet wird, die möglicherweise gespeichert und später von einer Anwendung abgerufen werden.
Geld- und Float-Datentypen
Um 24:00 vergleicht Tim SQL-Datentypen mit C#-Typen. Er verwendet Geld für Währungswerte (ähnlich wie Dezimal in C#) und Float für Prozentsätze (ähnlich wie Double). Dies hilft C#-Entwicklern, SQL-Typen mit ihren Programmierertypen abzugleichen.
Tabellenbeziehungen
Um 25:04 demonstriert Tim, wie man Beziehungen mit Fremdschlüsseln erstellt. Er öffnet den Beziehungen-Editor und erklärt, dass die Primärtabelle die tatsächliche ID enthält, während die Fremdtabelle diese ID referenziert.
Er erklärt auch das Konzept des Kaskadenlöschens, das automatisch zugehörige Datensätze entfernt, wenn der übergeordnete Datensatz gelöscht wird. Tim warnt, dass IDs als unveränderlich behandelt werden sollten, was bedeutet, dass man sie nicht ändern sollte, sobald sie erstellt wurden.
Erstellen einer neuen Tabelle
Um 29:30 demonstriert Tim die Erstellung einer neuen Tabelle mit dem SSMS-Editor. Er erstellt eine Testpersonen-Tabelle mit Spalten wie:
-
Vorname
-
Nachname
-
E-Mail-Adresse
-
Telefonnummer
-
Anzahl der Kinder
- Erstellungsdatum
Tim zeigt, wie man Standardwerte setzt, wie z.B. die Anzahl der Kinder auf 0 zu setzen und getdate() zu verwenden, um die aktuelle Zeit zu setzen. Er erklärt, dass getutcdate() besser für Anwendungen ist, die sich über Zeitzonen erstrecken.
Bearbeiten von Daten in der Tabelle
Um 39:39 zeigt Tim, wie man Zeilen direkt in SSMS bearbeitet. Er fügt Beispieldatensätze hinzu und erklärt, dass selbst fehlgeschlagene Einfügungen immer noch ID-Werte verbrauchen. Er empfiehlt, SQL die Autoinkrement-Sequenz fortsetzen zu lassen und sich keine Sorgen über fehlende IDs zu machen.
Grundlegende SQL-Abfragen
Um 44:23 lehrt Tim die grundlegende Abfragesyntax:
-
SELECT * FROM Tabelle
-
WHERE
-
LIKE
-
ORDER BY
- Spaltenalias mit AS
Er weist darauf hin, dass SELECT * zum Lernen in Ordnung ist, aber in realen Anwendungen sollten Sie zur Leistungsverbesserung und Klarheit die Spalten spezifizieren.
Gespeicherte Prozeduren
Um 50:33 führt Tim gespeicherte Prozeduren ein. Er erklärt, dass gespeicherte Prozeduren sicheren Zugriff auf die Datenbanklogik ermöglichen und SQL-Injektionsangriffe verhindern. Tim bevorzugt gespeicherte Prozeduren gegenüber direktem Tabellenzugriff oder Sichten, da sie mehr Sicherheit bieten.
Er zeigt, wie man eine gespeicherte Prozedur erstellt, die Preise nach Turnier-ID abruft. Er erklärt Parameter, BEGIN- und END-Blöcke sowie die NOCOUNT ON-Anweisung.
Ausführen gespeicherter Prozeduren
Um 58:04 erstellt Tim eine gespeicherte Prozedur, um Testpersonen nach Nachname abzurufen, und zeigt, wie man sie ausführt mit:
EXEC dbo.SP_TestPerson_GetByLastName 'Corey'
Er erklärt, dass das dbo-Schema das Standard-Schema ist und dass SQL Server bei Prozedurnamen nicht auf Groß- und Kleinschreibung achtet.
Abschließende Gedanken
Tim in seinem Video, schlussfolgert, dass das Design von SQL-Datenbanken kompliziert aussehen kann, aber die Kernkonzepte einfach sind. Er ermutigt die Zuschauer, zu üben und zu erkunden, und gibt einen Ausblick auf die nächste Lektion, in der er die Datenbank mit C#-Code verbinden wird.
