|
|
Übungen mit Foreign Keys mit InnoDB Tabellen in Mysql
Folgende Tabellen werden für die Übungen benötigt:
# Tabellenstruktur für Tabelle `autor`
CREATE TABLE `autor` ( `id` int(10) NOT NULL , `name` varchar(128) NOT NULL default '', PRIMARY KEY (`id`), KEY `NAME` (`name`) ) TYPE=InnoDB;
# Tabellenstruktur für Tabelle `buch`
CREATE TABLE `buch` ( `id` int(10) NOT NULL, `autor_id` int(10) NOT NULL , `titel` varchar(128) NOT NULL default '', PRIMARY KEY (`id`), KEY `TITEL` (`titel`), INDEX idx_autor_id (autor_id), FOREIGN KEY (autor_id) REFERENCES autor(id) ON DELETE CASCADE ) TYPE=InnoDB ;
CREATE TABLE `buch2` ( `id` int(10) NOT NULL, `autor_id` int(10) , `titel` varchar(128) NOT NULL default '', PRIMARY KEY (`id`), KEY `TITEL` (`titel`), INDEX idx_autor_id (autor_id), FOREIGN KEY (autor_id) REFERENCES autor(id) ON DELETE SET NULL ) TYPE=InnoDB ;
CREATE TABLE `buch3` ( `id` int(10) NOT NULL, `autor_id` int(10) NOT NULL, `titel` varchar(128) NOT NULL default '', PRIMARY KEY (`id`), KEY `TITEL` (`titel`), INDEX idx_autor_id (autor_id), FOREIGN KEY (autor_id) REFERENCES autor(id) ON DELETE RESTRICT ) TYPE=InnoDB ;
# Daten
INSERT INTO `autor` VALUES (1002, 'Friedrich Schiller'); INSERT INTO `autor` VALUES (1000, 'Heinrich Heine'); INSERT INTO `autor` VALUES (1001, 'Hermann Hesse'); INSERT INTO `autor` VALUES (1003, 'Martin Walser');
INSERT INTO `buch` VALUES ('10001', '1001','Vom Winde verweht'); INSERT INTO `buch` VALUES ('10002', '1002','Das Leben ist schön'); INSERT INTO `buch` VALUES ('10003', '1002','Der Held der DB'); INSERT INTO `buch` VALUES ('10004', '1003','Nie wieder SQL');
Analyse der Unterschiede
Beim Löschen von Autoren in den verschiedenen Tabellen:
Modifizieren der Tabellen
Foreign Key mit Update Definitionen versehen:
- ON UPDATE CASCADE
- ON UPDATE SET NULL
- ON UPDATE NO ACTION
- ON UPDATE RESTRICT
Das Verhalten beim Werte einfügen
- Weitere Werte einfügen
- Update auf bestehende Werte (Buch & Autor!)
Weitere Tabelle mit FK anlegen
- Tabelle Verlag anlegen (mit FK im Create)
- Tabelle Auflage anlegen (FK mit ALTER )
|
|