Ü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:

Das Verhalten beim Werte einfügen

Weitere Tabelle mit FK anlegen

Datenbankvergleich > Übungen zu Transaktionen

 

 
© 2001 by  tbee / Impressum last update at: 14.05. 2003 22:05:06
url: www.tbee.de/mysql/p5_mysql_foreignkey.php