TravoniMedlem sedan okt. 20041 556 inlägg Jag tänker skapa en adressdatabas med entrepenörer och annat löst folk. (Helt laglig enligt datainspektionens normer...)
Vissa fält skall vara samma på alla poster. ex.
Namn, telefon, mobil, adress osv.
Men vissa vill jag kunna lägga till mer information till.
Är det min egen personal så vill jag kunna lägga till ex. anställningsnummer och anställningsdatum.
Men den informationen är ju knappast intressant om jag t.ex. lägger till en extern kontorsmaterielsgrossist, utan i detta fall kanske jag vill visa grossistens öppettider i stället.
Hur releterar jag då tabellerna till varandra på ett smidigt sätt?
Peter SMedlem sedan dec. 20025 483 inlägg Det finns ett par olika sätt lösa det på. Ett exempel:
' generell
PK_FOO | namn | telefon | mobil | adress
----------------------------------------
' personal
PK_FOO | anummer | adatum
-------------------------
' grossist
PK_FOO | öppnar | stänger
-------------------------
TravoniMedlem sedan okt. 20041 556 inlägg Ok, men måste jag inte ha en tabell som kopplar ihop dem sedan?
Peter SMedlem sedan dec. 20025 483 inlägg Nej, gör en join på primärnycklarna så fixar det sig. :)
TravoniMedlem sedan okt. 20041 556 inlägg Ok, men lite simplifierat; hur skulle en sådan kunna se ut.
Vad är det som talar om att Mickes El stänger klockan 16 om man inte relaterar dem på något vis?
' generell
PK_FOO | namn | telefon | mobil | adress
----------------------------------------
01 | Kalle | 123 | 073 | Gatan 2
02 | Mickes El | 234 | 070 | Vägen 1
' personal
PK_FOO | anummer | adatum
-------------------------
1 | 34 | 2005-01-01
' grossist
PK_FOO | öppnar | stänger
-------------------------
2 | 07:00 | 16:00
SELECT * FROM generell ge
LEFT JOIN personal p ON ge.PK_FOO = p.PK_FOO
LEFT JOIN grossist gr ON gr.PK_FOO = ge.PK_FOO
Eller?
Peter SMedlem sedan dec. 20025 483 inlägg Primärnycklarna i PERSONAL och GROSSIST är också främmande nycklar till GENERELLs primärnyckel. Så vi måste ha att domän(GENERELL.PK_FOO) = domän(PERSONAL.PK_FOO) = domän(GROSSIST.PK_FOO).
PK_FOO | namn | telefon | mobil | adress
----------------------------------------
1 | Kalle | 123 | 073 | Gatan 2
2 | Mickes El | 234 | 070 | Vägen 1
' personal
PK_FOO | anummer | adatum
-------------------------
1 | 34 | 2005-01-01
' grossist
PK_FOO | öppnar | stänger
-------------------------
2 | 07:00 | 16:00
Andra sätt är ju att skapa tabellerna enligt:
' personal
PK | namn | telefon | mobil | adress | anummer | adatum
-------------------------------------------------------
' grossist
PK | namn | telefon | mobil | adress | öppnar | stänger
-------------------------------------------------------
Eller
PK | namn | telefon | mobil | adress | anummer | adatum | öppnar | stänger | [b]typ[/b]
--------------------------------------------------------------------------------
Där typ kan vara t.ex. 'personal' eller 'grossist'. Problemet med den lösningen är att det blir många null-värden.