Ankündigung

Einklappen
Keine Ankündigung bisher.

Primärschlüssel über zwei Spalten

Einklappen

Neue Werbung 2019

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

  • Primärschlüssel über zwei Spalten

    Hi...

    ich möchte in meiner Tabelle einen Primärschlüssel über zwei Spalten erzeugen, die Kombination dieser zwei Felder nicht doppelt vorkommen darf.
    Wie mache ich dies mit phpmyadmin? Und was ist das mit dem "Index"? Hat das was damit zu tun?
    Bitte verweist mich jetzt nicht auf die Doku. Da war isch schon und es ist fast alles auf englisch....

    Danke, Oli


  • #2
    lies dir dieses mal genau durch:
    http://ffm.junetz.de/members/reeg/DS...00000000000000
    ---> CREATE TABLE

    ~dilemma~

    Kommentar


    • #3
      ...heißt das nun, dass ich einen separaten Primärschlüssel brauche und die beiden Spalten auf UNIQUE stzen muss?

      Sorry, ich steh echt auf dem Schlauch...

      Kommentar


      • #4
        Re: Primärschlüssel über zwei Spalten

        Zitat von laufkraft
        ...ich möchte in meiner Tabelle einen Primärschlüssel über zwei Spalten erzeugen...
        Hm, wüsste jetzt nicht wozu das notwendig sein sollte, weil wenn
        Zitat von laufkraft
        ...die Kombination dieser zwei Felder nicht doppelt vorkommen darf...
        , dann ist diese Bedingung auch dann erfüllt, wenn nur eines der beiden Felder UNIQUE ist, oder?

        mfg
        stf.

        Kommentar


        • #5
          Re: Primärschlüssel über zwei Spalten

          Zitat von laufkraft
          Ich möchte in meiner Tabelle einen Primärschlüssel über zwei Spalten erzeugen, die Kombination dieser zwei Felder nicht doppelt vorkommen darf.
          Wie mache ich dies mit phpmyadmin?
          Bei der Anlage für eine Tabelle kannst du in phpMyAdmin für jede Spalte festlegen, ob es sich um den Primärschlüssel handelt. Und das wählst du einfach für beide Spalten aus.

          Zitat von laufkraft
          Und was ist das mit dem "Index"?
          Was genau möchtest du dazu wissen?

          Zitat von stf.stream
          Zitat von laufkraft
          ...die Kombination dieser zwei Felder nicht doppelt vorkommen darf...
          , dann ist diese Bedingung auch dann erfüllt, wenn nur eines der beiden Felder UNIQUE ist, oder?
          Nein, du kannst durchaus in einer Spalte den Wert 1 in mehreren Datensätzen haben, so lange diese Datensätze dann unterschiedliche Werte in der zweiten Primärschlüsselspalte haben.

          Kommentar


          • #6
            Re: Primärschlüssel über zwei Spalten

            Zitat von xabbuh
            ...du kannst durchaus in einer Spalte den Wert 1 in mehreren Datensätzen haben, so lange diese Datensätze dann unterschiedliche Werte in der zweiten Primärschlüsselspalte haben.
            ist das nicht die gleiche Aussage? (Sinngemäß)

            Wenn die Kombination zwei Felder nicht doppelt vorkommen darf, dann ist diese Bedingung auch dann erfüllt, wenn nur eines der beiden Felder UNIQUE (z.B. Primärschlüssel) ist.
            Wichtig ist, daß die Kombination nicht doppelt vorkommen darf!

            Übrigens: was ist eine zweite Primärschlüsselspalte? Irgendwie ergibt diese Wortkombination keinen Sinn. :wink:

            mfg
            stf.

            Kommentar


            • #7
              Re: Primärschlüssel über zwei Spalten

              Wenn die Kombination zwei Felder nicht doppelt vorkommen darf, dann ist diese Bedingung auch dann erfüllt, wenn nur eines der beiden Felder UNIQUE (z.B. Primärschlüssel) ist.
              Nein, ist sie eben nicht. Nehmen wir an, du hast eine Tabelle mit zwei Spalten (spalte1 und spalte2). laufkraft möchte nun also, dass spalte1 und spalte2 Bestandteil des Primärschlüssels sind. Dann wären beispielsweise folgende Datensätze möglich:
              Code:
              spalte1 | spalte2
              --------+----------
              1      | 1
              --------+----------
              1      | 2
              --------+----------
              2      | 2
              --------+----------
              Würdest du nur Spalte1 als UNIQUE bzw. Primärschlüssel definieren, wären diese Einträge nicht möglich, da der Wert 1 in Spalte 1 und der Wert 2 in Spalte 2 doppelt vorkommt.

              Übrigens: was ist eine zweite Primärschlüsselspalte? Irgendwie ergibt diese Wortkombination keinen Sinn. :wink:
              Inwiefern sollte diese Bezeichnung keinen Sinn ergeben, wenn sich der Primärschlüssel aus zwei Spalten zusammensetzt?

              Kommentar


              • #8
                Re: Primärschlüssel über zwei Spalten

                Zitat von xabbuh
                Wenn die Kombination zweier Felder nicht doppelt vorkommen darf, dann ist diese Bedingung auch dann erfüllt, wenn nur eines der beiden Felder UNIQUE (z.B. Primärschlüssel) ist.
                Nein, ist sie eben nicht.
                Doch, ist sie eben doch

                Wenn eines der beiden Felder ein "standard"-Primärschlüsselfeld ist, also alle
                Einträge einzigartig sind, dann ist es völlig Wurst, ob in einem zweiten Feld,
                welches als Zweitattribut definiert ist, in allen Rows das selbe, z.B eine 1, steht.
                Der Sinn dieses unterfangens sei dahingestellt, aber die eineindeutige
                Identifikation ist in diesem Fall ausreichend durch das Primärschlüsselfeld allein
                gegeben.
                Meine zugegebenermaßen etwas unklar gestellte Frage an den OP war eigendlich,
                ob er eine echte Kombination mehrerer Attribute für einen Verbundschlüssel wirklich
                benötigt, da Primärschlüssel (auch, oder gerade als Satz) minimal identifizierend sein
                sollten.
                Deine Argumentation jedoch ist trotzdem richtig, wir haben wohl aneinander vorbei
                geredet, meine Schuld.

                P.S.: "zweite Primärschlüsselspalte" ergibt natürlich (siehe oben) dann doch 'nen Sinn.

                mfg
                stf.

                Kommentar


                • #9
                  Re: Primärschlüssel über zwei Spalten

                  Zitat von stf.stream
                  Wenn eines der beiden Felder ein "standard"-Primärschlüsselfeld ist, also alle
                  Einträge einzigartig sind, dann ist es völlig Wurst, ob in einem zweiten Feld,
                  welches als Zweitattribut definiert ist, in allen Rows das selbe, z.B eine 1, steht. Der Sinn dieses unterfangens sei dahingestellt, aber die eineindeutige
                  Identifikation ist in diesem Fall ausreichend durch das Primärschlüsselfeld allein
                  gegeben.
                  Wenn sich jeder Datensatz eindeutig über eine Spalte identifizieren lässt, hast du natürlich Recht. Aber um das in diesem Fall beurteilen zu können, müsste man die Tabellenstruktur des OP kennen.
                  Zitat von stf.stream
                  Deine Argumentation jedoch ist trotzdem richtig, wir haben wohl aneinander vorbei geredet, meine Schuld.
                  Kommt vor.

                  Kommentar


                  • #10
                    Re: Primärschlüssel über zwei Spalten

                    Code:
                    spalte1| spalte2
                    --------+----------
                    1         | 1
                    --------+----------
                    1         | 2
                    --------+----------
                    2         | 2
                    --------+----------
                    Genauso sieht meine Tabelle aus, kommen halt noch einige Felder hinzu, die aber im Moment nicht wichtig sind.
                    Ursprünglich hatte ich noch eine Spalte "ID" als Primärschlüssel, aber diese macht irgendwie in meinem Fall (glaube ich) keinen Sinn.
                    Ich möchte die im obigen Beispiel genannten Kombinationen zuslassen, aber ein weiterer Eintrag mit z.b.
                    Code:
                    spalte1| spalte2
                    --------+----------
                    1         | 1
                    --------+----------
                    1         | 2
                    --------+----------
                    2         | 2
                    --------+----------
                    1         | 2
                    --------+----------
                    darf nicht möglich sein.

                    Was muss ich nun in PHPMyAdmin tun?
                    Und was ist der Unterschied zwischen Unique und Primärschlüssel?

                    Kommentar


                    • #11
                      Von phpmyadmin habe ich keine AHnung. Aber bei CREATE TABLE werden einfacha lle gewünschten Felder bei PRIMARY angegeben.

                      Code:
                      CREATE TABLE `test`.`neuetabelle` (
                        `eins` int(11) unsigned NOT NULL DEFAULT '0',
                        `zwei` int(11) unsigned NOT NULL DEFAULT '0',
                        PRIMARY KEY (`eins`,`zwei`)
                      );
                      Ein Primärschlüssel ist ein besonderer UNIQUE-Index.
                      Wie der Name schon sagt, soll er das primäre Unterscheidungsmerkmal aller Datensätze einer Tabelle angeben.

                      Kommentar


                      • #12
                        Re: Primärschlüssel über zwei Spalten

                        Zitat von laufkraft
                        Was muss ich nun in PHPMyAdmin tun?
                        Zitat von xabbuh
                        Bei der Anlage für eine Tabelle kannst du in phpMyAdmin für jede Spalte festlegen, ob es sich um den Primärschlüssel handelt. Und das wählst du einfach für beide Spalten aus.

                        Kommentar

                        Lädt...
                        X