/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Er dette "normal" skik
Fra : Flare


Dato : 06-10-04 14:42

Jeg er stødt på følge database design. Er dette normal "skik" at gøre
nedenstående.

----Addresse----
Id
FOREIGNID (bigint)
IDENTIFIER (varchar(20))
Name
Street
Etc...
------------------

-- Person ---
Id
Role
Alder
etc.
-------------

Person kender ikke til Addresse mens Addresse i dens IDENTIFIER har en
string værdi på fx "person" og så et Person.Id i sin FOREIGNID. Der er også
andre IDENTIFIER muligheder fx "order", "kunde" etc.

De enkelte entiteter aner ikke at de har en addresse mens addresser kender
alle sine "ejere". Jeg synes det virker lidt vanvitigt at have et FOREIGNID
som kan pege på en lang række tabeller.

Anders



 
 
Kristian Damm Jensen (07-10-2004)
Kommentar
Fra : Kristian Damm Jensen


Dato : 07-10-04 12:29

"Flare" <none@at.all> wrote in message news:<4163f61c$0$232$edfadb0f@dread14.news.tele.dk>...
> Jeg er stødt på følge database design. Er dette normal "skik" at gøre
> nedenstående.
>
> ----Addresse----
> Id
> FOREIGNID (bigint)
> IDENTIFIER (varchar(20))
> Name
> Street
> Etc...
> ------------------
>
> -- Person ---
> Id
> Role
> Alder
> etc.
> -------------
>
> Person kender ikke til Addresse mens Addresse i dens IDENTIFIER har en
> string værdi på fx "person" og så et Person.Id i sin FOREIGNID. Der er også
> andre IDENTIFIER muligheder fx "order", "kunde" etc.
>
> De enkelte entiteter aner ikke at de har en addresse mens addresser kender
> alle sine "ejere". Jeg synes det virker lidt vanvitigt at have et FOREIGNID
> som kan pege på en lang række tabeller.

Du kan jo overveje alternativet Fx at have en adresse-tabel for
hver af de andre tabeller.

Personligt ville jeg nok først lave en supertype til person, order,
kunde osv. Det ville gøre det lidt nemmere a holde styr på tingene.

Og at personer ikke kender deres adresse er en naturlig følge af, at
personer (og ikke mindst kunder) kan have flere adresser. Der bør så
til gengæld være en mulighed for at angive, hvilken adresse man skal
bruge i forskellige sammenhænge.

Og så er det fjollet, at skrive personId direkte på adressen. Der bør
være en mange-til-mange relation, hvordan ellers repræsentere flere
personer på samme adresse? (Med mindre man vil have den samme adresse
to gange...)

VH
Kristian

Flare (07-10-2004)
Kommentar
Fra : Flare


Dato : 07-10-04 16:05

> Du kan jo overveje alternativet Fx at have en adresse-tabel for
> hver af de andre tabeller.
>
> Personligt ville jeg nok først lave en supertype til person, order,
> kunde osv. Det ville gøre det lidt nemmere a holde styr på tingene.
>
> Og at personer ikke kender deres adresse er en naturlig følge af, at
> personer (og ikke mindst kunder) kan have flere adresser. Der bør så
> til gengæld være en mulighed for at angive, hvilken adresse man skal
> bruge i forskellige sammenhænge.
>
> Og så er det fjollet, at skrive personId direkte på adressen. Der bør
> være en mange-til-mange relation, hvordan ellers repræsentere flere
> personer på samme adresse? (Med mindre man vil have den samme adresse
> to gange...)

Tak for svaret. Ja nu er det heller ikke fordi jeg regner med at bruge denne
metode da den virker "dum". Jeg vil bare lige hører om det var en metode det
jævnligt blev brugt i DB verdenden da jeg så ikke ville gøre mig klog over
for vedkommende der har strikket det sammen i sin tid. Det er ifm. et
migrringsprojekt af en gamel DB til en ny platform.

Mvh
Anders



Kristian Damm Jensen (08-10-2004)
Kommentar
Fra : Kristian Damm Jensen


