|
View:
New views
15 Messages
—
Rating Filter:
Alert me
|
|
|
DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenDa ich gerade erst anfange, mich mit dieser DB zu beschäftigen, stosse
ich auf einige Unklarheiten. Ich bitte, dumme Fragen zu entschuldigen, aber trotzdem zu beantworten. An DB-Versionen liegen mir vor eine Fassung von sourceforge (opengeodb-0.2.5a-UTF8-sql, "SF") und eine Fassung des ADFC (D.sql, "ADFC"). "ADFC" scheint vollständiger und umfangreicher. Hier fehlen jedoch die Inhalte der Tabellen hierarchies und type_names. "SF" enthält type_names mit Inhalten und die Tabellenstruktur für hierarchies, jedoch keine Werte dafür. type_names ist unvollständig (d.h. es fehlen Werte, die in im Feld loc_type vorkommen). In der Dokumentation auf sourceforge (Stand 2005) wird behauptet, type_names sei einstweilen unwichtig. Nach den mir vorliegenden Daten scheint das Gegenteil der Fall. Oder gibt es auch einen öffentlich zugänglichen Datenbestand, in dem die Tabelle hierarchies gefüllt ist und der weiter gepflegt wird? s.m. -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenSascha Mantscheff wrote:
> Da ich gerade erst anfange, mich mit dieser DB zu beschäftigen, stosse > ich auf einige Unklarheiten. Ich bitte, dumme Fragen zu entschuldigen, > aber trotzdem zu beantworten. > > An DB-Versionen liegen mir vor eine Fassung von sourceforge > (opengeodb-0.2.5a-UTF8-sql, "SF") und eine Fassung des ADFC (D.sql, "ADFC"). > > "ADFC" scheint vollständiger und umfangreicher. Hier fehlen jedoch die > Inhalte der Tabellen hierarchies und type_names. hierarchies sind derzeit nicht mehr enthalten, weil IMHO nicht erforderlich und aufwändig zu pflegen. Ich vermisse hier aber noch immer einen SQL-Ansatz, wie diese automatisch abgeleitet werden könnten. Daher habe ich für den Dump auch mal eingerichtet, dass die hiearchies neu erstellt werden und habe http://fa-technik.adfc.de/code/opengeodb/Dhier.sql usw. erzeugt. Bisher habe ich aber keine Rückmeldung, ob das irgendwie brauchbar ist. > "SF" enthält type_names mit Inhalten und die Tabellenstruktur für > hierarchies, jedoch keine Werte dafür. type_names ist unvollständig > (d.h. es fehlen Werte, die in im Feld loc_type vorkommen). Mit genauen Angaben lässt sich korrigieren, was so unklar im Raum steht. > In der Dokumentation auf sourceforge (Stand 2005) wird behauptet, > type_names sei einstweilen unwichtig. > Oder gibt es auch einen öffentlich > zugänglichen Datenbestand, in dem die Tabelle hierarchies gefüllt ist > und der weiter gepflegt wird? s.o. - die hierarchies sind aber nur abgeleitete, redundante Daten, die automatisch erstellt werden sollten. Schönen Gruß Martin -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenBesten Dank.
Martin Trautmann schrieb: > Sascha Mantscheff wrote: > >> Da ich gerade erst anfange, mich mit dieser DB zu beschäftigen, stosse >> ich auf einige Unklarheiten. Ich bitte, dumme Fragen zu entschuldigen, >> aber trotzdem zu beantworten. >> >> An DB-Versionen liegen mir vor eine Fassung von sourceforge >> (opengeodb-0.2.5a-UTF8-sql, "SF") und eine Fassung des ADFC (D.sql, "ADFC"). >> >> "ADFC" scheint vollständiger und umfangreicher. Hier fehlen jedoch die >> Inhalte der Tabellen hierarchies und type_names. >> > > hierarchies sind derzeit nicht mehr enthalten, weil IMHO nicht > erforderlich und aufwändig zu pflegen. > > Ich vermisse hier aber noch immer einen SQL-Ansatz, wie diese > automatisch abgeleitet werden könnten. > Dir genannte Hiearchietabelle erzeugt wurde. > Daher habe ich für den Dump auch mal eingerichtet, dass die hiearchies > neu erstellt werden und habe > http://fa-technik.adfc.de/code/opengeodb/Dhier.sql usw. > erzeugt. Bisher habe ich aber keine Rückmeldung, ob das irgendwie > brauchbar ist. > Was heisst usw.? Gibt es da noch mehr? - Im übrigen ist natürlich richtig, dass der Grunddatenbestand keine abgeleiteten Daten enthalten sollte. >> "SF" enthält type_names mit Inhalten und die Tabellenstruktur für >> hierarchies, jedoch keine Werte dafür. type_names ist unvollständig >> (d.h. es fehlen Werte, die in im Feld loc_type vorkommen). >> > > Mit genauen Angaben lässt sich korrigieren, was so unklar im Raum steht. > Es fehlen die type_names: +-----------+ | loc_type | +-----------+ | 100900000 | | 610000000 | | 500100000 | +-----------+ Gefunden mit: select distinct (loc_type) from geodb_locations l left join geodb_type_names t on l.loc_type=t.type_id where t.type_id is null union select distinct (coord_type) from geodb_coordinates c left join geodb_type_names t on c.coord_type=t.type_id where t.type_id is null union select distinct (float_type) from geodb_floatdata f left join geodb_type_names t on f.float_type=t.type_id where t.type_id is null union select distinct (int_type) from geodb_intdata f left join geodb_type_names t on f.int_type=t.type_id where t.type_id is null union select distinct (text_type) from geodb_textdata f left join geodb_type_names t on f.text_type=t.type_id where t.type_id is null >> > 3) In der sourceforge-Fassung werden die Tabellen zwar vom Typ InnoDB >> > deklariert, es werden jedoch keine foreign keys deklariert, die solche >> > Fehler wie fehlende Typnamen vermeiden helfen würden. Was ist die >> > Überlegung dahinter? >> > > Das sollten SQL-Experten beantworten, ich selbst brauche das nicht. > Es würde zwar bei Inserts und Updates die Performance beeinträchtigen, aber die Datenintegrität erhöhen. Wo immer es möglich ist, empfehle ich, Relationen zwischen Tabellen mit Foreign-Key-Constraints abzusichern. > >> > Im übrigen werde ich meine DB, wenn die genannten Mängel korrigiert >> > sind, gerne zur Verfügung stellen. Gibt es dafür ein Procedere? >> > > Wenn du Daten bereitstellen kannst, solltest du sie z.B. auf fa-technik > wieder einspielen. > > Wenn du Änderungen an der Datenstruktur hast, solltest du sie hier > diskutieren. > alle Feldbezeichnungen so zu vereinheitlichen, dass Referenzen auf identische Felder identische Namen haben. Zur Zeit gibt es (siehe Union-Abfrage oben) diverse Felder namens ..._type, die alle dasselbe meinen, nämlich eine Referenz auf die Tabelle type_names. Im übrigen verstehe ich zwar einerseits die Anlage der Wertetabellen für atomare Typen wie float, int, text und die Flexibilität, die damit erzielt wird. Andererseits kommt mir die Struktur, die offenbar bis etwa 2005 gepflegt wurde, wesentlich einleuchtender vor. Die künstliche Trennung von Primärschlüssel (loc_id) und Attributen und deren Aufspaltung in typorientierte Tabellen kommt mir unter den Aspekten der Datenpflege und der Programmierung eher kontraproduktiv vor. Was war denn ausschlaggebend für diese Umstrukturierung? Gruss s.m. -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenOn 2008-01-10 09:52, Sascha Mantscheff wrote:
>> Ich vermisse hier aber noch immer einen SQL-Ansatz, wie diese >> automatisch abgeleitet werden könnten. >> > Dazu wären die Skripte bzw. das Verfahren hilfreich, nach dem die von > Dir genannte Hiearchietabelle erzeugt wurde. Bist du sicher, dass die dir helfen würden? sub create_hierarchies { my ($country) = @_; my $dpath = "opengeodb"; my $dfile = $dpath."/".$country.".tab"; my $hfile = $dpath."/".$country."hier.sql"; my $i=0; my $hid; my $hlevel; my $hof; my $mylevel=1; my $hier0="0\t104"."\t0" x 8; my %hier; my ($key,$value); while ($mylevel < 9) { print "pass: ".($mylevel+1); open (KEYD, "<:encoding(latin1)", $dfile) or die "can not open $dfile\n"; while(<KEYD>){ ($hid,$hlevel,$hof)=/^(\d+)\t(?:[^\t]*\t){12} *(\d+)\t*(\d+)(?:\t.*$)?/; if($mylevel == $hlevel-1) { print "$i.$mylevel:$hid:$hlevel/$hof;\n" if $check; $hier{$hid} = $hier{$hof}?$hier{$hof}:$hier0; $hier{$hid} =~ s/^\d+((\t\d+){$mylevel})\t0/$hlevel$1\t$hid/; print "->$hier{$hid}\n" if $check; $i++; } } close (KEYD); $mylevel++; } open (KEYH, ">:encoding(utf8)", $hfile) or die "can not open $hfile\n"; while (($key,$value)= each %hier) { $value =~ s/\t0/\tnull/g; $value =~ s/\t/,/g; print KEYH "INSERT INTO geodb_hierarchies ($key,$value,null,null,null,3000-01-01); /* $country */\n"; } } >> Daher habe ich für den Dump auch mal eingerichtet, dass die hiearchies >> neu erstellt werden und habe >> http://fa-technik.adfc.de/code/opengeodb/Dhier.sql usw. >> erzeugt. Bisher habe ich aber keine Rückmeldung, ob das irgendwie >> brauchbar ist. >> > Was heisst usw.? Gibt es da noch mehr? Schau einfach mal in das Verzeichnis. Die Hierarchie-Tabellen wurden laenderweise erzeugt. Daher gibt es auch AThier.sql, Bhier.sql usw. >>> "SF" enthält type_names mit Inhalten und die Tabellenstruktur für >>> hierarchies, jedoch keine Werte dafür. type_names ist unvollständig >>> (d.h. es fehlen Werte, die in im Feld loc_type vorkommen). >>> >> >> Mit genauen Angaben lässt sich korrigieren, was so unklar im Raum steht. >> > Es fehlen die type_names: > +-----------+ > | loc_type | > +-----------+ > | 100900000 | > | 610000000 | > | 500100000 | > +-----------+ seltsam - der dump wird typischerweise erzeugt aus der Verkettung von opengeodb-begin.sql, den Landes-SQL, extra.sql und opengeodb-end.sql In http://fa-technik.adfc.de/code/opengeodb/opengeodb-end.sql steht INSERT INTO geodb_type_names VALUES(100900000,'de','Ortsteil'); INSERT INTO geodb_type_names VALUES(500100000,'de','Name'); INSERT INTO geodb_type_names VALUES(610000000,'de','Fläche'); Oder wie muesste der Befehl heissen, den du vermisst? >>> > 3) In der sourceforge-Fassung werden die Tabellen zwar vom Typ InnoDB >>> > deklariert, es werden jedoch keine foreign keys deklariert, die solche >>> > Fehler wie fehlende Typnamen vermeiden helfen würden. Was ist die >>> > Überlegung dahinter? >>> >> >> Das sollten SQL-Experten beantworten, ich selbst brauche das nicht. >> > Es würde zwar bei Inserts und Updates die Performance beeinträchtigen, > aber die Datenintegrität erhöhen. Wo immer es möglich ist, empfehle ich, > Relationen zwischen Tabellen mit Foreign-Key-Constraints abzusichern. Wenn du mir beschreiben kannst, wie das Endergebnis fuer die sql-Datei aussehen muss, dann kann ich das vielleicht hinzufuegen. > Neben der oben empfohlenen Einführung von Foreign Keys schlage ich vor, > alle Feldbezeichnungen so zu vereinheitlichen, dass Referenzen auf > identische Felder identische Namen haben. Zur Zeit gibt es (siehe > Union-Abfrage oben) diverse Felder namens ..._type, die alle dasselbe > meinen, nämlich eine Referenz auf die Tabelle type_names. ok, ich warte dann auf einen Vorschlag von dir, der moeglichst endgueltig sein muesste. Da wir damit erneut die Datenstruktur aendern wuerden, wuerde das in eine 0.2.7 einfliessen. > Im übrigen verstehe ich zwar einerseits die Anlage der Wertetabellen für > atomare Typen wie float, int, text und die Flexibilität, die damit > erzielt wird. Andererseits kommt mir die Struktur, die offenbar bis etwa > 2005 gepflegt wurde, wesentlich einleuchtender vor. Die künstliche > Trennung von Primärschlüssel (loc_id) und Attributen und deren > Aufspaltung in typorientierte Tabellen kommt mir unter den Aspekten der > Datenpflege und der Programmierung eher kontraproduktiv vor. Was war > denn ausschlaggebend für diese Umstrukturierung? Du musst mir weiterhelfen, was hier fuer dich der Unterschied zwischen 2005 und heute ist. Auf welche SQL-Daten beziehst du dich dabei? Schoenen Gruss Martin Trautmann |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenHallo,
On Jan 10, 2008 9:52 AM, Sascha Mantscheff <922492@...> wrote: > > Das sollten SQL-Experten beantworten, ich selbst brauche das nicht. > Es würde zwar bei Inserts und Updates die Performance beeinträchtigen, > aber die Datenintegrität erhöhen. Wo immer es möglich ist, empfehle ich, > Relationen zwischen Tabellen mit Foreign-Key-Constraints abzusichern. Ich wollte das schon einmal anfangen, kam leider noch nicht dazu.. Wenn du mir sagst, wie weit du bist und wobei du Hilfe gebrauchen kannst.. Michael -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenIn den nächsten Tagen werde ich erst mal mit der DB arbeiten und ein
MySQL-Skript erstellen, das die von mir gewünschten Änderungen einbaut. Wenn das funktioniert, werde ich es hier zur Verfügung stellen. Es wird aber nur funktionieren in Datenbanken, die Foreign Key Constraints unterstützen, und testen werde ich es mit MySQL 5/InnoDB. s.m. Michael Diederich schrieb: > Hallo, > > On Jan 10, 2008 9:52 AM, Sascha Mantscheff <922492@...> wrote: > > >>> Das sollten SQL-Experten beantworten, ich selbst brauche das nicht. >>> >> Es würde zwar bei Inserts und Updates die Performance beeinträchtigen, >> aber die Datenintegrität erhöhen. Wo immer es möglich ist, empfehle ich, >> Relationen zwischen Tabellen mit Foreign-Key-Constraints abzusichern. >> > > Ich wollte das schon einmal anfangen, kam leider noch nicht dazu.. > Wenn du mir sagst, wie weit du bist und wobei du Hilfe gebrauchen > kannst.. > > Michael > Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenMartin Trautmann schrieb: > On 2008-01-10 09:52, Sascha Mantscheff wrote: > >>> Ich vermisse hier aber noch immer einen SQL-Ansatz, wie diese >>> automatisch abgeleitet werden könnten. >>> >>> >> Dazu wären die Skripte bzw. das Verfahren hilfreich, nach dem die von >> Dir genannte Hiearchietabelle erzeugt wurde. >> > > Bist du sicher, dass die dir helfen würden? > *.tab-Dateien nach SQL gewandelt. Dann muss ich fragen, woher denn die *.tab-Dateien kommen? Werden die aus dem Datenbestand abgeleitet, oder sind es Grunddaten, die gepflegt werden? > seltsam - der dump wird typischerweise erzeugt aus der Verkettung von > opengeodb-begin.sql, den Landes-SQL, extra.sql und opengeodb-end.sql > > In http://fa-technik.adfc.de/code/opengeodb/opengeodb-end.sql steht > > INSERT INTO geodb_type_names VALUES(100900000,'de','Ortsteil'); > INSERT INTO geodb_type_names VALUES(500100000,'de','Name'); > INSERT INTO geodb_type_names VALUES(610000000,'de','Fläche'); > Das sind schon die richtigen Befehle, und damit wird es auch stimmig. Aber im Dump D.sql sind offenbar opengeodb-(begin|end).sql nicht enthalten. > Wenn du mir beschreiben kannst, wie das Endergebnis fuer die sql-Datei > aussehen muss, dann kann ich das vielleicht hinzufuegen. > Ich gebe mich die nächsten Tage mal dran. > Du musst mir weiterhelfen, was hier fuer dich der Unterschied zwischen > 2005 und heute ist. Auf welche SQL-Daten beziehst du dich dabei? > Wenn ich das so genau wüsste. Quelldaten liegen keine vor, nur MySQL-Tabellen, die wohl aus früheren einem GeoDB-Import und Nachbearbeitung entstanden sind. Die locations-Tabelle beispielsweise sieht aus wie unten gezeigt. Gruss s.m. +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | int(12) | NO | PRI | NULL | auto_increment | | typ | int(12) | YES | | NULL | | | name | varchar(250) | YES | | NULL | | | name_int | varchar(250) | YES | | NULL | | | gs | varchar(8) | YES | | NULL | | | adm0 | char(2) | YES | MUL | NULL | | | adm1 | char(2) | YES | MUL | NULL | | | adm2 | varchar(250) | YES | MUL | NULL | | | adm3 | varchar(250) | YES | MUL | NULL | | | adm4 | varchar(250) | YES | | NULL | | | ort | varchar(250) | YES | MUL | NULL | | | ortsteil | varchar(250) | YES | | NULL | | | gemteil | varchar(250) | YES | | NULL | | | breite | float | YES | | NULL | | | laenge | float | YES | | NULL | | | kfz | char(3) | YES | | NULL | | | plz | text | YES | | NULL | | +----------+--------------+------+-----+---------+----------------+ -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenIch habe grade mal versucht, herauszufinden, ob es eine Regelung gibt,
wie DBMS ohne Fremdschlüssel-Umsetzung mit den Angaben im SQL-Script umgehen sollen, die Fremdschlüsselbeziehungen definieren. Leider habe ich nichts generelles dazu gefunden. Die MYSQL-Website besagt aber, dass in mysql, wo bisher nur InnoDB-Tabellen Fremdschlüssel anwenden, in anderen Tabellenformaten die Fremdschlüsselbeziehung einfach ignoriert (bzw. gelesen und in die Tabellen-Metainformation für Exportzwecke gespeichert, aber die Integrität nicht geprüft) wird. Insofern sollte das Script hoffentlich auch in anderen DBMS funktionieren - nur eben ohne der Integritätsprüfung. Gruß Peter Wendorff Sascha Mantscheff schrieb: > In den nächsten Tagen werde ich erst mal mit der DB arbeiten und ein > MySQL-Skript erstellen, das die von mir gewünschten Änderungen einbaut. > Wenn das funktioniert, werde ich es hier zur Verfügung stellen. Es wird > aber nur funktionieren in Datenbanken, die Foreign Key Constraints > unterstützen, und testen werde ich es mit MySQL 5/InnoDB. > > s.m -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenHallo,
On Jan 10, 2008 12:23 PM, Peter Wendorff <wendorff@...> wrote: > Ich habe grade mal versucht, herauszufinden, ob es eine Regelung gibt, > wie DBMS ohne Fremdschlüssel-Umsetzung mit den Angaben im SQL-Script > umgehen sollen, die Fremdschlüsselbeziehungen definieren. > Leider habe ich nichts generelles dazu gefunden. > Die MYSQL-Website besagt aber, dass in mysql, wo bisher nur > InnoDB-Tabellen Fremdschlüssel anwenden, in anderen Tabellenformaten die > Fremdschlüsselbeziehung einfach ignoriert (bzw. gelesen und in die > Tabellen-Metainformation für Exportzwecke gespeichert, aber die > Integrität nicht geprüft) wird. > Insofern sollte das Script hoffentlich auch in anderen DBMS > funktionieren - nur eben ohne der Integritätsprüfung. Das ist korrekt. Wenn du myisam verwendest, werden Fremdschlüssel einfach ignoriert. Wenn du die engine auf innodb änderst, werden die Foreign Keys wieder automatisch geprüft (sofern nicht explizit deaktiviert). Ein Nachteil entsteht also für <=mysql4-Benutzer nicht. Michael -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
|
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenDie Frage, die ich mir stelle ist aber: Wie sieht das generell aus mit
anderen DBMS-Systemen? Wir haben schließlich nicht nur mysql-Nutzer - sondern abgesehen von Text-Dateien auch diverse andere SQL-Systeme (postgre sql bin ich mir ziemlich sicher, ms xml vermute ich....) Deshalb stellt sich hier eher die Frage: Gibt es einen Standard, wie mit so etwas umgegangen wird? Gruß Peter > > Das ist korrekt. Wenn du myisam verwendest, werden Fremdschlüssel > einfach ignoriert. Wenn du die engine auf innodb änderst, werden die > Foreign Keys wieder automatisch geprüft (sofern nicht explizit > deaktiviert). Ein Nachteil entsteht also für <=mysql4-Benutzer nicht. > > Michael > -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenForeign Key Constraints gehören zum SQL92-Standard. Jede zu diesem
Standard kompatible DB kann die Statements zumindest parsen. Wenn die Constraints nicht von der DB erzwungen werden, ist das nur ein Problem für die Anwendungsprogrammierung, aber nicht für die Datenhaltung. "ms xml" soll MS-SQL heissen, nehme ich an? Ist angeblich auch kompatibel. s.m. Peter Wendorff schrieb: > Die Frage, die ich mir stelle ist aber: Wie sieht das generell aus mit > anderen DBMS-Systemen? > Wir haben schließlich nicht nur mysql-Nutzer - sondern abgesehen von > Text-Dateien auch diverse andere SQL-Systeme (postgre sql bin ich mir > ziemlich sicher, ms xml vermute ich....) > Deshalb stellt sich hier eher die Frage: Gibt es einen Standard, wie mit > so etwas umgegangen wird? > > Gruß > Peter > >> Das ist korrekt. Wenn du myisam verwendest, werden Fremdschlüssel >> einfach ignoriert. Wenn du die engine auf innodb änderst, werden die >> Foreign Keys wieder automatisch geprüft (sofern nicht explizit >> deaktiviert). Ein Nachteil entsteht also für <=mysql4-Benutzer nicht. >> >> Michael >> >> > > Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
Re: DB-StrukturJe länger ich mich damit befasse, desto mehr glaube ich, dass diese
Datenbankstruktur Mängel aufweist. Insbesondere stutzig werde ich bei den inhaltlich expliziten Check Constraints. Aus der Tabelle textdata wird type_names von den Feldern text_type, date_type_since und date_type_until referenziert. text_type und date_type_since sind dabei durch Check-Constraints gesichert, date_type_until ist es nicht. Das ist wahrscheinlich nur ein Flüchtigkeitsfehler, zeigt aber, dass der beschrittene Weg unsicher ist. Check Constraints stehen unter MySQL nicht zur Verfügung. Da MySQL eine sehr verbreitete Plattform ist, könnte das ein Grund sein, zu versuchen, ohne sie auszukommen. Wesentlicher erscheint mir jedoch, dass hier willkürliche inhaltliche Einschränkungen (willkürlich wegen der willkürlichen Wahl der Schlüssel) eingebaut werden, die besser eine strukturelle Entsprechung in den Tabellen fänden. Grund für die Unschönheit scheint mir, dass type_names de facto nicht nur als Namenstabelle fungiert, sondern auch als Referenz für den Wertevorrat von Typen. Da aber unterschiedliche Typen in dieser Tabelle zusammengefasst sind, werden o.g. Check-Constraints erforderlich. Dass das keine saubere Anlage ist, erkennt man daran, dass die Check-Constraints, die sich explizit auf bestimmte Schlüsselwerte beziehen, ohne Kenntnis der Inhalte der DB nicht verständlich wären. Ich plädiere daher für eine Ergänzung der Struktur um die Tabellen type_date, type_text, type_float, type_int, in denen die dem jeweiligen atomaren Datentyp zugehörenden type_names referenziert werden, die nach wie vor in einer gemeinsamen Tabelle bleiben. Die Referenz läuft dann also beispielsweise von textdata.text_type über type_text.type_name in die Tabelle type_names. Damit werden die auf konkrete Datenwerte bezogenen Check-Constraints überflüssig und durch Foreign-Key-Constraints ersetzt. Die Tabelle type_names enthält dann tatsächlich nur noch Namen. --- Wenn ich Dich (Martin) richtig verstehe, werden die Daten zur Zeit im .tab-Format gepflegt. Wäre es dann nicht sinnvoll, statt der SQL-Dateien die Skripte anzubieten, mit denen sie generiert werden? Mir geht es dabei um 3 Dinge: 1. Einen "offiziellen" Ort, an dem die Daten gepflegt werden. Das scheint ja bei Dir angesiedelt zu sein. 2. Ein Verfahren, mit dem Updates schnell eingepflegt werden können. Diff und Patch sind dafür hervorragend geeignet und könnten auf den .tab-Dateien aufsetzen. 3. Eine DB-Struktur, die leicht verständlich ist und mit der ohne Umwege (= Nachschlagen in Werte-Tabellen) programmiert werden kann. Wenn nun statt der SQL-Fassungen die .tab-Fassungen die verbindlichen sind, ist es im Prinzip ja ohnehin jedem selbst überlassen, welche DB-Struktur er daraus generiert. Andererseits will man das Rad ja nicht immer neu erfinden. Mein Weg wäre, die .tab-Dateien 1:1 in entsprechende SQL-Dateien zu überführen und daraus dann mit SQL-Skripten die mir genehme DB-Struktur zu erzeugen. Aber zuvörderst erwächst aus alledem die Frage, in welchem Format (.tab, SQL oder was (vielleicht XML?)?) die DB künftig bearbeitet und in welchem sie zur Verfügung gestellt wird (wobei ich mal davon ausgehe, dass das ein- und dasselbe ist). Gruss s.m. Martin Trautmann schrieb: > In-Reply-To: <4785FE8F.4090606@...> > > On 2008-01-10 12:16, Sascha Mantscheff wrote: > >> Martin Trautmann schrieb: >> >>> On 2008-01-10 09:52, Sascha Mantscheff wrote: >>> >>>> Dazu wären die Skripte bzw. das Verfahren hilfreich, nach dem die von >>>> Dir genannte Hiearchietabelle erzeugt wurde. >>>> >>> Bist du sicher, dass die dir helfen würden? >>> >>> >> Deine Skepsis ist berechtigt. Wenn ich es richtig verstehe, werden hier >> *.tab-Dateien nach SQL gewandelt. >> > > Genau > > >> Dann muss ich fragen, woher denn die >> *.tab-Dateien kommen? Werden die aus dem Datenbestand abgeleitet, oder >> sind es Grunddaten, die gepflegt werden? >> > > Die .tab-Daten entstammen der 0.2.4d-SQL-Version, die seither massiv als > Grunddaten erweitert wurden > > Auf der Plattform, wo das laeuft, steht keine SQL-Umgebung zur Verfuegung. > Es laeuft dort alles ueber Text-Dateien und Perl-Scripts. > > Die Basisdaten liegen daher in den .tab-Dateien vor, aus denen > .sql-Dateien konvertiert werden. > > >> Das sind schon die richtigen Befehle, und damit wird es auch stimmig. >> Aber im Dump D.sql sind offenbar opengeodb-(begin|end).sql nicht enthalten. >> > > Deswegen wollte ich von dir wissen, von welcher Version du sprichst. > dump/D.sql ist nur ein vorlaeufiger Zwischenstand, um die Einbindung von > Ortsteilen und Strassen vorzufuehren. Ich hoffe, jemand koenne oder wolle > sich die Daten mal ansehen, ob diese ueberhaupt brauchbar sind. > > >>> Du musst mir weiterhelfen, was hier fuer dich der Unterschied zwischen >>> 2005 und heute ist. Auf welche SQL-Daten beziehst du dich dabei? >>> >>> >> Wenn ich das so genau wüsste. Quelldaten liegen keine vor, nur >> MySQL-Tabellen, die wohl aus früheren einem GeoDB-Import und >> Nachbearbeitung entstanden sind. >> > > Ok, so alte Daten habe ich vielleicht noch irgendwo auf Backups. Zu der > Zeit damals interessierten mich nur die .txt-Versionen. > > >> Die locations-Tabelle beispielsweise >> sieht aus wie unten gezeigt. >> > > >> +----------+--------------+------+-----+---------+----------------+ >> | Field | Type | Null | Key | Default | Extra | >> +----------+--------------+------+-----+---------+----------------+ >> | id | int(12) | NO | PRI | NULL | auto_increment | >> | typ | int(12) | YES | | NULL | | >> | name | varchar(250) | YES | | NULL | | >> | name_int | varchar(250) | YES | | NULL | | >> | gs | varchar(8) | YES | | NULL | | >> | adm0 | char(2) | YES | MUL | NULL | | >> | adm1 | char(2) | YES | MUL | NULL | | >> | adm2 | varchar(250) | YES | MUL | NULL | | >> | adm3 | varchar(250) | YES | MUL | NULL | | >> | adm4 | varchar(250) | YES | | NULL | | >> | ort | varchar(250) | YES | MUL | NULL | | >> | ortsteil | varchar(250) | YES | | NULL | | >> | gemteil | varchar(250) | YES | | NULL | | >> | breite | float | YES | | NULL | | >> | laenge | float | YES | | NULL | | >> | kfz | char(3) | YES | | NULL | | >> | plz | text | YES | | NULL | | >> +----------+--------------+------+-----+---------+----------------+ >> > > Ja, das sieht nach fruehesten Versionen von Thomas aus. Seither kam viel > overhead dazu, der mir im Normalfall als ueberfluessig erscheint. Der > Inhalt dieser Tabelle entspricht recht genau der > http://downloads.sourceforge.net/opengeodb/opengeodb-0.2.4d-UTF8-text-orte.zip > > # Bedeutung der einzelnen Felder: > # > # Feld 1: eindeutiger Schlüssel (Primary Key) > # Felder 2 bis 8: hierarchische Verwaltungsgliederung, hier: > # Feld 2: Staat (DE == Deutschland) > # Feld 3: Bundesland, s.o. > # Feld 4: Regierungsbezirk > # Feld 5: Landkreis > # Feld 6: Verwaltungszusammenschluss > # Feld 7: Ort > # Feld 8: Ortsteil/Stadtteil > # Feld 9: Gemeindeteil unspezifizierter Art > # Feld 10: Anderer Ort > # Felder 11 und 12: Koordinaten: > # Feld 11: Längengrad > # Feld 12: Breitengrad > # Felder 13 und 14: Andere Merkmale, hier: > # Feld 13: Autokennzeichen > # Feld 14: Postleitzahl(en) > > Schoenen Gruss > Martin > > Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
|
|
|
|
|
Re: DB-Versionen, geodb_hierarchies, geodb_type_names und UngereimtheitenSascha Mantscheff schrieb:
> "ms xml" soll MS-SQL heissen, nehme ich an? Ist angeblich auch kompatibel. > Ja - klar ;) sorry. -- Mailingliste OpenGeoDB Listenadresse: opengeodb@... Informationen: http://opengeodb.de Mit freundlicher Unterstütztung von php::bar (http://phpbar.de) |
| Free embeddable forum powered by Nabble | Forum Help |