[ Milos Sreckovic @ 11.01.2006. 21:31 ] @
imam objekat saradnik koji treba da predstavim kao tabelu. svaki saradnik ima svoju sifru. On preko te (jedinstvene) sifre 'reaguje' sa ostatkom baze. Fora je u tome sto postoje i podaci o saradnicima koji mogu biti i firme i fizicka_lica. Tu se podaci ne totalno ali 80% razlikuju. To sam strpao u dve tabele firme i fizicka_lica i imaju primarni kljuc i strani kljuc u jednom sifrs(sifra saradnika) koji se preuzima iz tabele saradnici u kojoj imam pored sifre i nadimak (to je zajednicko, svi imaju nadimak:) )

kako da kazem da jedna sifra odgovara ili firmi ili fizickom_licu
[ vilyu @ 11.01.2006. 23:56 ] @
Prvo sto mi pada na pamet je LEFT JOIN nekog polja tabele firme, ili fizicka lica tabeli saradnika, pa ako je u njemu vrednost NULL, onda sifra pripada drugoj grupi, ili ako je razlicito od NULL, onda je to bas sifra firme, odn. fizickog lica.
[ Milos Sreckovic @ 12.01.2006. 00:42 ] @
A jel moze u bazi da se napravi zabrana da se upisuje ista sifra u tabelu firma i fizicko lice? da ako vec postoji u jednoj da ne moze da postoji u drugoj?
Imass li ideju da problem resim na neki drugi nacin(bez tri tabele)? Problem je sto se i firme i fizicka lica isto tretiraju potpuno, a imaju potpuno podatke za pamcenje.
[ vilyu @ 12.01.2006. 02:31 ] @
Mislim da su tri tabele sasvim dobro resenje. Uostalom, tebi se nikad ni
ne upisuje ista sifra u te dve tabele. Imas tabelu saradnik u kojoj
postoji sifra saradnika koja se auto inkrementuje. Ti taj id unosis u
neku od ove dve tabele kada dodajes saradnika. Znaci, sifre se ne
ponavljaju u te dve tabele.
[ broker @ 12.01.2006. 10:06 ] @
Login radi samo u jednoj tabeli.

napavi tabelu auth koja ce da ima dva polja

user
password

Nju koristi za autentifikaciju

u tabelama firme i fizicka_lica stavi polje username koje ce ti sluziti za vezu izmedju login tabele i ove dve tabele.

Kada se neko uloguje, ne mroas praviti posebnu razliku, a mozes naci saradnika tako sto ces uraditi selcet po join ovane obe tabele. Nije veliki problem da dodas i neku oznaku da bi znao vrstu saradnika jer ti kasnije trebaju i razlicite forme za prikaz islicno.

Sve usemu, ovo ti je komplikovano.

Ja bih preporucio da se pomiris sa redundansom i imas jednu tabelu za saradnike koja ce imati takvu strukturu da moze da prihvati podatke za obe vrste saradnika. Dodaj i jedno polje tip saradnika, kako bi po potrebi mogao da ih razlikujes.
[ Fedya @ 13.01.2006. 07:07 ] @
Citat:
konj: A jel moze u bazi da se napravi zabrana da se upisuje ista sifra u tabelu firma i fizicko lice? da ako vec postoji u jednoj da ne moze da postoji u drugoj?
Imass li ideju da problem resim na neki drugi nacin(bez tri tabele)? Problem je sto se i firme i fizicka lica isto tretiraju potpuno, a imaju potpuno podatke za pamcenje.


Prvo pitanje bi moglo da se reši jednostavnim okidačem npr:

Code:

CREATE TRIGGER proveriFirme ON [Firme] 
    FOR Insert, Update
AS
    IF EXISTS (
        SELECT * FROM [Fizicko Lice] 
            WHERE Sifra IN (SELECT Sifra FROM Inserted)
    BEGIN
        RAISERROR('Ova sifra vec postoji u tabeli fizicko lice')
        ROLLBACK TRANSACTION
    END


Ovako isto uradiš i za tabelu [Fizicko lice]. Naravno ovo je samo predlog koji mi je prvo pao na pamet. Sigurno može i drugačije...

Što se tiče različitog pristupa problemu, slažem se sa vilyu-jem da je ovo rešenje ok, i ne moraš ga menjati; ali ako neko ima bolju ideju...

Citat:
broker: Login radi samo u jednoj tabeli.

Kakav sad login? Si ti zalutao?

[Ovu poruku je menjao Fedya dana 13.01.2006. u 08:11 GMT+1]
[ broker @ 13.01.2006. 09:03 ] @
Heh, ja sam milsio da mu se sifra odnosi n alogin :)

No svejedno, resenje je isto. Potrebna je treca tabela.

Tabela firme neka ima primarni kljuc po polju id_firme i ostal apolja koja su karakteristicna za firme

Tabela fizlic neka ima primarni kljuc id_fiz_lic i ostala polja koja su karakteristicna za fizicka lica

Napravi tabelu saradnici koja ce imati id_saradnika, tip_sradnika, id_fir_fiz_lic i ostala polja koja su zajednicka za firme i fizicka lica, a nek to budu bar naziv i mesto.

Tako ces imati jednoznacan ID za svakog saradnika, u tabeli saradnici ces imati dovoljno informacija da mozes da prikazes info o saradniku u lookup poljima u apliakciji bez potrebe da ih vuces iz drugih tabela, a po tipu ces znati odakle da povuces ostale podatke, ako su potrebni, a sifru konkretne firme ili fizickog lica imas u id_firm_fiz_lic.