Announcement

Collapse
No announcement yet.

Zuordnung

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

  • Zuordnung

    Hallo,

    ich habe eine Frage: Wenn ich bei LINQTOSQL für eine Tabelle mehrere Zuordnungen habe, müssen diese dann immer von der selben Spalte ausgehen?

    Tabelle1:
    spalte1
    spalte2
    spalte3

    Tabelle2:
    spalte1
    spalte2

    Tabelle3:
    spalte1
    spalte2

    Zuordung = Tabelle1.spalte1 -> Tabelle2.spalte1
    und Tabelle1.spalte2 -> Tabelle2.spalte1

    Wenn ich nun mit CreateDateBase diese Datenbank erstellen lasse, kommt ein Fehler (Error 1776 von SQL!)

    Können also mehrere Spalten "pro" Tabelle nicht funktionieren?

    Danke!

    MfG
    Die Taschenlampe!

    Die perfekte Taschenlampe für Ihr Windows Phone!

    - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
    - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


    Hier gehts zu APP!

  • #2
    Hey,

    ich hab mich wohl wieder zu kompliziert ausgedrückt... Kann man in einer Datenbank, immer nur von "eienr" Spalte der jeweiligen Tabelle eine oder mehrere Beziehungen herstellen, oder kann man auch von mehreren Spalten pro Tabelle eine Beziehung herstellen?

    Ich weiß das ich dann mehrere Primörschlüssel brächte (pro Tabelle!), dies geht aber nicht, d.H. ich kann gar keine Beziehung mehr herstellen.

    All das geht weder in linqtosql, noch im sql server management 2005.

    Hoffentlich weiß jemand rat..

    mfg
    Die Taschenlampe!

    Die perfekte Taschenlampe für Ihr Windows Phone!

    - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
    - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


    Hier gehts zu APP!

    Comment


    • #3
      Du kannst natürlich mehrere Beziehungen herstellen. Ein Datensatz in einer Tabelle in einer Datenbank wird durch einen Primärschlüssel eindeutig identifiziert. Auf diesen Primärschlüssel verweisen alle anderen Tabellen. Es macht auch keinen Sinn mehrere Primärschlüssel in einer Tabelle zu haben, das würde keinen Mehrwert bringen. Ausser dass Du einer eindeutigen Nummer eine andere eindeutige Nummer zuweist.
      Allerdings kann eine Zeile in einer anderen Tabelle durchaus mehrfach auf dieselbe Tabelle verweisen. Das sind dann allerdings keine Primärschlüssel sondern sogenannte Sekundärschlüssel.

      Comment


      • #4
        Hallo,

        nun erstmal danke für die Antwort! Ich hab auch fast alles verstanden! Im Prinzip ist es ja dann so, dass ich von der einen Tabelle nur mit dem Primärschlüssel verweisen kann, und mit keiner anderen Spalte dieser Tabelle.

        Also wenn ich eine Tabelle Rezepte habe, mit Rezeptnummer als PK, dann kann ich nur mit Rezeptnummer verweisen.

        Das andere Tabellen beliebig auf diese Rezepte-Tabelle beziehungen haben können ist mir klar.

        Hab ich das so richtig aufgefasst?

        Mercy

        MfG
        Die Taschenlampe!

        Die perfekte Taschenlampe für Ihr Windows Phone!

        - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
        - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


        Hier gehts zu APP!

        Comment


        • #5
          Ein Primärschlüssel ist nichts womit man verweist, sondern auf diesen wird immer verwiesen. Ein Primärschlüssel identifiziert eine Zeile in einer Tabelle eindeutig.

          Du kannst aber in einer Zeile mehrere Verweise auf andere Tabellen, auch mehrmals dieselbe Tabelle, haben. Diese nennen sich Sekundärschlüssel. In der Spalte des Sekundärschlüssel steht üblicherweise immer der Wert eines Primärschlüssels aus einer anderen Tabelle.

          Näheres kannst Du hier finden:

          http://de.wikibooks.org/wiki/Einführ...ltsverzeichnis

          Ein Beispiel:

          Du hast eine Tabelle Buch und eine Tabelle Kapitel:

          Buch
          Id_Buch number Pk
          Titel varchar
          Autor varchar

          Kapitel
          Id_Kapitel number Pk
          Id_Buch number Fk
          Kapitelname varchar
          AnzahlZeichen number

          Pk = Primary Key (Primärschlüssel)
          Fk = Foreign Key (Sekundärschlüssel oder Fremdschlüssel)

          Die Tabelle Buch verweist auf gar nichts und hat als Primärschlüssel eine Id_Buch, welche über eine laufende in der Datenbank generierte abstrakte Nummer einen Datensatz (also ein Buch) exakt identifiziert. Keine 2 Bücher haben dieselbe Id.

          Bei der Tabelle Kapitel ist es dasselbe mit Id_Kapitel. Nur hat diese Tabelle noch einen Sekundärschlüssel auf die Tabelle Buch (Id_Buch). In dieser Spalte steht immer die Id eines Buchs. Damit ordnest Du das Kapitel einem Buch zu. In den meisten (oder wahrscheinlich mittlerweile allen) gängigen Datenbanken lassen sich dafür auch sogenannten Constraints definieren. Das heisst die Datenbank stellt sich, dass wenn dort ein Wert steht auch ein der Tabelle Buch ein passender Eintrag vorhanden sein muss. Ansonsten bekommst Du einen Fehler.

          Beispieldaten:

          Code:
          Tabelle Buch
          =================================================
          Id_Buch Name                    Autor
          1       Illuminati              Dan Brown
          2       Der Schatten des Windes Carlos Ruiz Zafon
          
          Tabelle Kapitel
          =================================================
          Id_Kapitel Id_Buch Kapitelname AnzahlZeichen
          1          1       Anfang      12341
          2          1       Ende        4564
          3          2       Anfang      63456
          4          2       Mittelteil  23423
          5          2       Ende        1234
          Zuletzt editiert von fanderlf; 29.03.2010, 17:41.

          Comment


          • #6
            Du kannst aber in einer Zeile mehrere Verweise auf andere Tabellen, auch mehrmals dieselbe Tabelle, haben. Diese nennen sich Sekundärschlüssel.
            Kann ich auch mehrere spalten in einer Tabelle dafür nutzen? Das wäre meine Frage!

            MfG
            Die Taschenlampe!

            Die perfekte Taschenlampe für Ihr Windows Phone!

            - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
            - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


            Hier gehts zu APP!

            Comment


            • #7


              Jetzt hab ichs glaub ich gecheckt! Danke!

              Mein Problem war: Ich hab deine Hilfe voll verstanden! Beliebig viele kann ich wie in Tabelle Users mit UserID verknüpfen.

              Meine Frage war aber: Kann ich jetzt zusätlich dasselbe nochmalmit z.B. Users - IsAdministrator und Tasks - IsDeleted (sinnloses Beispiel!!) verknüpfen. Die Antwort ist wie ich mir grad erdenken kann, nein, da ein Primärschlüssel erforderlich ist.

              Ist das so jetzt richtig? *g*

              MfG
              Die Taschenlampe!

              Die perfekte Taschenlampe für Ihr Windows Phone!

              - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
              - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


              Hier gehts zu APP!

              Comment


              • #8
                Theoretisch geht es auch über mehrere Spalten. Da aber ein PK in aller Regel keine andere Bedeutung hat als diejenige der eindeutigen Identifizierung, gibt es fast niemals die Notwendigkeit oder einen Sinn darin, eine Verknüpfung über mehrere Spalten zu verwirklichen. Jürgen

                Comment


                • #9
                  Jürgen hats schon geschrieben. Es gibt auch kombinierte Primary Keys oder auch zusammengesetzten Primärschlüssel genannt. Allerdings sollte man von diesen die Finger lassen. Wenn man erstmal nur eine Verknüpfung hat geht's vielleicht gerade noch. Wenn dann später allerdings noch von einer zweiten oder dritten Tabelle auf verknüpft werden soll musste Du überall alle Spalten die zum dem zusammengesetzten Primary Key gehören vorhalten.

                  Was hättest Du denn für einen Anwendungsfall wo Du das brauchen würdest? Mal anders herum gefragt

                  Comment


                  • #10
                    Also, ich habe eine Rezeptedatenbank, wobei die tabelle Rezepte mit den dazugehörigen Komponenten verknüpft ist (Über den PK Rezeptnummer)

                    Ich habe auch eine Tabelle Änderungen, wo die letze Änderung, und vom wem hinterlegt ist.

                    Nun wollte ich die Tabelle Komponenten, Rezepte usw. über eine Spalte Änderungsnummer mit Änderung->Änderungsnummer verknüpfen.

                    Mitlerweilse habe ich für jede Tabelle (Rezepte, Komponenten, Lieferanten...) eine eigene Spalte in Änderungen eingefügt, und somit z.B. rezepte über Rezeptnummer verknüpft.

                    Sobald aber in der Tabelle Rezepte Änderungsnummer UND Rezeptnummer verwiesen werden, geht das nicht mehr.

                    Das WAR der Grund. Nun hab ich alles über jeweils einen PK stabil gelöst, dank euch! :-)

                    MfG
                    Die Taschenlampe!

                    Die perfekte Taschenlampe für Ihr Windows Phone!

                    - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
                    - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


                    Hier gehts zu APP!

                    Comment

                    Working...
                    X