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

jedna sifra u dve tabele

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

[ Pregleda: 1528 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

konj
Milos Sreckovic
Sabac

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

Jabber: shakalsrecko@elitesecurity.org


Profil

icon jedna sifra u dve tabele11.01.2006. u 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
11.01.2006. u 21:31 

vilyu
Web Developer, Kaywa
Beograd, Srbija

Član broj: 1188
Poruke: 392
*.ETF.BG.AC.YU.



Profil

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

konj
Milos Sreckovic
Sabac

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

Jabber: shakalsrecko@elitesecurity.org


Profil

icon Re: jedna sifra u dve tabele12.01.2006. u 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.
12.01.2006. u 00:42 

vilyu
Web Developer, Kaywa
Beograd, Srbija

Član broj: 1188
Poruke: 392
*.yu
Via: [es] mailing liste



Profil

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

broker

Član broj: 2415
Poruke: 8521
212.62.59.*



Profil

icon Re: jedna sifra u dve tabele12.01.2006. u 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.
12.01.2006. u 10:06 

Fedya
Fedor Hajdu
Senior Software Engeneer, Ammado Internet Services
Novi Sad

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

Jabber: fedya@elitesecurity.org
Sajt: www.ammado.com


Profil

icon Re: jedna sifra u dve tabele13.01.2006. u 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]
I am currently away on leave, traveling through time and will be returning last week.
13.01.2006. u 07:07 

broker

Član broj: 2415
Poruke: 8521
212.62.59.*



Profil

icon Re: jedna sifra u dve tabele13.01.2006. u 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.



13.01.2006. u 09:03 

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

[ Pregleda: 1528 | Odgovora: 6 ]

Postavi temu Odgovori

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