ortsverzeichniss, wie gehts am besten?
bofh
- datenbank
hallo,
ich brauche auf meiner seite einen katlog um bestimmte eintraege
einem ort zuweisen zu koennen - dh country, state und city.
jetzt hab ich mir was ueberlegt, weiss aber nicht welche version die
beste ist:
ich erstelle 3 tabellen (country, state, city) mit jeweils id, name
und id der uebergeordneten tabelle
oder:
ich erstelle eine tabelle (id, name, subcat_of, type ("country ||
state || city") ) in die ich alle daten eintrage und in der spalte
"subcat_of" auf die uebergeordnete region verweise und mit "type"
erfahre um was es sich handelt.
hierfuer habe ich woanders schonmal was geschrieben womit ich die
struktur abbilden kann, gibt dann sowas aus wie
germany->bayern->muenchen
nuernberg
hamburg->hamburg
usw.
was wuerdet ihr empfehlen, und warum? vieeicht noch erwaehnenswert,
das ich noch keine daten habe und diese dann aus den benutzereingaben
auslesen und einfuegen muss sobald jemand einen eintrag macht.
yo,
wenn du keine zusätzlichen informationen zu country, state und city hast, kannst du die drei werte auch einfach in die tabelle eintraege als spalte hinzufügen. das spart dir neue tabellen zu erstellen und erfüllt den zweck.
Ilja
Hello,
1. Schritt
exemplarische Datensammlung erstellen
2. Schritt
daraus "Datensätze" erkennen und definieren
3. Schritt
Untersuchung der Felder auf Wertigkeit
ein einwertiges Feld kann zur gleichen Zeit nur einen Wert annehmen
ein mehrwertiges Feld kann verschiedene Werte "sammeln"
4. Schritt
Auflösung der einwertigen Felder
Wenn der Wert des Feldes vertikal gestreut stehen darf, also in mehreren
Datensätzen derselben Tabelle (oder auch unterschiedlicher Tabellen)
gleichzeitig auftreten darf, müssen die Feldwerte in eine eigene Tabelle
ausgelagert werden, die dann direkt über ID der Wertetabelle angekoppelt werden kann
(N:1 oder 1:N -Beziehung)
5. Schritt
Auflösung der mehrwertigen Felder
Alle auftretende Werte erhalten einen eigenen Datensatz in einer Wertetabelle
Um die Verknüpfung zwischen Stammtabelle und Wertetabelle herstellen zu können,
benötigt man eine zusätzliche "Brückentabelle", die die IDs der beiden jeweils
betroffenen Datensätze der Stammtabelle und der Wertetabelle verknüpft.
(N:M-Bezeihung)
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
yo,
Wenn der Wert des Feldes vertikal gestreut stehen darf, also in mehreren
Datensätzen derselben Tabelle (oder auch unterschiedlicher Tabellen)
gleichzeitig auftreten darf, müssen die Feldwerte in eine eigene Tabelle
ausgelagert werden, die dann direkt über ID der Wertetabelle angekoppelt werden kann
(N:1 oder 1:N -Beziehung)
mit verlaub Tom, aber das hat meiner meinung nach nichts mit guten daten-design zu tun. wer hat dir den so etwas beigebracht ? ein tipp, normalisierung hat nichts mit spezifischen inhalten zu tun. wäre dies der fall, könnte man ja niemals normalisieren, ohne konkrete datensätze zu besitzen. es ist ein aberglaube, dass sich felder mit gleichen inhalt in einer datenbank nicht wiederholen dürfen.
Ilja
Hello,
es ist ein aberglaube, dass sich felder mit gleichen inhalt in einer datenbank nicht wiederholen dürfen.
Hab ich auch nicht behauptet.
Wenn ich aber jetzt die Ortsbezeichnung internationalisiern will, und muss dies dann an tausenden von Stellen tun, dann wäre doch die veränderung des Übersetzungswertes unter einem Schlüssel viel einfacher, oder?
Die Entity "Ort" taucht dann nur an einer einzigen Stelle auf.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
yo,
Hab ich auch nicht behauptet.
du spricht in punkt 4 aber von werten und das macht meiner meinung nach keinen sinn. normaliserung wird nicht über werte erreicht, sondern über abhängigkeiten. so wäre es zum beispiel fatal, wenn ich bei den nachnamen einer address-datei alle doppelten nachnamen wie müller oder meier in eine andere tabelle auslagern würde. sie sind zwar mehrfach vorhanden, aber nicht abhängig voneinander. heiratet der eine müller und wird zu schmidt, ändenr sich ja deswegen nicht alle anderen müller's nicht automatisch mit.
beim ort sieht es wieder anderes aus. dort besteht eben eine abhängigkeit und dan macht es auch sinn, diese auszulagern.
Ilja
Hello,
beim ort sieht es wieder anderes aus. dort besteht eben eine abhängigkeit und dan macht es auch sinn, diese auszulagern.
*ack*
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
hallo,
kommt auf die Anwendung an. Wenn "city" tatsächlich nur einen Elter (was ist die Einzahl von Eltern?) hat, finde ich Lösung 2 vernünftig.
tabelle (id, name, subcat_of, type ("country || state || city") )
"city" könnte ja auch mehrere Eltern haben:
Politisch:
germany>hessen>bensheim
germany>hessen>regierungsbezirk>kreis_bergstrasse>bensheim
Weinlage:
germany>hessische_bergstrasse>bensheim
Touristisch:
germany>odenwald>bensheim
LG Kalle
Hallo.
(was ist die Einzahl von Eltern?)
"Eltern" ist wie "Leute" ein Pluraletantum, also ein Substantiv, das nur im Plural existiert. Lediglich die Genetik benötigt die Einzahl und bildet sie in Form von "Elter". In der Graphentheorie findet sich "Elter" als Synonym für den etwas komplexen Begriff "unmittelbar übergeordneter Knoten", ist also nur der Faulheit der Anwender geschuldet.
MfG, at