» »

Access in malo večja baza

Access in malo večja baza

|Luka| ::

Pozdravljeni!
Na šihtu mam nalogo uredit bazo zaposlenih, ki imajo mobilnike, so pa tudi takšni brez in imajo samo stacionarni telefon.
Ideja je sledeča:
baza naj bi vsebovala podatke o zaposleneih (ime, priimek, naslov,...), potem telefonske števike (interna, mobilna,...) in pa kakšen mobilnik ima kdo.
Možno pa je da ima 1 oseba več mobilnikov in več številk, da sploh nima mobilnika (ima samo interno št.) ali pa da si dva zaposlena pač zamenjata številki...
Moram pa slediti celotni "zgodovini" zamenjav, "updatov", se pravi moram imeti tudi datume, kdaj je kdo prejel kakšen aparat, zamenjal številko, ipd.

Sam sem sicer poskušal s tremi tabelami, vendar se pojavi problem pri sledljivosti...
Če ima kdo kakšen predlog, se priporočam :O

LP

trnvpeti ::

tabela A
id
ime
priimek
ostali podatki

tabela B
a_id
datum_od
datum_do
stevilka
tip_mobilnika

|Luka| ::

To je bila itak možnost št. 1, ampak kako se pa zadeva obnaša če npr. nekdo da odpoved in spet nekdo tretji podeduje njegovo telefonsko in morebiten aparat?

trnvpeti ::

ce da odpoved, vpises datum_do datum odpovedi
podedovani pa datum_od od datuma, ko je dobil telefon

|Luka| ::

Kaj pa če ma ena oseba več mobilnikov, npr. 2, in posledično tudi 2 številki?
Ker če dam relacijo 1-to-many med id in id_a, potem id_a ne tolerira dvojnikov (če je pač id_a primary key) in mislm da spet ne drži vode...
lahko pa da se motim...

trnvpeti ::

1 041111111 1.1.2008 null
1 040111111 1.1.2008 null

primary key recimo
id_a + tel + datum_od + datum_do

zavajon ::

Če predpostavljaš, da je en mobilnik lahko v posesti samo ene osebe, dodaš v tabelo mobilnikov ID osebe in narediš relacijo "one to many" med ID v tabeli oseb in OSEBA_ID v tabeli mobilnikov. OSEBA_ID ni unique, je pa "foreign key". Tako bo v tem polju prazna vrednost pri prostih mobilnikih, pri zasedenih pa bo ID osebe. Če oseba zamenja mobilnik, boš pri starem vrednost izbrisal, pri novem pa dodal. Podobno je, če mobilnik zamenja osebo: staro vrednost nadomestiš z novo.
Zgodovino zamenjav pa narediš tako, da spremembe vpisuješ v posebno tabelo sprememb tabele mobilnikov, kamor vpišeš stanje vrstice pred spremembo (razen pri insertu), flag transakcije (INS, UPD, DEL) in čas transakcije.

|Luka| ::

Trnvpeti mi je zelo pomagal z idejo dveh "keyev".
Zavajon verjetno se drugi odstavek nanaša direktno na SQL? V Accessu sem domač v toliko, da znam "sestavit" enostavne baze, kar je več se pa potem kr matram in težim folku...
Da še enkrat naštejem vse možne kombinacije:
1 oseba več mobilnikov
1 oseba več številk
1 oseba da odpoved in nekdo "podeduje" njegov mobilnik
1 oseba da odpoved in nekdo "podeduje" njegovo številko
1 soebi se pokvari mobilnik in dobi novega
2 osebi zamenjata številki
2 osebi zamenjata mobilnik

Moram pa sledi kompletni zgodovini zamenjav ipd...

LP


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SQL rabim pomoč

Oddelek: Programiranje
71149 (984) VelikiJanez
»

SQL query za datume, ki se ne prekrivajo

Oddelek: Programiranje
212630 (2261) omnimint
»

Statistika dijakov, pomoc

Oddelek: Programiranje
211798 (1282) Mitja Bonča
»

podatkovna baza

Oddelek: Programiranje
52062 (1883) scarymovie
»

SQL poizvedba

Oddelek: Programiranje
152176 (1686) borchi

Več podobnih tem