Sascha: relationale Datenbank

oh weh es klemmt..

Ich habe ein Problem mit der Logik....

Bin gerade dabei eine relationale Datenbank(Gerätedatenbank EBV) komplett neu aufzubauen. Eine (sehr sehr)kurze Beschreibung: Ich habe u.a. eine Tabelle Host, in dieser werden allerhand Daten erfasst u.a. auch die IP-Adresse... aber nun kommt's..die IP-Adresse ist zwar eindeutig(..ist Logisch) aber der Host kann mehrere dieser IPs besitzen(ist auch logisch aber das ist das Problem). Aber deswegen Felder in der Tabelle vorgeben ist nicht gerade dolle, weil alle IPs des Host berücksichtigt werden müssen(z.B. der lütte Server bei mir gegenüber hat alleine schon 20 IPs).

kurzum: Soll ich es mit einer extra "IP"-Tabelle wagen?Und wie sollte ich einbinden

Für Hilfe und Anregungen bin ich sehr dankbar...habe mich jetzt leider daran fest gebissen.

vielen dank sagt

der "verklemmte" Sascha ;-D

  1. oh weh es klemmt..

    Ich habe ein Problem mit der Logik....

    Bin gerade dabei eine relationale Datenbank(Gerätedatenbank EBV) komplett neu aufzubauen. Eine (sehr sehr)kurze Beschreibung: Ich habe u.a. eine Tabelle Host, in dieser werden allerhand Daten erfasst u.a. auch die IP-Adresse... aber nun kommt's..die IP-Adresse ist zwar eindeutig(..ist Logisch) aber der Host kann mehrere dieser IPs besitzen(ist auch logisch aber das ist das Problem). Aber deswegen Felder in der Tabelle vorgeben ist nicht gerade dolle, weil alle IPs des Host berücksichtigt werden müssen(z.B. der lütte Server bei mir gegenüber hat alleine schon 20 IPs).

    kurzum: Soll ich es mit einer extra "IP"-Tabelle wagen?Und wie sollte ich einbinden

    Jepp, würde ich machen.
    Eine Tabelle mit nur zwei Feldern: host_id und IP (plus einen Primary Key natürlich). Auf beide nen Index und fertig. Mußt dann halt immer über die host_id mit der Hosts-Tabelle joinen -

    SELECT h.host_name, r.IP from hosts h, rel_host_ip r
    WHERE h.host_id = r.host_id

  2. Hallo,

    Leg für die IP-Adressen würde ich eine eigene Tabelle anlegen.
    jedes "Gerät" in Deiner Datenbank hat ja eine ID. Es gibt also einmal eine Tabelle mit ungefähr solchen Feldern:
    HardwareID, Beschreibung, Standort, ....

    Und für die IP-Adressen sieht die Tabelle dann so aus:
    HardwareID, IP

    Wenn dann ein Host mehrere IP-Adressen hat, kommt er in der IP-Tabelle auch mehrmals vor. Logisch. Mit
    SELECT * FROM IP_Tabelle WHERE HardwareID=gesuchteID
    kannst Du dann alle IP-Adressen eines gegebenen Hosts abfragen.

    Alles klar?

    Gruss
       MichaelB

  3. Hallo Sascha,

    die Lösung ist relative einfach:

    Es gibt 2 Tabellen: Tabelle "host" und Tabelle "ip"

    beide haben neben ihren Nutzdaten jeweils eine ID-Spalte, z.b. host_id bzw. ip_id als Primärschlüsselspalte. Um für einen Host mehrere IP-Adressen zuordnen zu können, benötigst Du in der Tabelle "ip" noch eine Fremdschlüssel-Spalte, welche auf die Tabelle "host" zeigt, z.B. host_id.
    Eine Abfrage "SELECT * FROM host, ip, WHERE ip.host_id = host.host_id AND host_id = 96" zeigt dir alle IP-Adressen für den Host "96" an.

    HTH

    Gruß Frank