Avatar billede mireigi Novice
07. september 2010 - 16:09 Der er 4 kommentarer og
1 løsning

Normalformer og Primary Keys

Jeg har et problem med hvilke Columns jeg skal angive som PKs i en Tabel.

Strukturen er som følger:
{
underline = primary key
italic = foreign key
}

Page
[PageID, Name]

Language
[LanguageID, Name]

Content
[ContentID, LanguageID, PageID, Text]

PageID, LanguageID og ContentID er alle fortløbende.

Ovenstående giver desværre mulighed for at Content kan indeholde dubletter.

Problemet er så, at jeg har lært, at PK skal være så kort som muligt, men stadig forhindre dubletter. Derfor vil den korrekte PK altså være:

Content
[ContentID, LanguageID, PageID, Text]

ContentID bliver altså overflødig, men den bruges til nem adgang til Content tabellen, hvorfor den bør være PK for tabellen.

Skal jeg fjerne ContentID helt, eller kan jeg beholde den uden at anvende den som PK, så jeg sikrer mig mod dubletter, men stadig har nem adgang til Content tabellen?

Hvad er mest korrekt ifølge de 3-5 normalformer?
Avatar billede arne_v Ekspert
07. september 2010 - 16:13 #1
To muligheder:

1) drop contentid

2) behold contentid som PK og saet et unikt index paa (languageid,pageid)
Avatar billede mireigi Novice
07. september 2010 - 16:20 #2
Nu er jeg ikke den store haj til indexes.
Hvor opretter jeg dette (MSSQL2008)?
Avatar billede arne_v Ekspert
07. september 2010 - 16:26 #3
Du kan lave det grafisk i SQLServer Studio men ellers er det helt standard SQL:

CREATE UNIQUE INDEX indexnavn ON tabelnavn(feltnavn1,feltnavn2)
Avatar billede mireigi Novice
07. september 2010 - 21:08 #4
Ok, tak for det.

Smider du et svar, så får du point.
Avatar billede arne_v Ekspert
07. september 2010 - 21:11 #5
svar
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