Lookup-Tabelle updaten, vorm Löschen von Redundanzen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
anwendung
aufwand
beibehalten
datenbank
datenvolumen
datum
einsparen
information
normalfall
ort
person
postleitzahl
problem
redundanz
spalte
string
tabelle
tausend
zahl
-
Hallo,
ich bin ein Neuling in der Datenbankwelt und ich habe ein Problem, das ich allein nicht lösen kann. Ich hoffe, dass es hier hereinpasst, ich denke nicht, dass es ein spezifisches Problem von MySQL ist, das ich nutze.
Vielleicht versuche ich das Problem noch einmal neu zu formulieren:
Ich habe drei Tabellen A, B, C. In A sind Informationen zu Adressen, in B zu Personen. C ist eine Tabelle, die diese Datensätze zuordnet, da mehrere Personen eine Adresse teilen können und mehrere Adressen zu einer Person gehören können.
A ist aus Importgründen genauso groß wie C, das heißt in A sind Adressen doppelt oder mehrfach angeführt. Wie kann ich die Spalte ID_A in C so updaten, dass in den entsprechenden Datensätzen in C immer nur die kleinste ID_A erscheint und ich in A dann die anderen löschen kann?
Ich hoffe ich habe alle nötigen Informationen angegeben.
Danke im Voraus! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
elektroniker1 schrieb:
[...]
Ich habe drei Tabellen A, B, C. In A sind Informationen zu Adressen, in B zu Personen. C ist eine Tabelle, die diese Datensätze zuordnet, da mehrere Personen eine Adresse teilen können und mehrere Adressen zu einer Person gehören können.
Ok. Soweit klar.
A ist aus Importgründen genauso groß wie C, das heißt in A sind Adressen doppelt oder mehrfach angeführt.
Was sind Importgründe?
A kann nicht doppelt so groß sein, wenn in C zu mehreren Adressen aus A eine Person zugewiesen wird.
C muss größer sein als A - jedenfalls von der Menge der Einträge her - damit es nicht Datensätze gibt, die in A "verwaisen" bzw. überflüssig sind.
Wie kann ich die Spalte ID_A in C so updaten, dass in den entsprechenden Datensätzen in C immer nur die kleinste ID_A erscheint und ich in A dann die anderen löschen kann?
[...]
Was meinst du mit die kleinste konkret? Möchtest du dass alle Datensätze die in A doppelt vorhanden sind löschen und dabei die Redundanz in C beibehalten? Und beim Löschen die doppelten Datensätze mit der niedrigesten ID beibehalten?
Generell dazu:
Es ist nicht sinnvoll die Adressen von Personen in eine extra Tabelle zu schreiben. Die Wahrscheinlichkeit, dass doppelte Adressen auftauchen ist sehr gering und steht für gewöhnlich nicht im Verhältnis zu der Menge an Einträgen, die dadurch in deiner dritten (hier Tabelle C) eingetragen werden.
Wie gesagt "für gewöhnlich". Aber häufig kann man die Probleme meist einfache rlösen. -
Alles klar ich werd mich jetzt mal damit auseinander setzen aber danke für die Antwort.
[......Was meinst du mit die kleinste konkret? Möchtest du dass alle Datensätze die in A doppelt vorhanden sind löschen und dabei die Redundanz in C beibehalten? Und beim Löschen die doppelten Datensätze mit der niedrigesten ID beibehalten?....]
ja ich wollte die doppelten löschen, war für mich die einzige logik wobei ich dachte das sie dadurch kleiner wird....
-
das einzige, weodurch du bei den Adressen Datenvolumen einsparen kannst, ist wenn du die Postleitzahlen der Orte extrahierst... einem Ort(String) können zwar mehrere Postleitzahlen zugeordnet werden, aber andersrum ist es eindeutig... im Normalfall... PLZ kann man sowieso nciht als Zahl nehmen... bei mehreren Tausend Personendatensätzen lohnt sich dann auch der Aufwand, den Ort zu extrahieren, weil vielleicht sgar in einer anderen Datenbank Bezug zu der Tabelle genommen werden kann...
-
sebulon schrieb:
das einzige, weodurch du bei den Adressen Datenvolumen einsparen kannst, ist wenn du die Postleitzahlen der Orte extrahierst... einem Ort(String) können zwar mehrere Postleitzahlen zugeordnet werden, aber andersrum ist es eindeutig... im Normalfall... PLZ kann man sowieso nciht als Zahl nehmen... bei mehreren Tausend Personendatensätzen lohnt sich dann auch der Aufwand, den Ort zu extrahieren, weil vielleicht sgar in einer anderen Datenbank Bezug zu der Tabelle genommen werden kann...
Da kommt es definitiv auf die Anwendung an.
Ich würde selbst bei mehreren tausend Datensätzen den Ort nicht unbedingt extrahieren. Dafür gibt es einfach zu viele Orte, aber das ist sicherlich Geschmackssache bzw. abhängig von der Anwendung.
Es gibt immer spezielle Fälle, in denen man (auch aus den Adressdaten) Daten extrahieren kann. Z.B. wenn man wenige Firmen, aber viele Mitarbeiter dieser Firma tabellarisch erfassen will und die Mitarbeiter alle die gleiche Firmenanschrift haben.
Aber das ist auch das schöne an der Informatik, nicht alles ist allgemeingültig zu lösen.
Zum Glück! :D -
das einzige, was man macht, ist, dass man statische Daten von Veränderlichen Daten trennt in jeweilige Tabellen... aber dann wird es wieder etwas komplizierter denn selbst Namen sind veränderlich...
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage