MySQL - Hierarchische Tabellen, Version 1

Alte Version

Dies ist eine alte Version des Inhalts in unserem Archiv. Besuchen Sie die aktuelle Version dieser Seite.

Diese Version wurde von Jola am 12. May 2008 um 22:26 Uhr erstellt.
Bemerkung des Bearbeiters: Erste Version

Änderungen gegenüber vorheriger Version anzeigen


Die Besonderheit von hirarchischen Tabellen im Gegensatz zu anderen Tabellen ist, dass sie, wie der Name schon sagt eine hirarschiche Struktur haben. Diese entsteht dadurch, dass der Fremdschlüssel auf den eigenen Primärschlüssel verweist. Auf diese Weise lassen sich z.B. sehr gut Ordnerstrukturen erstellen.

Ich werde versuchen das Prinzip der hirarchischen Tabellen an einem kleinen Beispiel zu verdeutlichen. Nehmen Sie an Sie wollen Informationen oder Artikel zu verschiedenen Betriebssystemen speichern. Um diese aber zu Ordnen brauchen sie verschiedene Kategorien oder virtuelle Ordner.

Als Erstes erstellen sie eine Tabelle mit 3 Spalten:

 
sql
1
2
3
4
5
 CREATE TABLE `Kategorie`(
`ID` INT(11) NOT NULL PRIMARY KEY auto_increment,
`Name` VARCHAR(45) NOT NULL,
`ElternID` INT(11) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;

Dann können sie z.B. folgenden Inhalt hinzufügen:

 
sql
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Opensource`,`0`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Windows`,`0`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Linux`,`1`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`SUSE`,`3`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Knoppix`,`3`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Win XP`,`2`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Vista`,`2`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Ubuntu`,`3`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Macintosh`,`0`);
INSERT INTO `Kategorie` (`Name`, `ElternID`) VALUE (`Win 2000`,`2`);

Nun haben sie diese Tabelle:

ID Name ElternID
1 Opensource
0
2 Windows 0
3 Linux 1
4 SUSE 3
5 Knoppix 3
6 Win XP 2
7 Vista 2
8 Ubuntu 3
9 Macintosh 0
10 Win 2000 2