steffen: Korrekte schribweise der Datenbank

Hi,

Ich habe nun den Fall, dass ich eine Tabelle 'Firma'. Darin steht der Firmenname und die eine Mitarbeiter_ID.

Soll ich nun die Tbl 'Mitarbeiter' so erstellen:

Mitarbeiter

ID
Mitarbeiter_ID
Name
Vorname

oder eine zwischentabelle? Wie kann ich das mit PHP am besten auslesen? Weil bisher weiß ich nur, dass dies mit 2 Query ABfragen geht, oder liege ich falsch?

Danke euch für die Hife

Steffen

  1. Hey!

    Hi,

    Ich habe nun den Fall, dass ich eine Tabelle 'Firma'. Darin steht der Firmenname und die eine Mitarbeiter_ID.

    Soll ich nun die Tbl 'Mitarbeiter' so erstellen:

    Mitarbeiter
    ID
    Mitarbeiter_ID
    Name
    Vorname

    oder eine zwischentabelle? Wie kann ich das mit PHP am besten auslesen? Weil bisher weiß ich nur, dass dies mit 2 Query ABfragen geht, oder liege ich falsch?

    Kannst du dich vielleicht mal klarer ausdrücken? "Ich habe nun den Fall, dass ich eine Tabelle 'Firma'." Ah, ja! Was ist denn das Problem?

    --
    -------------------
    Zur Info: Ich habe leider nur PHP 4.4.2 und MySQL 4.1.20 zur Verfügung!
    -------------------
    ie:% fl:| br:> va:) ls:[ fo:) rl:( n4:° ss:| de:> js:| ch:? sh:( mo:) zu:)
    SELFCode Decoder
    1. Hi Hendrik,

      mein Problem ist das, dass ich

      1. Nicht weiß, wie ich die Tabelle am geschicktesten mache (ob eine Zwichentabelle dabei mehr sinn macht, als die Werte in die 'Mitarbeiter' zu schreiben.

      2. Wüßte ich gerne wie ich die am geschicktesten auslese (ob 1 query oder ob ich 2 querys benötige)

      Ok Tabellenerklärung:

      Tbl Firma

      ID, Firmenname, Land, Mitarbeiter_ID
      1, Siemens, D, 1

      Tbl Mitarbeiter

      ID, Name, Vorname
      1, Hubert, Steffen
      2, Mueller, Peter

      Nun arbeiten beiden bei Fa. Siemens. Mach ich nun am geschicktesten eine zwischentabelle, wie zB:

      tbl Firma_Mitarbeiter

      tbl_Firma, tbl_mitarbeiter
      1, 1
      1, 2

      oder soll ich dies eher in tbl mitarbeiter dazuschreiben?

      Wie schreib ich die Query am geschicktesten, um zu erfahren wie die firma heisst, in welchem Land sie ist und welche mitarbeiter dort arbeiten. Bisher nutzte ich da immer 2 querys dazu.

      Gruß Steffen

      1. Hey!

        Wie schreib ich die Query am geschicktesten, um zu erfahren wie die firma heisst, in welchem Land sie ist und welche mitarbeiter dort arbeiten. Bisher nutzte ich da immer 2 querys dazu.

        Dann mach das doch einfach weiterhin, wenn nichts dagegespricht!

        Hendrik

        --
        -------------------
        Zur Info: Ich habe leider nur PHP 4.4.2 und MySQL 4.1.20 zur Verfügung!
        -------------------
        ie:% fl:| br:> va:) ls:[ fo:) rl:( n4:° ss:| de:> js:| ch:? sh:( mo:) zu:)
        SELFCode Decoder
        1. Hi Hendrik,

          ja klappt auch wunderbar, aber wollte nur fragen, ob es da eine bessere Lösung gibt.

          mfg

          1. Hallo

            ja klappt auch wunderbar, aber wollte nur fragen, ob es da eine bessere Lösung gibt.

            Selbstverständlich gibt es eine weit bessere Lösung, Rouven hat sie erläutert.

            Freundliche Grüße

            Vinzenz

      2. Hi Steffen,

        Tbl Firma
        ID, Firmenname, Land, Mitarbeiter_ID
        1, Siemens, D, 1

        Tbl Mitarbeiter

        ID, Name, Vorname
        1, Hubert, Steffen
        2, Mueller, Peter

        Das ist aus meiner Sicht ein klassischer Fall von falsch herum modellierter Beziehung. Du hast EINE Firma mit N Mitarbeitern. EIN Mitarbeiter gehört aber nur zu EINER Firma.
        Solange das das Szenario ist, ist die Beziehung tatsächlich 1:n. Bei derartigen Beziehungen legt man den Fremdschlüssel auf die Seite, von der aus die :1-Beziehung besteht, weil der Satz sowieso existiert. Im Klartext: 1 Datensatz für die Firma, 1 Datensatz für den Mitarbeiter und jeder Mitarbeiter weiß zu welcher Firma er gehört:
        ID, Name, Vorname, FirmenID

        Solltest du in der Tat eine n:m-Beziehung haben weil ein Mitarbeiter bei mehreren Firmen arbeitet, dann wird diese wie folgt aufgelöst:
        Firma (ID, Name, Land)
        Mitarbeiter (ID, Name, Vorname)
        Anstellung(ID_Firma, ID_Mitarbeiter)

        In beiden Fällen ist es in der Regel (oder sagen wir nach meiner Erfahrung) effizienter die Datenbank alle Aufgaben in einer Abfrage wahrnehmen zu lassen, also mit Joins zu arbeiten. SELFHTML hält da auch etwas Information für dich bereit:
        Einführung Joins
        Fortgeschrittene Joins

        MfG
        Rouven

        --
        -------------------
        Death is nature's way of telling you to slow down.