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?