DB design

DB design

am 21.11.2006 15:04:49 von BF

Hallo NG,

ich erstelle eine Datenbank mit statistischen Informationen zu
Ländergruppen. Es gibt eine Tabelle in der land_id, land_name (u.a.)
gespeichert ist, eine tabelle für die statistischen Daten (id,
land_id, wert_art, wert, quelle_id, jahr) und eine für die benutzten
Quellen.

Nun stehe ich vor der Frage wie ich bei der Berechnung von Daten die
Tatsache berücksichtige, dass Länder mitunter ihren Namen ändern
(Sowjetunion -> Einzelstaaten, DDR -> Bundesrepublik etc.).

Wie gehe ich damit am geschicktesten um? Meine erste Idee ist eine neue
Tabelle anzulegen, in der ich paarweise die id's von den Ländernamen
speichere, die aufeinanderfolgen. Falls ich für ein Land dann keine
Daten finde, wird dann in dieser Tabelle nach alternativen ID's gesucht
und die benutzt.

Was mich besonders interessiert ist die Frage wie sich nun die
Berechnung von Statistiken bewerkstelligen lässt, d.h. lässt sich der
Wechsel eines Ländernamens rein mit (My)SQL Bordmitteln einbeziehen
oder kommt man nicht darum herum dies in die PHP-Skripte einzuarbeiten?

Oder gibt es da bessere Lösungen?

Re: DB design

am 21.11.2006 17:42:31 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: DB design

am 22.11.2006 15:28:49 von Wolfgang Schwach

BF wrote:
> Hallo NG,
>
> ich erstelle eine Datenbank mit statistischen Informationen zu
> Ländergruppen. Es gibt eine Tabelle in der land_id, land_name (u.a.)
> gespeichert ist, eine tabelle für die statistischen Daten (id,
> land_id, wert_art, wert, quelle_id, jahr) und eine für die benutzten
> Quellen.
>
> Nun stehe ich vor der Frage wie ich bei der Berechnung von Daten die
> Tatsache berücksichtige, dass Länder mitunter ihren Namen ändern
> (Sowjetunion -> Einzelstaaten, DDR -> Bundesrepublik etc.).
>
> Wie gehe ich damit am geschicktesten um? Meine erste Idee ist eine neue
> Tabelle anzulegen, in der ich paarweise die id's von den Ländernamen
> speichere, die aufeinanderfolgen. Falls ich für ein Land dann keine
> Daten finde, wird dann in dieser Tabelle nach alternativen ID's gesucht
> und die benutzt.

Wenn es sich um eine reine Namensänderung handelt, würde ich eine extra
Tabelle für die Ländernamen mit dem Gültigkeitsintervall anlegen. Bei
Staaten, die neu gegründet werden, bzw. sich auflösen, sollte das
Existenzintervall der Staaten mit in die Ländertabelle. Wenn man sich
noch mehr Aufwand machen will, kann man noch eine "Übergangstabelle"
mit den Attributen alte_land_id, neue_land_id, datum erstellen. Damit
dürfte es eigentlich auch möglich sein, Werte von vor dem
Zerfall/Zusammenschluss mit nachher zu vergleichen, wenn auch nicht
ganz so einfach.

> Was mich besonders interessiert ist die Frage wie sich nun die
> Berechnung von Statistiken bewerkstelligen lässt, d.h. lässt sich der
> Wechsel eines Ländernamens rein mit (My)SQL Bordmitteln einbeziehen
> oder kommt man nicht darum herum dies in die PHP-Skripte einzuarbeiten?

Siehe oben. Ich glaube, dass das mit SQL alleine durchaus möglich ist.

Gruss Wolfgang
--
__________A_K_K___________
_____wolfgang_schwach_____
____w@akk.org/w@w35.de____