+ Aufteilung der Attribute (Spalten) in mehrere Relationen ( Tabellen ), so dass eine Form ohne Redundanzen entsteht.
+
+
+
+
+
+
+
+
+
+
+
+
Rg Nr
+
Datum
+
Name
+
Straße
+
Ort
+
Artikel
+
Anzahl
+
Preis
+
+
+
143
+
01.04.2018
+
Max Müller
+
Trumstrasse 4
+
75179 Pforzheim
+
Bleistift
+
1001
+
1,00€
+
+
+
+
+
+ 1. Normalform
+
+
+
Rg Nr
+
Datum
+
Vor Name
+
Nach Name
+
Straße
+
Hausnr
+
PLZ
+
Ort
+
Artikel
+
Anzahl
+
Preis
+
+
+
143
+
01.04.2018
+
Max
+
Müller
+
Trumstrasse
+
4
+
75179
+
Pforzheim
+
Bleistift
+
1001
+
1,00€
+
+
+
+
+
+
+
+
+
Rg Nr
+
Datum
+
Vor Name
+
Nach Name
+
Straße
+
Hausnr
+
PLZ
+
Ort
+
Artikel
+
Anzahl
+
Preis
+
+
+
144
+
01.04.2018
+
Max
+
Müller
+
Trumstrasse
+
4
+
75179
+
Pforzheim
+
Bleistift
+
1001
+
1,00€
+
+
+
+
145
+
01.04.2018
+
Max
+
Müller
+
Trumstrasse
+
4
+
75179
+
Pforzheim
+
Tüte
+
1001
+
0,10€
+
+
+
+
146
+
01.04.2018
+
Max
+
Müller
+
Trumstrasse
+
4
+
75179
+
Pforzheim
+
Ratzefummel
+
1001
+
1,50€
+
+
+
+
+
+ Kunden
+
+
+
+
ID
+
Vor Name
+
Nach Name
+
Straße
+
Hausnr
+
PLZ
+
Ort
+
+
+
1234
+
Max
+
Müller
+
Trumstrasse
+
4
+
75179
+
Pforzheim
+
+
+
+
+
+
+ Rechnungen:
+
+
+
Rg Nr
+
Datum
+
KundenID
+
Artikel
+
Anzahl
+
Preis
+
+
+
144
+
01.04.2018
+
1234
+
Bleistift
+
1001
+
1,00
+
+
+
+
145
+
01.04.2018
+
1234
+
Tüte
+
12
+
0,10
+
+
+
+
146
+
01.04.2018
+
1234
+
Ratzefummel
+
32
+
1,50
+
+
+
+
+
+
+
+
+
+
+
+
+ Verbindung aufnehmen:
+
~$ sudo mysql
+# oder:
+~$ mysql -u BENUTZERNAME -p -h localhost
+
+
+
+
-u : Username
+
-p : Passwort abfragen
+
-h : Host
+
+
+
+ Datenbank erstellen
+
CREATE DATABASE IF NOT EXISTS test;
+
+USE test;
+
+CREATE TABLE IF NOT EXISTS books (
+ BookID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ Title VARCHAR(100) NOT NULL,
+ SeriesID INT, AuthorID INT);
+
+CREATE TABLE IF NOT EXISTS authors
+(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT);
+
+CREATE TABLE IF NOT EXISTS series
+(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT);
+
+INSERT INTO books (Title,SeriesID,AuthorID)
+VALUES('The Fellowship of the Ring',1,1),
+ ('The Two Towers',1,1), ('The Return of the King',1,1),
+ ('The Sum of All Men',2,2), ('Brotherhood of the Wolf',2,2),
+ ('Wizardborn',2,2), ('The Hobbbit',0,1);
+
+
+ Tabellen anzeigen
+
+SHOW TABLES;
+
++----------------+
+| Tables_in_test |
++----------------+
+| authors |
+| books |
+| series |
++----------------+
+3 rows in set (0.00 sec)
+
+
+
+
+
+
DESCRIBE books;
+
++----------+--------------+------+-----+---------+----------------+
+| Field | Type | Null | Key | Default | Extra |
++----------+--------------+------+-----+---------+----------------+
+| BookID | int(11) | NO | PRI | NULL | auto_increment |
+| Title | varchar(100) | NO | | NULL | |
+| SeriesID | int(11) | YES | | NULL | |
+| AuthorID | int(11) | YES | | NULL | |
++----------+--------------+------+-----+---------+----------------+
+
+
+
+
+ Daten anzeigen:
+
SELECT * FROM books;
+
++--------+----------------------------+----------+----------+
+| BookID | Title | SeriesID | AuthorID |
++--------+----------------------------+----------+----------+
+| 1 | The Fellowship of the Ring | 1 | 1 |
+| 2 | The Two Towers | 1 | 1 |
+| 3 | The Return of the King | 1 | 1 |
+| 4 | The Sum of All Men | 2 | 2 |
+| 5 | Brotherhood of the Wolf | 2 | 2 |
+| 6 | Wizardborn | 2 | 2 |
+| 7 | The Hobbbit | 0 | 1 |
++--------+----------------------------+----------+----------+
+7 rows in set (0.00 sec)
+
+ Daten einfügen:
+
INSERT INTO books (Title, SeriesID, AuthorID)
+VALUES ("Lair of Bones", 2, 2);
+
+Query OK, 1 row affected (0.00 sec)