Schema: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
'''Das Datenbankschema''' ist die konkrete Implementierungsstruktur einer [[Datenbank]], die festlegt, wie [[Daten]] organisiert und gespeichert werden. | '''Das Datenbankschema''' ist die konkrete Implementierungsstruktur einer [[Datenbank]], die festlegt, wie [[Daten]] organisiert und gespeichert werden. | ||
== Einführung == | == Einführung == | ||
[[Datei:ERM-Softwarentwicklungsprozess.png|mini]] | |||
[[Datei:ERM-Einordnung.png|mini]] | |||
Das Schema (auch Datenbankschema Schema genannt) legt fest, welche [[Daten]] in einer [[Datenbank]] in welcher Form gespeichert werden können und welche Beziehungen zwischen den [[Daten]] bestehen. Das Schema legt auch die Tabellen und deren [[Attribut]]e sowie zur Sicherstellung der Konsistenz die [[Datenkonsistenz|Integritätsbedingungen]] fest. Hierzu gehören insbesondere die Festlegung von Wertebereichen einzelner Attribute und von Fremdschlüsselbeziehungen sowie Existenz- und Eindeutigkeitsbedingungen wie zum Beispiel die [[Datenkonsistenz#Referenzielle_Integrität|Referenzielle Integrität]]. Dieses Modell wird physisch in der [[Datenbank]] angelegt und ist der letzte Schritt des Entwicklungsprozesses einer [[Datenbank]]. | Das Schema (auch Datenbankschema Schema genannt) legt fest, welche [[Daten]] in einer [[Datenbank]] in welcher Form gespeichert werden können und welche Beziehungen zwischen den [[Daten]] bestehen. Das Schema legt auch die Tabellen und deren [[Attribut]]e sowie zur Sicherstellung der Konsistenz die [[Datenkonsistenz|Integritätsbedingungen]] fest. Hierzu gehören insbesondere die Festlegung von Wertebereichen einzelner Attribute und von Fremdschlüsselbeziehungen sowie Existenz- und Eindeutigkeitsbedingungen wie zum Beispiel die [[Datenkonsistenz#Referenzielle_Integrität|Referenzielle Integrität]]. Dieses Modell wird physisch in der [[Datenbank]] angelegt und ist der letzte Schritt des Entwicklungsprozesses einer [[Datenbank]]. | ||
| Zeile 24: | Zeile 26: | ||
'''Datentypen''': Definition der zulässigen Wertebereiche | '''Datentypen''': Definition der zulässigen Wertebereiche | ||
'''Primärschlüssel''': Eindeutige Identifikation von Datensätzen | '''[[Primärschlüssel]]''': Eindeutige Identifikation von Datensätzen | ||
'''Fremdschlüssel''': Definition von Beziehungen zwischen Tabellen | '''Fremdschlüssel''': Definition von Beziehungen zwischen Tabellen | ||
| Zeile 54: | Zeile 56: | ||
'''Dokumentation''': Selbst-dokumentierende Struktur | '''Dokumentation''': Selbst-dokumentierende Struktur | ||
==Beispiel Friseursalon== | |||
[[Datei:SchemaInMySQL.png|mini|ERM zum Friseursalon]] | |||
[[Datei:DBMS-MySQL.png|mini|Darstellung in der MySQL-Workbench]] | |||
Wir erstellen eine Datenbank in mittels [[Structured_Query_Language|SQL]]-Befehlen. Auf der rechten Seiten ist das Schema in der MySQL Workbench sowie das Schema als [[Entity-Relationship-Modell|ERM]] dargestellt. | |||
<syntaxhighlight lang="sql"> | |||
CREATE SCHEMA `friseursalon`; | |||
CREATE TABLE `friseursalon`.`salon` ( | |||
`idsalon` INT NOT NULL AUTO_INCREMENT, | |||
`name` VARCHAR(45) NOT NULL, | |||
PRIMARY KEY (`idsalon`) | |||
); | |||
CREATE TABLE `friseursalon`.`mitarbeiter` ( | |||
`idmitarbeiter` INT NOT NULL AUTO_INCREMENT, | |||
`nachname` VARCHAR(45) NOT NULL, | |||
`vorname` VARCHAR(45) NOT NULL, | |||
`idsalon` INT NOT NULL, | |||
PRIMARY KEY (`idmitarbeiter`), | |||
INDEX `fksalon` (`idsalon` ASC), | |||
CONSTRAINT `fksalon` FOREIGN KEY (`idsalon`) | |||
REFERENCES `friseursalon`.`salon` (`idsalon`) | |||
ON DELETE NO ACTION | |||
ON UPDATE NO ACTION | |||
); | |||
CREATE TABLE `friseursalon`.`kunde` ( | |||
`idkunde` INT NOT NULL AUTO_INCREMENT, | |||
`nachname` VARCHAR(45) NOT NULL, | |||
`vorname` VARCHAR(45) NOT NULL, | |||
PRIMARY KEY (`idkunde`) | |||
); | |||
CREATE TABLE `friseursalon`.`termin` ( | |||
`idtermin` INT NOT NULL AUTO_INCREMENT, | |||
`datum` VARCHAR(45) NULL, | |||
`rechnungsbetrag` DOUBLE NULL, | |||
`idmitarbeiter` INT NOT NULL, | |||
`idkunde` INT NOT NULL, | |||
PRIMARY KEY (`idtermin`), | |||
INDEX `fkmitarbeiter` (`idmitarbeiter` ASC), | |||
INDEX `fkkunde` (`idkunde` ASC), | |||
CONSTRAINT `fkmitarbeiter` FOREIGN KEY (`idmitarbeiter`) | |||
REFERENCES `friseursalon`.`mitarbeiter` (`idmitarbeiter`) | |||
ON DELETE NO ACTION | |||
ON UPDATE NO ACTION, | |||
CONSTRAINT `fkkunde` FOREIGN KEY (`idkunde`) | |||
REFERENCES `friseursalon`.`kunde` (`idkunde`) | |||
ON DELETE NO ACTION | |||
ON UPDATE NO ACTION | |||
); | |||
</syntaxhighlight> | |||
[[Kategorie:Datenbanken]] | [[Kategorie:Datenbanken]] | ||
[[Kategorie:FI_I_SDM]] | [[Kategorie:FI_I_SDM]] | ||
[[Kategorie:FI_I_TP1]] | |||