webForumDet fria alternativet

Adressdatabas m. dynamiska fält

5 svar · 440 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

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
#2

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
#3

Ok, men måste jag inte ha en tabell som kopplar ihop dem sedan?

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Nej, gör en join på primärnycklarna så fixar det sig. :)

TravoniMedlem sedan okt. 20041 556 inlägg
#5

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
#6

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.

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