manibam
Goto Top

Access - Spalten miteinander verknüpfen

Hallo

Leider sind die Access Stunden aus der Schulzeit schon etwas her, desswegen auch der komische Titel. (weis nicht genau wie ich es fomulieren sollte ;)

Es geht um eine Access DB, in der ich unsere Hardware aufliste.

Es gibt eine Tabelle Hardware:
746a09b8eb4e1239857c9e4546ae6d6e

und eine Tabelle Geräte
adad0bcef0dee51be3c737e85a090086

In der Tabelle Geräte wird ein Modell einem Typ zugewiesen. zb:

Modell: HP 8570w
Typ: Notebook

In der Tabelle Hardware hab ich eine Spalte Modell, in der ich bei neuen Einträgen das Modell auswählen kann.

Jetzt will ich noch eine Spalte Typ in der Tabelle Hardware machen. Diese soll aber direkt über das Modell ausgefüllt werden.

zb:
neuer Eintrag -> ich wähle das Modell aus "HP 8570w", jetzt soll dann automatisch die Spalte Typ ausgefüllt werden.

wie mach ich das am einfachsten? und wie für ich den richtigen Typ bei den bestehenden Einträgen hinzu?

Content-ID: 205641

Url: https://administrator.de/contentid/205641

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

Biber
Biber 25.04.2013 um 13:51:33 Uhr
Goto Top
Moin @manibam,

dann wäre der erste Schritt das Anlegen einer Parent-Tabelle "Typen" mit zwei (oder mehr) Spalten

  • "Typ", Text, uniquePK (ich würde hier auf eine künstliche ID verzichten bei zu erwartenden 30+x Typen)
  • "Typbeschreibung", Text, opional
  • "whatever" du sonst noch brauchst

... und einer kleinen schlanken Lookup-Tabelle "Modelltyp" mit den Spalten

  • "Modell" vom gleichen Feldtyp und der gleichen Länge wie "Modell" in der Tabelle "Geräte"
  • "Typ" vom gleichen Feldtyp und der gleichen Länge wie "Typ" in der Tabelle "Typen"

...und je
  • einer Parent-Child-Beziehung zwischen "ModellTyp" und "Geräte"
  • einer Parent-Child-Beziehung zwischen "Typ" und "ModellTyp"

Wenn du das hast und in der Tabelle "Typ" die ersten drei Datensätze hast, dann treffen wir uns wieder hier.

Grüße
Biber
manibam
manibam 25.04.2013 aktualisiert um 15:10:54 Uhr
Goto Top
Hallo Biber

so, bin so weit ;)

Hier eine kurze Auflistung der aktuellen Tabellen:

Tabelle: Geräte
Feldname: ID (AutoWert)
Feldname: Typ (Text)
Feldname: Modell (Text)

Tabelle: Gerätetypen
Feldname: ID (AutoWert)
Feldname: Typ (Text)

Tabelle: Hardware
Feldname: HWID (AutoWert)
Feldname: Besitzer (Text)
Feldname: Modell (Text)
Feldname: Typ (Text)

Tabelle: User
Feldname: ID (AutoWert)
Feldname: Name (Text)
Biber
Biber 25.04.2013 um 20:05:52 Uhr
Goto Top
Moin manibam,

sorry, ich hatte zwischendurch noch andere Sachen auf dem Zettel.

Nochmal kurz zur Parent-Child-Foreignkey-Mimik:

Es funktioniert nur sinnvoll, wenn ich von einer Child-Tabelle, bei dir im Beispiel

Tabelle: Geräte (ist ein Child von Parent-Tabelle "Gerätetypen", die den PK GerätenTypen.ID hat )
Feldname: ID (AutoWert)
Feldname: Typ (Text) ---> hier muss das Feld den gleichen Datentyp+das gleiche Format haben wie der primary key der Parent-Tabelle
Feldname: Modell (Text) --> auch hier muss das Feld den gleichen Datentyp+das gleiche Format haben wie der

Tabelle: Gerätetypen
Feldname: ID (AutoWert) --> wenn das der PK ist, dann ist es eine Zahl und im Child muss es auch eine Zahl sein
Feldname: Typ (Text) --> wenn das der PK ist, dann ist es TEXT und er muss unique=eindeutig identifizierend sein und im Child muss es auch TEXT sein


Besser wäre IMHO diese Struktur:

Tabelle: Geräte ( hat den PK "ID", wenn du diesen Namen beibehalten willst oder "GeräteID", wenn du an später denkst)
Feldname: ID (AutoWert) --> PK
Feldname: Typ (Text) --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"
Feldname: Modell (Text) --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"
-> nimm da nur ModellID (wenn ModellID der PK von "Modelle" ist

Tabelle: Gerätetypen
Feldname: ID (AutoWert) --> ist PK, besser wäre "GeräteTypID", das findest du wieder)
Feldname: Typ (Text)

Tabelle: Hardware
Feldname: HWID (AutoWert) -> ist PK und sinnvoll benannt)
Feldname: Besitzer (Text)
Feldname: Modell (Text) --> da könnte "ModellID" stehen als Querverweis auf "Modells"
Feldname: Typ (Text)

--> siehe oben: --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"


Fehlend ist noch eine Tabelle
Tabelle: Modelle
Feldname: ModellID (AutoWert) --> ist PK
Feldname: ModellText (Text)
Feldname: ModellTyp (Zahl) --> von hier ein Foreignkey auf die "GeräteTyp.GeräteTypID", was ja der Parent ist.

Diese "Modelle" wiederum ist der Parent von deinen "Geräte"n.
In "Geräte" gehört also ein Feld "ModellID", von wo eine FK-Beziehung auf "Modelle.ModellID" zeigt.

Im Zweifelsfall mach es wie die Profis.
Nimm einen Notizzettel, ca. 7x7cm, mal die vier ver###ten Tabellen als kleine Kästchen-Hierarchie daruf und zieh ein paar diagonale Linien, damit du siehst, welches Kiddie unter welchen Pappa gehört und wer der Oppa ist.

Grüße
Biber