logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

geodb_textdata in 0.2: msg#00067

Subject: geodb_textdata in 0.2
Hi,

welchen Sinn soll denn der Sortiername in 0.2 erfüllen?

Bsp.:

opengeodb2=# select * from geodb_textdata where loc_id=212;
-[ RECORD 1 ]---+-------------------------
loc_id          | 212
text_val        | Kreisfreie Stadt München
text_type       | 500100000
text_subtype    | 550100001
valid_since     |
date_type_since |
valid_until     | 3000-01-01
date_type_until | 300500000
-[ RECORD 2 ]---+-------------------------
loc_id          | 212
text_val        | kreisfreiestadtmuenchen
text_type       | 500100000
text_subtype    | 550110001
valid_since     |
date_type_since |
valid_until     | 3000-01-01
date_type_until | 300500000

Wenn ich das richtig sehe, wurden hier immer Umlaute ersetzt (ü -> ue,
usw.), das ganze kleingeschrieben und Leerzeichen entfernt.

Macht das denn Sinn? Bei einem echten Query würde ich mit einem WHERE
text_type=500100000 den "Sortiername" bereits ausfiltern, bevor ich ihn mit
ORDER BY text_val verwenden könnte!

Alle modernen Datenbanken können nicht nur Umlaute, sondern auch
fortschrittliche Kodierungen wie Unicode (UTF-8 oder sogar volle 16 Bit).
Man sollte das Problem eines korrekten ORDER BY also schon den Entwicklern
des RDBMS überlassen, die ebenfalls einiges an Arbeit reinstecken, dass
Strings richtig sortiert werden. Moderne Sprachen wie z.B. Java bieten auch
locale-spezifische strcmp()-Funktionen die eine echte landesspezifische
Sortierung bereitstellen. Ich finde es ist wirklich out-of-scope das hier
nochmal nachzubilden.

Will man sowas wirklich haben, kann man immer noch eine Funktion schreiben
die den text_val dynamisch konvertieren kann. Dann kann man auch ein
funktionierendes SELECT ... ORDER BY ascii7(text_val) ... machen.

Unter diesem Gesichtspunkt braucht man auch den text_subtype nicht mehr und
kann ihn löschen:
opengeodb2=# select count(*),text_subtype,name from geodb_textdata left
join geodb_type_names on text_subtype=type_id group by text_subtype,name;
-[ RECORD 1 ]+-------------------------------
count        | 28028
text_subtype | 550100001
name         | landessprachlich
-[ RECORD 2 ]+-------------------------------
count        | 1
text_subtype | 550100005
name         | landessprachlich (deutsch)
-[ RECORD 3 ]+-------------------------------
count        | 1
text_subtype | 550100006
name         | landessprachlich (italienisch)
-[ RECORD 4 ]+-------------------------------
count        | 1
text_subtype | 550100007
name         | landessprachlich (französisch)
-[ RECORD 5 ]+-------------------------------
count        | 6
text_subtype | 550100009
name         |
-[ RECORD 6 ]+-------------------------------
count        | 54
text_subtype | 550100011
name         |
-[ RECORD 7 ]+-------------------------------
count        | 28028
text_subtype | 550110001
name         | Name (7 Bit)
-[ RECORD 8 ]+-------------------------------
count        | 28028
text_subtype | 550110001
name         | Sortiername
-[ RECORD 9 ]+-------------------------------
count        | 1
text_subtype | 550110005
name         |
-[ RECORD 10 ]-------------------------------
count        | 1
text_subtype | 550110006
name         |
-[ RECORD 11 ]-------------------------------
count        | 1
text_subtype | 550110007
name         |
-[ RECORD 12 ]-------------------------------
count        | 1
text_subtype | 550110009
name         |
-[ RECORD 13 ]-------------------------------
count        | 35115
text_subtype |
name         |

Ich kann hier nur fehlende Werte (warum?), den eleminierten Sortiernamen
und Sprachangaben die man durch locate ersetzen kann erkennen.

cu,
        boris

-- 
Dipl.-Inf. Boris Folgmann   mailto:boris-eHLBQHuAAmMb1SvskN2V4Q@xxxxxxxxxxxxxxxx
TeamForge GmbH              http://www.teamforge.de
-m-o-d-w-a-r-s-             http://www.modwars.de
-- 
Mailingliste OpenGeoDB
Listenadresse: opengeodb-r1mDYR0DdAyzQB+pC5nmwQ@xxxxxxxxxxxxxxxx
Informationen: http://opengeodb.de
Mit freundlicher Unterstütztung von php::bar (http://phpbar.de)



<Prev in Thread] Current Thread [Next in Thread>