Announcement

Collapse
No announcement yet.

Einfache 1:1-Relation? Möglich?

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

  • Einfache 1:1-Relation? Möglich?

    Hallo!
    Im Rahmen eines Schulprojekts müssen wir eine Datenbank basteln.
    Wir arbeiten mit phpMyAdmin und wollen eine 1:1-Relation herstellen.

    Bei der Registrierung wird in der Tabelle user_2 eine id vergeben. Diese ID soll in der Tabelle profile automatisch wieder auftauchen, um die Profile anhand der ID identifizieren zu können.

    Wir schaffen es einfach nicht das der Eintrag in id aus user_2 automatisch in id aus profile angezeigt wird.

    Wir kommen und kommen zu keinem Ergebnis - bitte um Hilfe!

    mfg

  • #2
    1:1 Relationen machen im Normalfall in einer DB keinen Sinn. Nur in extremen Performancesituationen kann es sein, dass das einen Vorteil bringt. Davon gehe ich aber bei einem Schulprojekt nicht aus

    1:1 Relationen sollten einfach in eine Tabelle zusammengezogen werden. "Normale" Datenbank Beziehung sind entweder 1:n oder m:n.

    Ich denke ihr meint einen Foreign Key oder auch Fremdschlüssel. Vielleicht einfach mal danach googlen.

    Comment


    • #3
      Danke erstmal für die Antwort.

      Ich bin jetzt mittlerweile soweit das ich die indexe definiert hab und der Fremdschlüssel korrekt angenommen wird, jedoch überträgt er den Wert der hinzugefügt wird einfach nicht in das FS-Attribut.

      [highlight=sql]
      CREATE TABLE IF NOT EXISTS `profile` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `alter_2` date DEFAULT NULL,
      `sex` tinyint(1) DEFAULT NULL,
      `name` text,
      `avatar` text,
      `klasse_schein` text,
      `schein_datum` date DEFAULT NULL,
      `fzg_from` text,
      `fzg_mod` text,
      `fzg_platz` int(10) unsigned DEFAULT NULL,
      `fzg_sonstiges` text,
      `adr_anschrift` text,
      `adr_plz` int(10) unsigned DEFAULT NULL,
      `tel` text,
      `handy` int(10) unsigned DEFAULT NULL,
      `icq` int(10) unsigned DEFAULT NULL,
      `msn` text,
      `skype` text,
      `fb` text,
      `vorname` text,
      KEY `usr_ind` (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


      CREATE TABLE IF NOT EXISTS `user_2` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `user` text,
      `pass` text,
      `mail` text,
      PRIMARY KEY (`id`),
      KEY `usr_ind` (`id`)
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


      ALTER TABLE `profile`
      ADD CONSTRAINT `profile_ibfk_1` FOREIGN KEY (`id`) REFERENCES `user_2` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
      [/highlight]
      Zuletzt editiert von DuaLiTy; 28.01.2011, 17:51.

      Comment


      • #4
        Wie sieht denn Dein Insert kommando aus? Du musst natürlich den FK Wert selbst in die entsprechende Spalte eintragen. Die Datenbank passt nur auf dass Du keine ungültigen Werte einträgst Dann bekommst Du einen Fehler.

        Comment


        • #5
          Ok das wirft unseren Plan natürlich über den Haufen.
          Wir dachten der Wert wird automatisch in das mit dem Fremdschlüssel behafteten Attribut eingetragen.
          Gibt es denn eine solche Möglichkeit?

          Comment


          • #6
            woher soll denn die Datenbank bei einem INSERT wissen welchem anderen Datensatz er zugeordnet werden soll?

            Comment


            • #7
              Bitte beachten: Formatierung von SQL in Beiträgen
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment

              Working...
              X