Dato : 08-10-04 12:18

"Flare" <none@at.all> wrote in message news:<41655b0f$0$237$edfadb0f@dread14.news.tele.dk>...
<snip>
> Tak for svaret. Ja nu er det heller ikke fordi jeg regner med at bruge denne
> metode da den virker "dum".

Hov så har du misset min pointe. Det er ikke den dum metode i
princippet. Den er bare (efter min smag) lidt klodset implementeret.

VH Kristian

Jesper Sommer (19-10-2004)
Kommentar
Fra : Jesper Sommer


Dato : 19-10-04 16:43

Hej Anders.

Konceptet kaldes ind imellem også for en "weak relation" (må ikke
forveksles med OO programmering hvor det ikke er helt det samme) og i
visse tilfælde kan det faktisk give god mening.

Forestil dig at du har f.eks. vælger at have telefonnumre i en separat
"telefon nummer tabel", lad os kalde den tbl_phoneNumber, men at du
samtidigt har mange forskellige entiteter i din database der kan anvende
denne tabel - f.eks. Ordre, Firma, Kontakt, Bruger, og alt muligt andet.

Hvis man skulle lave M2N (mange-til-mange) relationer mellem
tbl_phoneNummber og alle de tabeller der anvender den, så ville det
betyde en ny mellemtabel for hver eneste af dem. Det vil man ikke altid.

Alternativet er så, at benytte den model du selv har observeret. Det
svarer til, at der kun er een enkelt mellemtabel der indeholder en "blød
relation" der kan koble en record sammen med alle de andre tabeller. Det
gøres ved at disse tabellers navn indgå som en del af opslaget. Dermed
sparer man en række tabeller, og får desuden langt nemmere ved at lave
en forespørgsel der kan vise HVOR et enkelt telefonnummer nogen sinde er
blevet brugt/relateret.

Jeg er ikke nødvendigvis selv fortaler af modellen, men den har klare
fordele, og er ikke så mystisk endda

Venligst

- Jesper



Kristian Damm Jensen wrote:
> "Flare" <none@at.all> wrote in message news:<4163f61c$0$232$edfadb0f@dread14.news.tele.dk>...
>
>>Jeg er stødt på følge database design. Er dette normal "skik" at gøre
>>nedenstående.
>>
>>----Addresse----
>>Id
>>FOREIGNID (bigint)
>>IDENTIFIER (varchar(20))
>>Name
>>Street
>>Etc...
>>------------------
>>
>>-- Person ---
>>Id
>>Role
>>Alder
>>etc.
>>-------------
>>
>>Person kender ikke til Addresse mens Addresse i dens IDENTIFIER har en
>>string værdi på fx "person" og så et Person.Id i sin FOREIGNID. Der er også
>>andre IDENTIFIER muligheder fx "order", "kunde" etc.
>>
>>De enkelte entiteter aner ikke at de har en addresse mens addresser kender
>>alle sine "ejere". Jeg synes det virker lidt vanvitigt at have et FOREIGNID
>>som kan pege på en lang række tabeller.
>
>
> Du kan jo overveje alternativet Fx at have en adresse-tabel for
> hver af de andre tabeller.
>
> Personligt ville jeg nok først lave en supertype til person, order,
> kunde osv. Det ville gøre det lidt nemmere a holde styr på tingene.
>
> Og at personer ikke kender deres adresse er en naturlig følge af, at
> personer (og ikke mindst kunder) kan have flere adresser. Der bør så
> til gengæld være en mulighed for at angive, hvilken adresse man skal
> bruge i forskellige sammenhænge.
>
> Og så er det fjollet, at skrive personId direkte på adressen. Der bør
> være en mange-til-mange relation, hvordan ellers repræsentere flere
> personer på samme adresse? (Med mindre man vil have den samme adresse
> to gange...)
>
> VH
> Kristian

Søg
Reklame
Statistik
Spørgsmål : 177514
Tips : 31968
Nyheder : 719565
Indlæg : 6408618
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste