In eine Datenbank schreiben die mehrere Verknüpfungen hat



  • Hallo,
    ich habe in meinem Projekt eine komplexe Datenbank und damit ein kleines Problem. Meine Datenbank hat mehrere Tabellen die miteinander verknüpft sind (z.B 1 zu n, n zu m) um Speicher zu sparen. Ich versuche anhand eines kleinen Beispiels mein Problem zu erklären.

    Angenommen ich habe eine Datenbank mit 2 Tabellen, eine Haupttabelle die auch in C++ zu sehen ist und eine Tabelle die mit der Haupttabelle verknüpft ist.
    Die Haupttabelle nenne ich "Haupt" die verknüpfte "Unter".

    In der Haupttabelle ist nur ein Spalte mit der Bezeichnung "Hersteller".
    Die "Unter" Tabelle hat 2 Spalten "HerstellerID" und Name.
    Nun ist die Spalte "Hersteller" von der Tabelle "Haupt" mit der Spalte "HerstellerID" von der Tabelle "Unter" verknüpft.

    In der Spalte "Name" der Tabelle "Unter" stehen mehrere Hersteller drin (z.B Sony, Hp, Toshiba usw.)

    Der Sinn an der ganzen Sache ist das jetzt nurnoch in der Tabelle "Haupt" Spalte "Hersteller" die ID (also 1, 2, 3 usw.) stehen muss und später in C++ wird dann wegen der Verknüpfung zur Tabelle "Unter" anhand der ID der Name angezeigt.

    Jetzt habe ich aber das Problem das wenn ich einen neuen Datensatz in die Tabelle schreiben möchte und der Datansatz hat den Hersteller Sony dann muss ich die ID, also die Verknüpfungszahl, in das Edit Feld eintargen. Da ich aber nicht immer weiß welcher Hersteller sich hinter welcher ID befindet ist dies nicht von Vorteil.
    Ich möchte also in meinem Programm es so haben das ich den Herstellernamen eintragen kann (z.B Sony) und in der Tabelle dann die Verknüpfungszahl eingetragen wird.

    Ich hoffe ich konnte mein Problem gut schildern und es kennt sich jemand hier gut aus mit Datenbanken.

    Danke



  • Dann beschäftige dich mit SQL.



  • Wenn du die BDE und die zugehörigen VCL-Komponenten benutzt, dann kannst du dir mal TDBLookupComboBox bzw. TDBLookupListBox anschauen.

    Ansonsten einfach eine Query nach dem Namen in der Tabelle "Unter" machen, die Id ermitteln und diese dann in die "Haupt" eintragen.

    Am besten du postest mal etwas Code...



  • nur als Anmerkung:
    die Verwendung der TDBLookupComboBox bzw. TDBLookupListBox kann auch ohne BDE erfolgen, d.h. auch die ADO- bzw die IB-Komponenten arbeiten damit


Anmelden zum Antworten