Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

jedna sifra u dve tabele

[es] :: Baze podataka :: jedna sifra u dve tabele

[ Pregleda: 3134 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milos Sreckovic
System administrator, SET d.o.o.
Šabac

Član broj: 30126
Poruke: 267
*.smin.sezampro.yu.

Sajt: www.set.rs


+2 Profil

icon jedna sifra u dve tabele11.01.2006. u 21:31 - pre 222 meseci
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
 
Odgovor na temu

vilyu
Web Developer
Beograd, Srbija

Član broj: 1188
Poruke: 444



+2 Profil

icon Re: jedna sifra u dve tabele11.01.2006. u 23:56 - pre 222 meseci
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.
Pera električar 0637129710, BG, preporučujem.
 
Odgovor na temu

Milos Sreckovic
System administrator, SET d.o.o.
Šabac

Član broj: 30126
Poruke: 267
*.smin.sezampro.yu.

Sajt: www.set.rs


+2 Profil

icon Re: jedna sifra u dve tabele12.01.2006. u 00:42 - pre 222 meseci
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.
 
Odgovor na temu

vilyu
Web Developer
Beograd, Srbija

Član broj: 1188
Poruke: 444
Via: [es] mailing liste



+2 Profil

icon Re: jedna sifra u dve tabele12.01.2006. u 02:31 - pre 222 meseci
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.
Pera električar 0637129710, BG, preporučujem.
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: jedna sifra u dve tabele12.01.2006. u 10:06 - pre 222 meseci
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.
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
*.leased.neobee.net.

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: jedna sifra u dve tabele13.01.2006. u 07:07 - pre 222 meseci
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]
Every hamster has his day.
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: jedna sifra u dve tabele13.01.2006. u 09:03 - pre 222 meseci
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.



 
Odgovor na temu

[es] :: Baze podataka :: jedna sifra u dve tabele

[ Pregleda: 3134 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.