Verbindungen zwischen Tabellen in Access nur mit ID

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Verbindungen zwischen Tabellen in Access nur mit ID

    Hallo,

    ist es dringend immer nötig das Tabellenverbindungen in Access immer auf ID(Zahlen beruhen)?
    Ich baue gerade eine Datenbank auf. Darin haben Mitarbeiter Kürzel die einmalig sind. Kann ich diese nicht als Verbindungen zwischen Tabellen nutzen wenn diese in beiden vorkommen?

    Danke, Mac
    Primary Key ist immer ein Index petaod. Oder wie meinst du das?

    Du kannst einen Varchar als Primary Key nehmen.
    Ich würde es nicht tun wenn:
    - man den Varchar immer mal wieder ändern muss (und damit den Key)
    - wenn die Daten für den Key sehr lang sind (varchar(20) oder varchar(30) ist noch ok)
    Das ist meine Signatur und sie wird wunderbar sein!
    haben Mitarbeiter Kürzel die einmalig sind.

    Taugt nicht. Wenn der MA heiratet, dann ändern sich Name und Kürzel. Dann hast du ein größeres Problem.
    Wenn ein Feld nicht garantieren kann dass sich der Wert nie ändert, dann ist es kein ID-Kandidat.
    Nimm einfach überall nummerische IDs, das wirkt einheitlicher.
    An manchen Tagen gibt es zu allem Überfluss auch noch Ärger!
    Es muss ein Index drauf liegen? Kurze Erklärung? :D Ich fang gerade erst an.

    Aslo ich habe ein Tabelle mit Shops. Darin stehen Shopnummern, Adresse usw. und das Kürzel (3 Buchstaben) des Verkaufsleiters.
    Und eine Tabelle mit den Verkaufsleitern wo die Kürzel auch drin sind. Ich stelle über die Kürzel in Access die Verbindung zwischen den Tabellen her.
    Wenn man ein DB-Feld als Primary Key markiert, dann wird meines Wissens automatisch ein Index dafür angelegt.
    Access-Tabelleneigenschaften beim Primary Key: Indiziert: Ja (ohne Duplikate). Das lässt sich nicht entfernen ohne den PK zu zerstören. Ist auch besser so.
    An manchen Tagen gibt es zu allem Überfluss auch noch Ärger!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rainman“ ()

    Du kannst sogar zusammengesetze Indizes bauen... Also sagen die Eindeutigkeit wird durch mehrere Felder in Kombination bestimmt.
    Ob das so sinnvoll ist, lassen wir mal dahin gestellt.

    Access bietet mit dem PrimeKey welcher ein Index und eine Zahl ist, welche sogar automatisch hochgezählt wird, einen großen Komfort. Auf den würde ich an deiner Stelle nicht verzichten.

    Schau dir mal Normalisierung von Datenbanken an, wenn du dich damit noch nicht auseinander gesetzt hast...
    de.wikipedia.org/wiki/Normalisierung_(Datenbank)
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MemoAnMichSelbst“ ()

    Rainman schrieb:

    haben Mitarbeiter Kürzel die einmalig sind.

    Taugt nicht. Wenn der MA heiratet, dann ändern sich Name und Kürzel. Dann hast du ein größeres Problem.


    Stimmt nicht immer. Das Kürzel kann ja auch woanders her stammen.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    Mono schrieb:

    wie meinst du das?
    Ich hatte mich schlecht ausgedrückt.
    Ich meinte es so, dass es der Datenbank eigentlich egal ist, ob sie den Index für den Schlüssel an einer Nummer oder an einem String aufhängt.


    Noch ein paar Randbemerkungen:
    Als Primary Key taugt das Personenkürzel natürlich nur für eine Tabelle.
    Man sollte nicht vergessen, auch auf die korrespondierenden Fremdschlüssel einen Index zu legen.
    Weil meiner Erfahrung nach bei dem angedachten Konstrukt die Abfragen meist nicht nur in eine Richtung gehen.


    Ich kenne einige Firmen, bei denen sich die Personal-Kurzbezeichnung (meist gleichzeitig auch Benutzername) als einzige Konstante durch die komplette Datenstruktur zieht.
    Es macht die Tabellen für Menschen lesbarer als nur eine Nummer.

    Es erwies sich allerdings manchmal auch schon als Stolperfalle, weil der Primary Key sich natürlich nicht ändern darf, aber irgendjemand bei Namensänderung (z.B. durch Heirat) mit seinem Kürzel/Benutzenamen nicht mehr zufrieden war, weil dieser den Mädchennamen widerspiegelte.
    Also vorher genau überlegen, ob der Key tatsächlich so konstant ist wie er auf Anhieb erscheint.

    Edit: Oh, da gab es ja schon ziemliche Diskussionen in der Zwischenzeit.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --