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]]