AutoWert Problem! Wichtig!

Ich habe Tabellen „Adressen“ & „Namen“. Die Beziehungen sind in dem jeweiligen Primärschlüssel vorhanden; Adress-ID und Namen-ID.

Jetzt habe ich mich einmal verschrieben und das ist dann wohl ein „Fatal Error“. (oder Fatal Fail von Microsoft… -.-)

Problem:
Adresse Nr. 87 ist dem Namen 87 zugeordnet (logisch!) Jetzt macht der AutoWert aber bei Nr. 120 weiter; heißt also, dass Adresse 120, dem Namen 88 zugeordnet wird, und das ist falsch! Kann einer helfen?

Hi,
ich sehe da keinen Fehler.

Du hast die ID des Namens als Fremdschlüssel in der Adressen Tabelle.
Da ist es doch Wurst welche ID der dann hat, hauptsache der richtige Name steht dahinter.

Gruss
Joey

Hallo,

Ich habe Tabellen „Adressen“ & „Namen“. Die Beziehungen sind
in dem jeweiligen Primärschlüssel vorhanden; Adress-ID und
Namen-ID.

Welche Felder sind in welchen Tabellen?
Welchen Datentyp haben die Felder?

Grüße aus Rostock
Wolfgang
(Netwolf)

Auch guten Tag.

Ich habe Tabellen „Adressen“ & „Namen“. Die Beziehungen sind
in dem jeweiligen Primärschlüssel vorhanden; Adress-ID und
Namen-ID.

Und beide ID-Felder sind AutoWert, nehme ich an …?

Jetzt habe ich mich einmal verschrieben und das ist dann wohl
ein „Fatal Error“. (oder Fatal Fail von Microsoft… -.-)

Oder Fatal Fall von Denkste. Das, was du da beschreibst, ist ein Fehler in deinem Datenmodell, zu dem niemand außer dir etwas kann. Eine 1:1-Beziehung, ohne referentielle Integrität, über zwei AutoWert-Felder hergestellt, führt, sobald du einen Datensatz löschst, zur Inkonsistenz; noch schlimmer, wenn die „Nummern“, die im AutoWert vergeben werden, auch noch tatsächlich etwas bedeuten sollen.

Da hilft nur das Löschen der Primärschlüssel, das Herstellen einer sauberen Beziehnung (Primärschlüssel -> Fremd schlüssel!) und das grundsätzliche Lernen des Sachverhaltes.

Adresse Nr. 87 ist dem Namen 87 zugeordnet (logisch!)

Was ist daran logisch? Wenn beide Tabellen identische
Primärschlüssel haben, stimmt doch schon etwas nicht …

Abgesehen davon: was machst du, wenn plötzlich zu einem Namen mehrere Adressen bzw. zu einer Adresse mehrere Namen gehören? Oder wenn ein „Name“ plötzlich umzieht?

Also, noch mal, und diesmal richtig normalisiert, modellieren.

Gruß Eillicht zu Vensre

Guten Tag,

  1. Tabellename: „Namen“
  2. Tabellename: „Adressen“

Namen:
Attribute = Namen-ID (AutoWert), Nachname (Text), Vorname (Text), Firma (Text).

Adressen:
Attribute = Adress-ID (AutoWert), Straße (Text), Hausnummer (Text), Postleitzahl (Text), Ort (Text), Telefonnummer (Text).

@ Eillicht: Guten Tag!
Das es ein Fehler in meinem Modell ist, weiß ich auch. Damit habe ich gemeint, dass Microsoft „AutoWert“ hätte besser programmieren können, dass man z.B. ihn leicht wieder zurück stellen kann, bzw. die Datenlücken entfernen kann.

Das mit den Adressen ist logisch, weil es wegen den Beziehungen eben so ist. Ich habe es so aufgebaut, dass Franz Müller (Namen-ID1), der Langen Straße 45 (Adress-ID1) zugewiesen ist. Verstehst du worauf ich hinaus will?

Wenn jemand umzieht? Ich kann die Adresse doch einfach ändern? Man sagt mir schon bescheit, wenn jemand umzieht. Und glücklicherweise gibt es da so einen Knopf (Dieses Pluszeichen!), der eine Leiter öffnet und wo ich mehrere Adressen bzw. Namen eingeben kann.

http://www2.pic-upload.de/04.11.09/euzrk3f9lp6n.png

Guten Tag,

  1. Tabellename: „Namen“
  2. Tabellename: „Adressen“

