· 6 years ago · Nov 06, 2019, 10:04 AM
1-- SQL DDL Intro aus der Übung
2
3-- Ihre Datenbank auswählen, ändern Sie den Namen entsprechend...
4USE `UebungsDB`;
5
6-- Tabelle löschen, falls Sie existiert
7DROP TABLE IF EXISTS `Benutzer`;
8
9
10-- Empfohlen ist, zuerst die Attribute der Tabellen anzulegen und die Relationen
11-- anschließend vorzunehmen. dabei werden Sie erkennen, dass nicht jede Lösch-
12-- reihenfolge (DROP) funktioniert.
13
14CREATE TABLE Benutzer (
15 Nummer INT UNSIGNED AUTO_INCREMENT,
16 Nutzername VARCHAR(25) NOT NULL UNIQUE, -- NOT NULL weil nicht optional
17 Vorname VARCHAR(50) NOT NULL,
18 Nachname VARCHAR(50) NOT NULL,
19 Geburtsdatum DATE,
20 `Alter` INT DATEDIFF(yy,Geburtsdatum,GETDATE()),
21 `E-Mail` VARCHAR(50) NOT NULL UNIQUE, -- Backticks wegen Minus im namen
22 Bild VARBINARY(1000), -- verbessern Sie die Datentypen, wenn nötig
23 Anlegedatum DATETIME DEFAULT GETDATE(),
24 Aktiv BOOL,
25 `Hash` CHAR(60),
26 LetzterLogin DATETIME DEFAULT NULL,
27 PRIMARY KEY (Nummer)
28);
29
30CREATE TABLE Gäste (
31 Grund VARCHAR(254) NOT NULL,
32 Ablaufdatum DATETIME DEFAULT DATEADD(ww,1,GETDATE()),
33);
34
35CREATE TABLE FH Angehörige (
36
37);
38
39CREATE TABLE Mitarbeiter (
40 Büro CHAR(4),
41 Telefon VARCHAR(15)
42);
43
44CREATE TABLE Studenten (
45 Studiengang ENUM('ET','INF','ISE','MCD','WI') NOT NULL,
46 Matrikelnummer INT NOT NULL CHECK (Matrikelnummer BETWEEN 10000000 AND 999999999),
47);
48
49CREATE TABLE Fachbereiche (
50 ID INT UNSIGNED AUTO_INCREMENT,
51 Website VARCHAR(100) NOT NULL,
52 `Name` VARCHAR(100) NOT NULL,
53 PRIMARY KEY (ID)
54);
55
56CREATE TABLE Bestellungen (
57 Nummer INT UNSIGNED AUTO_INCREMENT,
58 `Bestell-Zeitpunkt` DATETIME DEFAULT GETDATE(),
59 `Abhol-Zeitpunkt` DATETIME DEFAULT DATEADD(hh,1,GETDATE()),
60 `Endpreis` DECIMAL(5,2) UNSIGNED NOT NULL,
61 Benutzernummer INT,
62 PRIMARY KEY (Nummer),
63 FOREIGN KEY (Benutzernummer) REFERENCES Benutzer(Nummer)
64);
65
66CREATE TABLE Mahlzeiten (
67 ID INT UNSIGNED AUTO_INCREMENT,
68 Beschreibung VARCHAR(200) NOT NULL,
69 Vorrat INT UNSIGNED NOT NULL DEFAULT 0,
70 Verfügbar BOOL,
71 PRIMARY KEY (ID)
72);
73
74CREATE TABLE Kategorien (
75 ID INT UNSIGNED AUTO_INCREMENT,
76 Bezeichnung VARCHAR(50) NOT NULL,
77 PRIMARY KEY (ID)
78);
79
80CREATE TABLE Preise (
81 Gastpreis DECIMAL(4,2) UNSIGNED NOT NULL,
82 `Student-Preis` DECIMAL(4,2) UNSIGNED,
83 `MA-Preis` DECIMAL(4,2) UNSIGNED,
84 Jahr INT(4) NOT NULL,
85 PRIMARY KEY ()
86);
87
88CREATE TABLE Zutaten (
89 ID INT UNSIGNED NOT NULL CHECK(ID BETWEEN 10000 AND 99999),
90 `Name` VARCHAR(50) NOT NULL,
91 Bio BOOL NOT NULL,
92 Vegetarisch BOOL NOT NULL,
93 Vegan BOOL NOT NULL,
94 Glutenfrei BOOL NOT NULL,
95 PRIMARY KEY (ID)
96);
97
98CREATE TABLE Bilder (
99 ID INT UNSIGNED AUTO_INCREMENT,
100 Titel VARCHAR(50),
101 `Alt-Text` VARCHAR(50) DEFAULT 'IMAGE', -- denken Sie auch hier an Backticks
102 `Binärdaten` BLOB,
103 PRIMARY KEY (ID)
104);
105
106CREATE TABLE Kommentare (
107 ID INT UNSIGNED AUTO_INCREMENT,
108 Bewertung INT UNSIGNED NOT NULL CHECK (Bewertung BETWEEN 1 AND 5),
109 Bemerkung TEXT,
110 PRIMARY KEY (ID)
111);
112
113CREATE TABLE Deklarationen (
114 Zeichen VARCHAR(2) NOT NULL,
115 Beschriftung VARCHAR(32) NOT NULL,
116 PRIMARY KEY (Zeichen)
117);
118
119CREATE TABLE Tätigt (
120
121);