Avatar billede alx1 Nybegynder
26. maj 2003 - 19:19 Der 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 ?
Avatar billede terry Ekspert
26. maj 2003 - 20:12 #1
I would give them a new primary key, nothing at all wrong with that :o)
Avatar billede teepee Nybegynder
26. maj 2003 - 23:22 #2
Desuden er postnummer ikke unique. Flere byer kan have samme postnummer, men forskellige navne
Avatar billede arne_v Ekspert
27. maj 2003 - 04:38 #3
teepee>

Som Post Danmark definerer det så har et post nummer kun en by.

(det omvendte er ikke tilfældet)
Avatar billede arne_v Ekspert
27. maj 2003 - 04:44 #4
Du kan godt lave en kunstig nøgle.

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).
Avatar billede alx1 Nybegynder
27. maj 2003 - 13:11 #5
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 ?
Avatar billede teepee Nybegynder
27. maj 2003 - 15:57 #6
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?!?!?
Avatar billede teepee Nybegynder
27. maj 2003 - 15:58 #7
alx1, ALLE implementerer en pseudo nøgle på postnumer! Ellers har de sovet i skolen.
Avatar billede alx1 Nybegynder
27. maj 2003 - 16:02 #8
Tak, det var det jeg mente :)
Avatar billede arne_v Ekspert
27. maj 2003 - 16:14 #9
At *alle* bruger kunstig nøgle til postnummer tabel finder jeg
en højest utroværdig påstand.
Avatar billede arne_v Ekspert
27. maj 2003 - 16:15 #10
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.
Avatar billede alx1 Nybegynder
27. maj 2003 - 16:18 #11
Uden at have undersøgt teepee's argument om post DK's officielle liste af entries. Hvordan ville du så løse det ?
Avatar billede teepee Nybegynder
27. maj 2003 - 16:28 #12
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!!!
Avatar billede arne_v Ekspert
27. maj 2003 - 16:29 #13
Hvis der er 6 records med:
  1218
  København K
så ligger man naturligvis kun 1 record ind i sin tabel.

Det sker der ikke noget ved.

Og det er jo iøvrigt nærmest et argument *ikke* at bruge en kunstig nøgle.

Overvej følgende data indhold:

1    1218    København K
2    1218    København K
3    1218    København K
4    1218    København K
5    1218    København K
6    1218    København K

Du indtaster 1218 København K - hvilken kunstig nøgle skal
din applikation gemme i databasen ? 1, 2, 3, 4, 5 eller 6 ?
Avatar billede teepee Nybegynder
27. maj 2003 - 16:30 #14
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
Avatar billede teepee Nybegynder
27. maj 2003 - 16:32 #15
Arne, enig, ved kun postnummer og by, giver det ingen mening med 6 ens entries
Avatar billede arne_v Ekspert
27. maj 2003 - 16:34 #16
tepee>

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 !
Avatar billede teepee Nybegynder
27. maj 2003 - 16:37 #17
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
Avatar billede arne_v Ekspert
27. maj 2003 - 16:41 #18
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.
Avatar billede htuxen Nybegynder
27. maj 2003 - 16:44 #19
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.
Avatar billede arne_v Ekspert
27. maj 2003 - 16:45 #20
Men måske er vi ikke så uenige.

"ved kun postnummer og by"

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.
Avatar billede teepee Nybegynder
27. maj 2003 - 16:47 #21
alx1 har allerede i første indlæg forklaret problematikken ved at benytte postnummeret som nøglen.
Avatar billede alx1 Nybegynder
27. maj 2003 - 16:49 #22
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester