26. maj 2003 - 19:19Der er
21 kommentarer og 1 løsning
Postnr/by tabel
Jeg sidder her med mine tabeller og har noormaliseret dem til 3NF. Jeg har derfor pga transitiv afhængighed pillet PostNr og Bynavn ud i en tabel for sigselv. Mit spørgsmål er: Vil det være korrekt at give denne tabel en ny nøgle så man ikke bruger Postnummer som nøgle ? Hvis man bruger postnummer som nøgle og et postnummer skifter(dette kan forekomme) skal man så ikke ændre det alle de steder man har brugt det i de andre tabeller.
Altså helt konkret laver man en nyt index til en PostNummer/By tabel ?
De kloge er meget delte omkring hvorvidt det er bedst med en kunstig nøgle eller det er bedst med naturlig nøgle.
Imidlertid skal du være opmærksom på at indførelsen af sådan en kunstig nøgle (som skal være usynlig for brugerne) giver ekstra arbejde i applikationen.
Jeg ville nok være mest tilbøjeligt til at beholde post nummer som nøgle.
Det kan ikke være så tit at de omdøber et helt postnummer.
Og hvis de splitter et postnummer, merger nogle postnumre eller flytter nogle veje fra et postnummer til et andet postnummer, så er det ligegyldigt om du har kunstig eller naturlig nøgle.
Og uden at være postnummer ekspert, så tror jeg altså at de sidste situationer er betydeligt mere hyppige (der er ikke meget pointe i at omdøbe alle med postnumemr X til postnummer Y - heller ikke for postvæsenet).
Tak for kommentarene :) De var lidt som jeg forventede, delte meninger. Jeg vil dog gerne høre, om der er nogen der har implementeret et egentligt system, med en kunstig nøgle til Postnummer/By tabellen ?
Arne, du har ret, i den forstand at den officielt kun har en by. Det er dog sådan at mange små byer benytter deres større naboby's postnummer og dette accepteres stiltiende af postvæsenet. Derved opstår situationer hvor en kunde siger at han bor i NNNN X-BY, men hvor servicemedarbejderen indtaster NNNN og ser pludselig at der står Y-BY ved dette nummer. Brevet kommer selvfølgelig stadig det rette sted hen, men kunden er måske unødigt provokeret af dette. Desuden når man kommer under postnummer 1800 sker der sjove tiung. F.eks har 1218 København K 6 officielle entries i Post Danmarks liste?!?!?
Og hvis formålet skulle være at acceptere postnummer-by kombinationer som ikke er officielle så synes jeg at det er en katastrofe, så forsvinder alt data check.
Normalt er postnummer og by ikke nok til at have en adresse database, for checket skal ligge længere oppe i hierarkiet, og gadenavn skal medtages. Eksempelvis er mange lange gader opdelt i flere postnumre, og store kundedatabaser, jeg tillader mig at udtale mig ud fra viden om flere bladhuses abbonnements- og løssalgssystemer tilknyttes en adresse, bestående af gadenavn, postnummer og by til en kunde. Måske endda flere adresser, eks. også sommerhus adressen. Men dette gøres ved at fremfinde gadenavnet evt. via by og postnummer, men ikke umiddelbart ved at tilknytte et postnummer til adressen. Dette er allerede tilknyttet gadenavnet i nummerserier. Det lyder måske lidt kringlet, men pointen er at postnummer database er alt for lidt til at validere noget som helst. Enhver idiot kan indtaste noget sludder i et gadenavn og så er det temmeligt ligegyldigt at postnummeret kan valideres til at være korrekt. For at opsummere, en kunde får tilknyttet en eller flere adresser, som har tilknyttet et postnummer. Et postnummer som hverken kunden eller servicemedarbejderen vælgen, disse vælger en standard adresse og fra gadenavn og postnummer/by!!!
Men indrømmet i en simplere situation hvor du bare ikke vil have bynavnet stående på din kunderecord, eller hvad du nu engang har, så er en ny tabel med nøgle, postnummer og by rigeligt. Index på nøglen, men det klarer en primærnøgle for dig
Vi snakke rikke om en adresse database men om en postnummer tabel og primær nøgle. Vi er helt enige om at der er meget mere i en adresse database ned postnumem rtabel.
Og det passer jo ikke at man ikke kan validere noget med en postnummer tabel. Man kan validere om postnummer og by passer sammen. Det kan fange en hel del fejl-indtastninger. Hvis man altså checker og ikke bare acceptere alt.
Man kan så forbedre med det store forkromede check om gadenavn og nummer også passer til. Men det er noget sværere.
Men fordi man ikke vil det kan man altså godt have nyttet af at rejecte 7000 Kolding !
Min pointe var bare at hvis idioten har indtastet forkert i noget så simpelt som postnummer, hvad kan du så bruge resten af adressen til???? Så må du vil også lige spørge om vedkommende er sikker på at gadenummeret er rigtigt? Nå men jo, den kan da bruges til at folk slipper for at indtaste bynavnet, og kun skal indtaste fire cifre
Du kan bruge det til det at du opdager der er noget galt.
Når man indtaster 7000 Kolding så brokker databasen sig gevaldigt og man kan ikke gemme.
De forkerte data bliver ikke bare gemt, men der opstår en ikke-triviel situation.
Den der indtaster bliver tvunget til at læse hele adressen. Evt. prøve at checke lidt for at få den gemt. Det er ikke en garanti for at der bliver indtastet korrekte data. Men det hjælper lidt.
Den erfaring jeg har gjort er at en postnummer tabel uden landekode vil paa et tidspunkt give problemer, senest naar man faar den förste udenlandske kunde. Jeg har tidligere implementeret et postnummer tabel bestaaende af 3 räkker: LandeKode, PostKode og Bynavn, hvor den primäre nögle (med index) bestod af LandeKode og PostKode. Alle forsög som jeg har gjort paa at validere om brugeren indtastede 6000 Kolding eller lignede har jeg efter lange nätters arbejde opgivet. Brugeren indtaster 6000 og bynavnet bliver hentet fra postnummer tabellen - dermed sparer brugeren ogsaa lidt tastearbejde.
Jeg ser ikke de store problemer ved at have postnummer som primær nøgle i en tabel med kun postnumme rog by. Man kan godt lave en kunstig nøgle, men jeg syne sikke at den bidrager med meget.
Men hvis vi snakker om primærnøgle til en (ikke normaliseret) adresse tabel med: gade nummer etage postnummer by så er jeg helt med på en kunstig nøgle - primær nøgler bestående af mere end 2 felter er altid et helvede i applikationen.
Ja det var egentlig kun postnummer og by, gaden havde jeg pillet fra med argument om at gaden kan have mere end et post nummer.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.