· 8 years ago · Nov 23, 2017, 08:56 AM
1/* Datenbank SQL - Stand: 19.10.2017 - System: Test.System Version 0.1 - CMS Entwicklung */
2/* Verwendung: Schulaufgabe: Läufertabelle mit (Optional) Ausgabe auf einer dynamischen Webseite */
3DROP DATABASE IF EXISTS `sgd_dev_1`;
4Create Database sgd_dev_1;
5use sgd_dev_1;
6
7/* ----------------------------------
8
9Bei zusätzlichen Tabellenspalten bitte diesen Befehl (Beispiel) verwenden:
10
11ALTER TABLE `TABELLE` ADD `SPALTE` TYP NOT NULL COMMENT 'Kommentar ist optional`;
12
13ALTER TABLE `sgd_main` ADD `main_logo` TINYTEXT NOT NULL COMMENT 'Pfad zum Logo' AFTER `main_favicon`;
14
15Bei Datenpflege kann SQL so aussehen:
16
17*/
18
19/* Seiten bezogene Tabellen */
20
21DROP TABLE IF EXISTS `sgd_system`;
22CREATE TABLE `sgd_dev_1`.`sgd_system` (
23 `main_id` INT NOT NULL AUTO_INCREMENT COMMENT 'Es sollte in dieser Tabelle nur EINEN Eintrag geben' ,
24 `main_name` CHAR(120) NOT NULL COMMENT 'Seitenname' ,
25 `main_domain` CHAR(200) NOT NULL COMMENT 'Domain Pfad' ,
26 `main_favicon` CHAR(200) NOT NULL COMMENT 'Favicon Upload' ,
27 `main_logo` TINYTEXT NOT NULL COMMENT 'Pfad zum Logo' ,
28 PRIMARY KEY (`main_id`)
29)
30ENGINE = InnoDB COMMENT = 'Diese Tabelle dient zur Einstellung der System-Daten.';
31
32INSERT INTO `sgd_system` (`main_id`, `main_name`, `main_domain`, `main_favicon`, `main_logo`) VALUES (NULL, 'Semantisches Gerüst mit Datenbankausgaben', 'http://localhost/test-seite', './assets/images/favicons/favicon_16x16.ico', './assets/images/logo.png');
33
34/*
35CREATE TABLE `sgd_dev_1`.`sgd_content` (
36 `content_id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID - Primarykey' ,
37 `content_position` CHAR(120) NOT NULL COMMENT 'Position: Header oder Footer z. B.' ,
38 `content` CHAR(200) NOT NULL COMMENT 'Inhalt (In HtML)' ,
39 `content_active` INT NOT NULL COMMENT 'Eintrag Aktiv? Dann 1, ansonsten 0' ,
40 PRIMARY KEY (`content_id`))
41ENGINE = InnoDB COMMENT = 'Diese Tabelle beinhaltet den Index Content wie Headincludes oder Footer.'; */
42
43/* Schulaufgaben bezogene Tabellen */
44
45DROP TABLE IF EXISTS `sgd_teilnahme`;
46Create TABLE `sgd_dev_1`.`sgd_teilnahme` (
47 `teilnahme_laeufer` INT NOT NULL COMMENT 'Läufer',
48 `teilnahme_veranstaltung` INT NOT NULL COMMENT 'Veranstaltung'
49)
50ENGINE = InnoDB COMMENT = 'Beinhaltet die Teilnahmen der Läufer an verschiedenen Veranstaltungen';
51
52ALTER TABLE `sgd_teilnahme` ADD PRIMARY KEY( `teilnahme_laeufer`, `teilnahme_veranstaltung`);
53
54DROP TABLE IF EXISTS `sgd_laeufer`;
55CREATE TABLE `sgd_dev_1`.`sgd_laeufer` (
56 `laeufer_id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID - Primarykey' ,
57 `laeufer_vorname` varchar(50) NOT NULL COMMENT 'Vorname des Läufers' ,
58 `laeufer_nachname` varchar(50) NOT NULL COMMENT 'Nachname des Läufers' ,
59 `laeufer_geburtsdatum` DATE NOT NULL COMMENT 'Gebrutsdatum' ,
60 `laeufer_create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Erstellt am Datum' ,
61 `laeufer_id_adresse` varchar(5) NOT NULL COMMENT 'ID der Adresse' ,
62 PRIMARY KEY (`laeufer_id`),
63 FOREIGN KEY (`laeufer_id`) REFERENCES sgd_teilnahme(`teilnahme_laeufer`)
64)
65ENGINE = InnoDB COMMENT = 'Diese Tabelle beinhaltet alle Läufer, die sich registriert haben.';
66
67DROP TABLE IF EXISTS `sgd_laufveranstaltung`;
68CREATE TABLE `sgd_dev_1`.`sgd_laufveranstaltung` (
69 `veranstaltung_id` INT AUTO_INCREMENT COMMENT 'Veranstaltung-ID' ,
70 `veranstaltung_date` DATE NOT NULL COMMENT 'Datum der Veranstaltung' ,
71 `veranstaltung_id_adresse` DATE NOT NULL COMMENT 'Datum der Veranstaltung',
72 FOREIGN KEY (veranstaltung_id) REFERENCES sgd_teilnahme(teilnahme_veranstaltung),
73 PRIMARY KEY (veranstaltung_id)
74)
75ENGINE = InnoDB COMMENT = 'Beinhaltet alle Lauf-Veranstaltungen';
76
77DROP TABLE IF EXISTS `sgd_adressen`;
78CREATE TABLE `sgd_dev_1`.`sgd_adressen` (
79 `adresse_id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'Adresse - ID' ,
80 `adresse_plz` INT(5) NOT NULL COMMENT 'Postleitzahl' ,
81 `adresse_strasse` varchar(120) NOT NULL COMMENT 'Straße' ,
82 `adresse_hausnummer` INT(4) NOT NULL COMMENT 'Hausnummer'
83)
84ENGINE = InnoDB COMMENT = 'Die Tabelle beinhaltet alle Adressen';
85
86DROP TABLE IF EXISTS `sgd_veranstaltung_inhalte`;
87CREATE TABLE `sgd_dev_1`.`sgd_veranstaltung_inhalte` (
88 `veranstaltung_id` INT NOT NULL AUTO_INCREMENT COMMENT 'Veranstaltung-ID' ,
89 `veranstaltung_name` varchar(120) NOT NULL COMMENT 'Veranstaltung - Titel' ,
90 `veranstaltung_distanz` INT(4) NOT NULL COMMENT 'Veranstaltung - Distanz in KM' ,
91 `veranstaltung_start` DATE NOT NULL COMMENT 'Startzeitpunkt' ,
92 `veranstaltung_wegfuehrung` INT(250) NOT NULL COMMENT 'Wegführung als Google Maps-ID' ,
93 `veranstaltung_eignung` INT(1) NOT NULL COMMENT '2=Männer, 1=Fauen, 3=Kinder oder 0=Alle' ,
94 `veranstaltung_alter_von` INT(2) NOT NULL COMMENT 'Mindestalter' ,
95 `veranstaltung_alter_bis` INT(3) NOT NULL COMMENT 'Maximales Alter' ,
96 PRIMARY KEY (`veranstaltung_id`)
97)
98ENGINE = InnoDB COMMENT = 'Veranstaltungsinhalte';
99
100/* Fremdschlüssel für tb_laeufer --> tb_adressen */
101
102ALTER TABLE sgd_laeufer ADD FOREIGN KEY (laeufer_id_adresse) REFERENCES sgd_adressen(adresse_id);
103
104/* --------------------------------------------- */
105
106/* Fremdschlüssel für tb_veranstaltung --> tb_veranstaltung_inhalte */
107
108ALTER TABLE sgd_veranstaltung ADD FOREIGN KEY (veranstaltung_id) REFERENCES sgd_veranstaltung_inhalte(veranstaltung_id);
109
110/* --------------------------------------------- */