Brauche Hilfe bei DB-Struktur

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Brauche Hilfe bei DB-Struktur

Beitrag von JumpinJack »

Also ich zerbreche mir den Kopf und bin mir nicht so sicher wie ich das am besten anstellen kann. Vielleicht könnt ihr mir ja helfen.

Also ich habe Objekte sagen wir mal Hausnummern. Eine Hausnummer wird definiert aus 2 Informationen. Straßenname und Hausnummer.

Das ist meine erste Tabelle. ID - Straßenname - Hausnummer
Nun wurden im laufe der Jahre die Hausnummern geändert. Also möchte ich eine Historie einbauen. Mein Problem ist, wo schreibt man die Historie hin?

Also ich habe eine alte Hausnummer (Schloßstraße 4) welche geändert wurde auf (Schloßstraße 46). Sollte man die Information zur Änderung bei der Schloßstraße 4 oder bei der Schloßstraße 46 schreiben? Oder sogar bei beiden? Nach dem Motto jede Hausnummer bekommt ein Feld VorgängerHausnummer und Nachfolgerhausnummer.

Versteht ihr meine Frage überhaupt? Wenn ja ich hoffe ich ihr könnt mir weiterhelfen, wenn nein bitte fragt nach. Ich versuche es dann besser zu beschreiben! ;)
Liebe Grüße
JumpinJack
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

ID - Straßenname - Hausnummer - alte Hausnummer
..genügt nich?

Oder willst du es in einer neuen Tabelle speichern?
ID - relative id zu Einträge der 1. Tabelle - alter Straßenname - alte Hausnummer
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Beitrag von JumpinJack »

Ja ich werde das in mehreren Tabellen unterbringen da Daten mit dieser Tabelle verknüpft werden. Wie Lage, Bauherren etc.

Ich muss es aber mit der ID machen, da es ja sein kann das es schon früher die Hausnummer gab. Beispielsweise bei einer Eingemeindung. Da gabs 12 mal die Hauptstraße 10. Nur aus welche Hauptstraße 10 wurde nun meine Bergstraße 40?!

Ich denke es wäre sinnvoll nur den Vorgänger bei der Hausnummer zu hinterlegen. Den Nachfolger zu hinterlegen würde ja mehr Daten bedeuten.
Liebe Grüße
JumpinJack
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag von D@ve »

Also ich würde folgende Tabelle Anlegen:
id
strasse
hausnummer
timestamp

Die ID ist eine eindeutige Nummer (primary key) und über einen timestamp speicherst Du das Datum der Erstellung, so kannst Du ohne Probleme zurückverfolgen wann welche Adresse sich wie geändert hat...

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Auch 'ne nette Lösung wäre, eine optionale Verknüpfung zur gleichen Tabelle durch ein neues Feld replaced_by oder so zu machen.

Ist das Feld leer, so ist der Datensatz aktuell - ansonsten ist die ID des Datensatzes drin, der als Nachfolger definiert ist. Abfragen kannst du dann mit einer rekursiven Abfrage.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
JumpinJack
Mitglied
Beiträge: 953
Registriert: 27.05.2002 10:37
Wohnort: Ariendorf
Kontaktdaten:

Beitrag von JumpinJack »

Hey PhilippK.

Klasse Idee. So in etwa habe ich mir das auch gedacht. Ich denke das wäre wohl das Sinnvollste. Der Timestamp ist zwar auch ncht schlecht, aber mit der Verlinkung auf eine ID des Nachfolgers.

Meine Frage ist nun, wo kommt die Verlinkung hin? Zum Nachfolger oder zum Vorgänger.
Also bekommt jeder eine Tabellenspalte wo der Vorgänger drin steht oder jeder eine Spalte wo der Nachfolger drin steht.

Der Vorteil von der Version das man beim Nachfolgerdatensatz den Vorgänger notiert ist, das man beim alten Datensatz nichts ändern muss.
Man legt einen neuen an und verweist direkt bei diesen das er den alten ersetz. Der alte Datensatz wird so nicht angerührt.

Ist das wirklich ein Vorteil? Ist das umständlich? Bin ich auf dem Holzweg?
Liebe Grüße
JumpinJack
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag von D@ve »

Also normalerweise macht man sowas immer mit parent_id, wüßte auch nichts was in diesem Fall dagegen sprechen würde...

Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Das hängt ein bischen davon ab, was du genau damit machen willst...

Wenn du im ersten Schritt die Ausgangsdatensätze anzeigen willst, ist die Methode mit dem Link auf den Vorgänger idealer, wenn du hingegen mit den aktuellen Datensätzen anfangen willst, ist der Nachfolger idealer.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Antworten

Zurück zu „Coding & Technik“