Namen:
Attribute = Namen-ID (AutoWert), Nachname (Text), Vorname (Text), Firma (Text).

Adressen:
Attribute = Adress-ID (AutoWert), Straße (Text), Hausnummer (Text), Postleitzahl (Text), Ort (Text), Telefonnummer (Text).

@ Eillicht: Guten Tag!
Das es ein Fehler in meinem Modell ist, weiß ich auch. Damit habe ich gemeint, dass Microsoft „AutoWert“ hätte besser programmieren können, dass man z.B. ihn leicht wieder zurück stellen kann, bzw. die Datenlücken entfernen kann.

Das mit den Adressen ist logisch, weil es wegen den Beziehungen eben so ist. Ich habe es so aufgebaut, dass Franz Müller (Namen-ID1), der Langen Straße 45 (Adress-ID1) zugewiesen ist. Verstehst du worauf ich hinaus will?

Wenn jemand umzieht? Ich kann die Adresse doch einfach ändern? Man sagt mir schon bescheit, wenn jemand umzieht. Und glücklicherweise gibt es da so einen Knopf (Dieses Pluszeichen!), der eine Leiter öffnet und wo ich mehrere Adressen bzw. Namen eingeben kann.

http://www2.pic-upload.de/04.11.09/euzrk3f9lp6n.png Klick!

MFG Claver

Hallo,

  1. Tabellename: „Namen“
  2. Tabellename: „Adressen“

Namen:
Attribute = Namen-ID (AutoWert), Nachname (Text), Vorname
(Text), Firma (Text).

Adressen:
Attribute = Adress-ID (AutoWert), Straße (Text), Hausnummer
(Text), Postleitzahl (Text), Ort (Text), Telefonnummer (Text).

@ Eillicht: Guten Tag!
Das es ein Fehler in meinem Modell ist, weiß ich auch.

ok, dann korrigiere ihn…

Damit habe ich gemeint, dass Microsoft „AutoWert“ hätte besser
programmieren können, dass man z.B. ihn leicht wieder zurück
stellen kann, bzw. die Datenlücken entfernen kann.

DAS wäre UNSINN, bzw. ginge an der Bedeutung eines Autowertfeldes (und dazu noch als Primärschlüssel (ID-Wert) völlig vorbei!

Das mit den Adressen ist logisch, weil es wegen den
Beziehungen eben so ist.

Kann ich nicht unterschreiben. Die Logik bei den Adressen wird nicht dadurch „richtig“ weil Beziehungen so (fälschlicherweise) definiert wurden.

Ich habe es so aufgebaut, dass Franz

Müller (Namen-ID1), der Langen Straße 45 (Adress-ID1)
zugewiesen ist. Verstehst du worauf ich hinaus will?

Ja, klar, aber dazu ist der Tabellenaufbau falsch…

Wenn jemand umzieht? Ich kann die Adresse doch einfach ändern?

Ja…

Man sagt mir schon bescheit, wenn jemand umzieht. Und
glücklicherweise gibt es da so einen Knopf (Dieses
Pluszeichen!), der eine Leiter öffnet und wo ich mehrere
Adressen bzw. Namen eingeben kann.

Was hat das mit dem falschen Tabellenaufbau zu tun?

Vorschlag:

Namen:
Namen_ID(AutoWert)
Namen_AdressID (Long) ----> Fremdschlüssel, d. h. hier kommt der Primärschlüsselwert aus „Adressen“ hinein.
Nachname (Text)
Vorname(Text)
Firma (Text)

Adressen:
Adress_ID (Primärschlüssel,AutoWert) (Sonderzeichen, hier „-“ vermeiden!)
Straße (Text)
Hausnummer (Text)
Postleitzahl (Text)
Ort (Text)
Telefonnummer (Text)

Insgesamt kann man sich aber hier die zweite Tabelle überhaupt sparen, solange man von jeweils EINER Adresse für eine Person ausgehen kann:

Namen:
Namen_ID(AutoWert)
Nachname (Text)
Vorname(Text)
Firma (Text)
Straße (Text)
Hausnummer (Text)
Postleitzahl (Text)
Ort (Text)
Telefonnummer (Text)

Allenfalls könnten „Orte“, „Strassen“, „Firmen“ in separate Tabellen ausgelagert werden. Das hängt aber stark von der grundsätzlichen Datenkonstellation ab, mit der die DB arbeiten soll.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!