Announcement

Collapse
No announcement yet.

Probleme bei Datenbankstruktrierung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme bei Datenbankstruktrierung

    Hallo Zusammen,
    gleich vorab... Ich beschäftige mich mit MySQL erst ein paar Tage...

    Folgendes Problem.

    Ich möchte sowas wie eine Chronologie unser Gemeinde machen. Also Daten aus 50Jahren und länger.

    Jetzt habe ich mir überlegt:
    Als erstes wollte ich die Personen, die so in den Unterlagen stehen, in einer Tabelle runter schreiben
    Als Beipsiel:
    Code:
    +------------+----------------+---------------+------------------+-----------------+---------------------+----------------------+--------------------+
    | PersonenID | PersonenAnrede | PersonenTitel | PersonenNachname | PersonenVorname | PersonenGeburtsname | PersonenGeburtsdatum | PersonenTodesdatum |
    +------------+----------------+---------------+------------------+-----------------+---------------------+----------------------+--------------------+
    |          1 | Herr           |               | Mustermann         | Max          | Mustermännschen            | 1900-01-01           | 1950-01-01         |
    |          2 | Herr           |               | Mustermann         | Max2          | Mustermännschen            | 1900-01-01           | 1950-01-01         |
    |          3 | Herr           |               | Mustermann         | Max3         | Mustermännschen            | 1900-01-01           | 1950-01-01         |
    +------------+----------------+---------------+------------------+-----------------+---------------------+----------------------+--------------------+
    Dann wollte ich in einer anderen Tabelle einfach nur die Ereignisse runter schrieben:
    Code:
    +------------+----------------+---------------+
    | EreignissID | Jahr | Person | Ereignis | 
    +------------+----------------+---------------+
    |          1 | 1920 | Max Mustermann  | Hat sein Geschäft "Mustermännchen" eröffnet |
    |          2 | 1905 | Max2 Mustermann  | Ist kein Bettnässer mehr gewesen |
    |          3 | 1960 | Max Mustermann  | I Geschäftsaufgabe vom Geschäft "Mustermännchen" |
    +------------+----------------+---------------+
    Somit hätte ich ein Auflistung aller Personen und Ereignisse, welche ich durch sinvolles Filtern zuweisen kann.
    Ich stell mir das so vor, dass man irgendwann mal eine Liste von Personen als HTML/PHP Variante hat. Dort kann man dann die Menschen anklicken und die Ereignisse werden angezeigt.

    Wie bekomme ich es in den Griff, wenn ich Doppelte Namen habe?
    Ich kann mir ja nicht zu jeder Person, die mal erfasst wird die ID merken?

    Habt Ihr da ne Idee? Oder ist das Gesamte Konstrukt zu überdenken?

  • #2
    Die zweite Tabelle besteht aus
    EreignissID | Jahr | PersonID | Ereignis
    und die PersonID ist die ID der ersten Tabelle.
    Weiterhin ist es zielführender
    - eine Tabelle nach der Einzahl -> Person zu benennen
    - nicht den Tabellennamen in jeden Spaltennamen aufzunehmen

    https://www.w3schools.com/sql/sql_foreignkey.asp
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Die zweite Tabelle besteht aus
      EreignissID | Jahr | PersonID | Ereignis
      und die PersonID ist die ID der ersten Tabelle.
      Ich dachte es mir fast :-(
      Also muss ich beim Erfassen immer die ID's parat haben?!

      Originally posted by Christian Marquardt View Post
      Weiterhin ist es zielführender
      - eine Tabelle nach der Einzahl -> Person zu benennen
      - nicht den Tabellennamen in jeden Spaltennamen aufzunehmen
      Ähm... Ja, habe ich mir so überlegt, damit ich dann im PHP eindeutige Zuweisungen habe. Aber Danke für den Tipp

      Comment


      • #4
        Also muss ich beim Erfassen immer die ID's parat haben?!
        Nein
        https://www.w3schools.com/sql/sql_autoincrement.asp
        Christian

        Comment


        • #5
          Ähmmmmm.... Ich raff es nicht ganz....

          Mal angenommen ich lesen einen Text der da heißt:

          Max Mustermann eröffnet im Jahre 1920 sein Geschäft "Mustermännchen" in der Mustermannstraße Nr4.
          Jetzt würde ich in die Tabelle Ereignisse folgendes schreiben:
          Code:
          INSERT INTO Ereignis (EreignisID,Jahr,Person,Ereignis)
          VALUES ('1','1920','????','Max Mustermann hat sein Geschäft "Mustermännchen" eröffnet');
          Wo bekomme ich jetzt die passende ID her? Ich verstehe durchaus, dass ich mit AUTO_INCREMENT eine eindeutige Zahl in der "Personendatenbank" haben kann, aber woher soll ich beim befüllen der Ereignistabelle denn die ID wissen?

          Comment


          • #6
            Die musst du nicht reinschreiben. Das macht die Datenbank für dich.
            Warum schaust du dir nicht das Beispiel auf der verlinkten Seite an

            INSERT INTO Persons (FirstName,LastName)
            VALUES ('Lars','Monsen');

            Es wird die ID nicht geschrieben
            Christian

            Comment


            • #7
              Originally posted by Christian Marquardt View Post
              Die musst du nicht reinschreiben. Das macht die Datenbank für dich.
              Warum schaust du dir nicht das Beispiel auf der verlinkten Seite an

              INSERT INTO Persons (FirstName,LastName)
              VALUES ('Lars','Monsen');

              Es wird die ID nicht geschrieben
              Habe ich gelesen. Habe ich glaube sogar verstanden.
              Mal das was ich verstanden habe:
              in der Tabelle "Personen" wird mit Hilfe von AUTO_INCREMENT eine eindeutige Zahl generiert. Diese muss ich nicht eintragen.

              Wie bekomme ich jetzt aber diese eindeutige Zahl, in meine andere Tabelle rein?
              Mal angenommen in der Tabelle "Personen" steht jetzt bei Max Mustermann als ID eine Automatisch generierte Nr.5

              Wenn ich jetzt das Ereignis befülle und dort die ID stehen muss, muss ich doch wissen, dass ich bei Max Mustermann immer eine Nr.5 eintragen muss.

              Comment


              • #8
                Das sind doch 2 unabhängige Statements. Ein insert einer Person und ein insert eines Ereignisses.
                Wenn du ein Ereignis eingibt, musst du doch vorher wissen, zu welcher Person es gehört. Dann kennst du auch die ID der Person
                Bsp. wird auf einer Oberfläche die Person aus eine Liste ausgewählt. Bei der Auswahl kennst du dann auch die ID, da die Oberfläche in irgendeiner Form die Daten zu einer Person (mindestend die ID) vorhalten muss
                Christian

                Comment


                • #9
                  Okay... Da haben wir aneinander vorbei geschrieben und waren im Kern schon recht nah zusammen...

                  Das war ja der Kern der Frage: Muss ich beim erfassen immer die ID parat haben. Das ist damit bestätig.

                  Vielen Dank

                  Comment

                  Working...
                  X