webForumDet fria alternativet

Redundans

3 svar · 807 visningar · startad av Kalle M

Kalle MMedlem sedan mars 20041 936 inlägg
#1

Om man har en kundtabell med företag och vill undvika dubbellagring om företag kan ha fler kontaktpersoner. Kan man då lägga upp det på följande sätt?

tblföretag
Kundnr (Primärnyckel)
Företag
Adress
Postnr
Ort mm

Tblkontakt
Kundnr (Ingen nyckel)
Kontaktperson
Tel mm.

Och sedan skapa relation mellan kundnr i tblföretag och kundnr i tblkontakt.
Tänker jag rätt?

PeddaMedlem sedan juni 20006 032 inlägg
#2

I Tblkontakt skulle jag ha ett id som var autoincrement, förenklar när man ska redigera/radera en kontakt.
Sen skulle jag en relation, precis som du säger mellan Kundnr och Ref_Kundnr.

Jag brukar sätta ref_ framför fält som har en relation till en annan tabell för att enkelt kunna se det, men det är en smaksak hur man döper sina saker.

tblföretag
Kundnr (Primärnyckel)
Företag
Adress
Postnr
Ort mm

Tblkontakt
Id (autoincrement)
Ref_Kundnr
Kontaktperson
Tel mm.

/red
jag skulle även ha autoincrement på Kundnr, alternativt ett till fält till (id) som var autoincrement.

/red2
Inte något du frågar om, men ett litet tips.
Jag skulle även använda mig av ON DELETE CASCADE så raderas tillhörande kontakter automatiskt om du raderar en kund.

Kalle MMedlem sedan mars 20041 936 inlägg
#3

Ok!

Du menar att det är bra att ha ett ID längst upp i tblkontakt om man ska bygga databasen vidare?

PeddaMedlem sedan juni 20006 032 inlägg
#4

Tänk dig problemet om ett företag har flera kontakter och två av dom heter Anders Svensson.
Hur skriver du din DELETE när du ska radera kontakten?
DELETE FROM Tblkontakt WHERE kontaktperson='Anders Svensson' AND Kundnr=123
Detta kommer radera båda kontakterna. Däremot om varje kontakt har ett unikt id så blir det enklare.
DELETE FROM Tblkontakt WHERE id=1

127 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)