Ihr habt da einen Klassiker am Wickel - der einzig Sinnvolle Weg, soetwas zu lösen und im Zweifel weder ein Feld zu wenig oder zu viel noch so böse böse Ideen wie die vom Hansa verwirklichen zu müssen lautet: Zwischentabelle!
Delphi-Quellcode:
+---------------------+
|Tabelle Buch_Autor |
+--------------------+ +---------------------+
|Tabelle Bücher | |idBuch_Autor(int)(PK)|
+--------------------+ | |
|idBuch (int)(PK) |<------|idBuch (int) (FK) |
| | | |
|... weitere Felder | +---|idAutor (int) (FK) |
| | | | |
+--------------------+ | +---------------------+
|
+--------------------+ |
|Tabelle Autoren | |
+--------------------+ |
|idAutor (int)(PK) |<--+
| |
|... weitere Felder |
+--------------------+
(PK) steht für Primary Key (Primärschlüssel) ein Tabellenweit eindeutiger Wert (einfachste Variante: fortlaufende Zahl /Autoincrement)
(FK) steht für Foreign Key (Fremdschlüssel), verweist auf genau einen Datensatz in der bezogenen Tabelle
Wenn mann nun einen Autor hat, der 2 Bücher geschrieben hat, legt man einfach 2 Datensätze in der Tabelle Buch_Autor an, die beide auf den selben Autor, aber auf unterschiedliche Bücher zeigen.
Hat man ein Buch, an dem 3 Autoren mitgewirkt haben, legt man 3 Datensätze in der Tabelle Buch_Autor an, die alle auf das selbe Buch, jedoch auf jeweils andere Autoren zeigen.
Um solche "normalisierten" Tabellen wieder in einer Abfrage zu einem logisch zusammenhängenden Datensatz zusammenzufügen, benutzt man Joins.
Soviel als kleine Einführung.
Gruß