[ virtualVoid @ 22.11.2009. 09:57 ] @
U teoriji o bazama podataka jasno stoji da se podaci u bazi ne smiju duplicirati radi konzistentnosti baze podataka. Medjutim meni se cesto dogadja slicna situacija:

Sistem sa logiranjem. Sadrzi bazu radnika i sefova (naravno i druge tabele). Svi se logiraju na sistem. Ispod je sketch tabela.



Ocigledno je da se podaci duplju u tabeli korisnici jer su korisnici i radnici i sefovi.

Kako vi rjesavate ovakve situacije? Da li u tabelu korisnici (kao npr. Joomla engine) utrpate sve zaposlenike pa svakom posebice dodajate kojeg je tipa (sef, radnik,...) ili kreirate tabelu login sa samo par kolona? Nesto trece?

PS.SefZaduzenja tabela je MtoM tabela u kojoj se vodi evidencija koji sef je dao koje zaduzenje da bi se kod promjene sefa moglo upratiti sto je koji sef naredjivao.
[ MarkoBalkan @ 22.11.2009. 10:31 ] @
napravi samo jednu tabelu osobe i stavi jedno polje identifikator, R za radnik, O za osoba.

ako je radnik, onda je vezan na smjenu, a ako je šef, staviš još identifikator S.

i imaš jednu tabelu.

[ virtualVoid @ 24.11.2009. 10:35 ] @
Kako sam razumio, sve tri tabel spojiti u jednu i sve podatke cuvati unutar jedne tabele?

Je li problem ako sef i radnik imaju podatke koji im nisu zajednicki? Npr. osobni podaci su svima zajednicki, ali za radnika pratim neke stvari koje ne pratim za sefa, i obratno. Na ovaj nacin tabela ce imati npr. 20 kolona od kojih ce 5-6 biti zajednickih za obojicu, a ostale ce biti neke za radnika, a neke za sefa. E sad, postoje podaci koji se moraju unijeti za sefa (NOT NULL), ali koji ne vrijede za radnika. Tako dolazim u situaciju da necu moci unijeti radnika jer u ovu kolonu necu imati sto unijeti.

Kako rjesavate ovakve situacije?
[ MarkoBalkan @ 24.11.2009. 15:57 ] @
to izdvojiš staviš u posebnu tabelu.
posebno za radnika, posebno za šefa.

u jednoj i drugoj

recimo dodatna tablica za sefa
ID_Osobe veza na glavnu tablicu

ID_Sef, ID_Osobe,kolone..............
[ virtualVoid @ 25.11.2009. 22:35 ] @
Znaci, ti sve zajednicke osobine (koje se mogu duplicirati) ubacis u jednu tabelu, koju sam ja nazvao Users u koja sluzi i za logiranje i za pohranjivanje podataka i za sefa i radnika. Onda kreiram posebnu tabelu sa karakteristikama sefa (koja ima NOT NULL stupce) i posebnu sa karakteristikama radnika (sa svojim NOT NULL stupcima).



Jesam li te dobro skuzio?
[ MarkoBalkan @ 26.11.2009. 17:28 ] @
jesi

UserId u boss i u worker ti mora biti unique.

znači za jednog korisnika možeš unijeti samo jedanput da bude šef.

i kad radiš formu
na formu stavi dva radio buttona, prvi->šef, drugi-> radnik

ako je odabran šef, dio za uno kod radnika je onemogučeno.

ako kažeš da šef može biti i radnik, onda koncept ne valja, pa UserType i korisnik moraš spojiti s trećom tabelom u kojoj imaš samo ID jednog i drugog.

[Ovu poruku je menjao chachka dana 27.11.2009. u 10:57 GMT+1]