SQL Klassen Personal und Adresse atomar sein

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Klassen Personal und Adresse atomar sein

    Hallöchen,

    also ich habe zwei Klassen einmal Adresse und Personal. Ich würde es gern so haben, dass ich in Personal bestimmte Spalten aus der Klasse Adresse ausgeben kann. Des weitern sollen die beiden Klassen aber atomar sein, also wenn ich bespielsweise eine Zeile (PersonalNr) löschen. Soll die Adresse weiterhin bestehen bleiben. Kann mir jemand da weiter aus die Sprünge helfen ?

    Wenn ich in Adresse die PersonalNr als Fremdschlüssel deklariere, wie verfällt sich das dann mit dem löschen etc...?

    Vielen Dank schon mal im voraus...!!!

  • #2
    Hallo,

    was für eine Datenbank ist das denn? MySQL?

    Die Constraints kann man so definieren, dass bei Löschvorgängen (und auch bei Updates) das gewünschte Verhalten automatisch angewandt wird.

    Code:
    on delete set null
    sorgt dafür, dass der verweisende Fremdschlüssel abhängiger Datensätze auf null gesetzt wird, wenn der Elterndatensatz gelöscht wird. Die Fremdschlüsselspalten mussen natürlich nullable sein.

    Gruß,

    Anja
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      MySQL

      Kommentar


      • #4
        Ok, da ist das genau so, solange du nicht MyISAM nimmst. Und? Klappt's schon?
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Ich verstehe das nicht so ganz... Ich muss doch die beiden Tabellen vorher erstmal miteinander verknüpfen?

          Wenn ich z.b
          SELECT * FROM adresse,personal ;
          ausführe, dann kann ich mir ja beide Tabellen anzeigen lassen... Aber ich muss doch erstmal AdresseNr mit PersonalNr verbinden ?

          Kommentar


          • #6
            Sprich ich muss in der Klasse Adresse die PersonalNr als Fremdschlüssel definieren ?

            Kommentar


            • #7
              Richtig. Und der Doppelpost war überflüssig ;-)
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Lies bitte am besten mal über Joins nach. Ein paar Grundlagen zum Thema Datenbanken brauchst du für dein Projekt schon. Auch der Begriff atomar, den du verwendet hast, passt aus meiner Sicht nicht. Ich habe es (hoffentlich richtigerweise) so verstanden, dass du die beiden Relationen (oder Tabllen, aber nicht Klassen) nicht komponierst, sondern aggregierst, was zum nächsten Thema führt, über das du dich informieren solltest: Beziehungstypen.

                Gruß,

                Anja
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Zitat von b0db0x Beitrag anzeigen
                  Wenn ich in Adresse die PersonalNr als Fremdschlüssel deklariere, wie verfällt sich das dann mit dem löschen etc...?
                  Du musst halt alle zugehörigen Adressen löschen, wenn du eine Person löschst. Wenn du das sauber programmierst, ist das eine zentrale Stelle im Programm, die du einmal schreibst und nie wieder anfassen musst. Oder du verwendest ein Framework, dass das für dich erledigt.

                  Kommentar


                  • #10
                    Ok... der Begriff atomar passt vielleicht nicht so ganz !!! Aber das Thema mit den Beziehungen etc. ist für mich klar ! Es fehlt leider noch die Umsetzung mit PHP und SQL...

                    Mit dem löschen habe ich es jetzt mit ON DELETE SET NULL gemacht, da wenn der Primärschlüssel gelöscht wird der Datensatz weiterhin bestehen soll.

                    Ist es mit Php möglich mehrere Anweisungen mit mysql_db_query() auszuführen ? Hab gelesen, dass es nicht funktioniert?

                    Kommentar


                    • #11
                      Zitat von b0db0x Beitrag anzeigen
                      Ist es mit Php möglich mehrere Anweisungen mit mysql_db_query() auszuführen ? Hab gelesen, dass es nicht funktioniert?
                      PHP: mysqli::multi_query - Manual

                      Im Normalfall braucht man aber keine Multiqueries. Ich programmier jetzt schon über zwei Jahre PHP und hab nich nie einen Multi-Query benötigt.

                      Kommentar


                      • #12
                        Wenn du mit "mehrere Anweisungen" ein DELETE über mehrere Datensätze meinst, das geht. DELETE lässt isch fast genau so nutzen wie SELECT, du kannst also den gleichen JOIN zum Löschen nehmen, den du auch zum Abrufen der Adressen einer Person nimmst.

                        Gruß,

                        Anja
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar

                        Lädt...
                        X