DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > SQL baze podataka - Sponzor: Baze-Podataka.net
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka

Odgovori
 
Alati teme Način prikaza
Staro 15. 02. 2012.   #1
Darkonyks
član
Certified
 
Avatar Darkonyks
 
Datum učlanjenja: 27.07.2011
Poruke: 66
Hvala: 12
3 "Hvala" u 2 poruka
Darkonyks is on a distinguished road
Pošaljite poruku preko Skype™ za Darkonyks
Default [REŠENO] FK iz tri razlicite kolone

Postovane kolege,

trenutno pravim aplikaciju za jednu firmu i naisao sam na problem sa pravljenjem FK iz tri razlicite kolone. Naime, radi se o kablovskom pojacalu (VRPneu) ciji unique i/ili identitet je sastavljen iz tri razlicite kolone (ONKZ,ASB_alt i Vrp_alt). Meni je potrebnan skup te tri kolone (tabele VRPneu) kako bih prosledio unique value u drugu tabelu Digitalizacija. Da li neko zna kako mogu to da uradim?

Unapred hvala.

U prilogu su podaci:

CREATE TABLE [dbo].[VRPneu](
[RedniBrojID] [int] IDENTITY(1,1) NOT NULL,
[ONKZ] [nvarchar](50) NULL,
[AsB neu] [nvarchar](50) NULL,
[VrP neu] [nvarchar](50) NULL,
[ASB alt] [nvarchar](50) NULL,
[VrP alt] [nvarchar](50) NULL,
[C-Linie] [nvarchar](50) NULL,
[Vergabe an] [nvarchar](50) NULL,
[Beginn] [nvarchar](50) NULL,
[IsporukaID] [nvarchar](50) NULL,
[Operater] [nvarchar](50) NULL,
[FakturaID] [nvarchar](50) NULL,
[Zavrsetak] [datetime] NULL,
[Pocetak] [date] NULL,
[DKP] [bit] NULL,
[Sema u crvenom] [nvarchar](50) NULL,
[Komentar] [nvarchar](50) NULL,
[Prihvacena] [nvarchar](50) NULL,
CONSTRAINT [PK_VRPneu] PRIMARY KEY CLUSTERED
(
[RedniBrojID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO



CREATE TABLE [dbo].[Digitalizacija](
[RedniBrojID] [int] IDENTITY(1,1) NOT NULL,
[ONHZ] [nvarchar](50) NULL,
[ASB Alt] [nvarchar](50) NULL,
[VRP Alt] [nvarchar](50) NULL,
[VrP] [nvarchar](50) NULL,
[C-Linie] [nvarchar](50) NULL,
[Beginn] [nvarchar](50) NULL,
[Operater] [nvarchar](50) NULL,
[Pocetak] [nvarchar](50) NULL,
[Zavrsetak] [nvarchar](50) NULL,
[Broj D linija] [nvarchar](50) NULL,
[Kontrola izvrsena] [nvarchar](50) NULL,
[KontroluIzvrsio] [nvarchar](50) NULL,
[Status] [nvarchar](50) NULL,
[FakturaID] [nvarchar](50) NULL,
[D_linije_po_starom] [nvarchar](50) NULL,
CONSTRAINT [PK_Digitalizacija] PRIMARY KEY CLUSTERED
(
[RedniBrojID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
Priloženi fajlovi
Tip fajla: zip SQL_VRP.zip (1,3 KB, 808 pregleda)
Darkonyks je offline   Odgovorite uz citat
Staro 16. 02. 2012.   #2
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Jel si probao nešto ovako: http://stackoverflow.com/a/6651906/82592
__________________
blog
jablan je offline   Odgovorite uz citat
"Hvala" jablan za poruku:
Staro 16. 02. 2012.   #3
biske
Иван Бишевац
Qualified
 
Avatar biske
 
Datum učlanjenja: 28.08.2008
Lokacija: Зубин Поток
Poruke: 176
Hvala: 109
208 "Hvala" u 18 poruka
biske is on a distinguished roadbiske is on a distinguished roadbiske is on a distinguished road
Pošaljite poruku preko Skype™ za biske
Default

Ово што је Јаблан препоручио завршава посао.
Нисам сигуран да ли одговара твојим захтевима али ми се чини да је могуће и да се стави UNIQUE индекс над колонама (ONKZ,ASB_alt i Vrp_alt) у табели VRPNeu, и после само да се пренесе примарни кључ из табеле VRPNeu у табелу Digitalizacija у виду станог кључа. Кад затребају ова три поља (мислим на ONKZ,ASB_alt i Vrp_alt), извршиш спајање и то је то.
biske je offline   Odgovorite uz citat
Staro 16. 02. 2012.   #4
Milos Vukotic
Knowledge base
Wrote a book
 
Avatar Milos Vukotic
 
Datum učlanjenja: 07.06.2005
Lokacija: Neđe ođe...
Poruke: 1.197
Hvala: 339
688 "Hvala" u 178 poruka
Milos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamenMilos Vukotic je pravi dragi kamen
Default

Koliko je mudro i izvodljivo u ovakvim situacijama koristiti MD5 hash od nekoliko polja kao FK za drugu tabelu?

PS. Izvinjavam se pokretaču teme zbog eventualnog komplikovanja priče
__________________
Чак Норис може да си ги врзе врвките на чевлите со стапалата.
Milos Vukotic je offline   Odgovorite uz citat
Staro 16. 02. 2012.   #5
Darkonyks
član
Certified
 
Avatar Darkonyks
 
Datum učlanjenja: 27.07.2011
Poruke: 66
Hvala: 12
3 "Hvala" u 2 poruka
Darkonyks is on a distinguished road
Pošaljite poruku preko Skype™ za Darkonyks
Default

E upravo tako nesto bi mi koristilo. Pokusacu sa tri primarna kljuca iz tri razlicite kolone, pa javljam da li je uspelo. Hvala jablan
Darkonyks je offline   Odgovorite uz citat
Staro 17. 02. 2012.   #6
miks
član
Certified
 
Datum učlanjenja: 24.02.2009
Poruke: 55
Hvala: 0
11 "Hvala" u 7 poruka
miks is on a distinguished road
Default

Ako ti ONKZ, ASB_alt i Vrp_alt predstavljaju unique key u tabeli VRPneu onda vec imas definisan FK za Digitalizaciju, to je RedniBrojID iz VRPneu tabele, a ako ovo nije slucaj, onda bih ti savetovao da jos malo porazmislis o ovoj semi baze.
miks je offline   Odgovorite uz citat
Staro 17. 02. 2012.   #7
Darkonyks
član
Certified
 
Avatar Darkonyks
 
Datum učlanjenja: 27.07.2011
Poruke: 66
Hvala: 12
3 "Hvala" u 2 poruka
Darkonyks is on a distinguished road
Pošaljite poruku preko Skype™ za Darkonyks
Default

Ne postoji mogucnost da mi polja budu unique jer se podaci ponavljaju
primer prve n-torke:

ONKZ=711
Asb_alt=1
Vrp_alt=1

primer 2. n-torke

ONKZ=711
Asb_alt=1
Vrp_alt=2)

Postoji veliki broj kombinacija naziva pojacala (711_1_5; 711_1_6; 6202_1_6 itd...)
tako da mi kolone ne mogu biti unique jer se podaci ponavljaju ali u razlicitim kombinacijama. Probavam sada ono sto je jablan predlozio, ukoliko ne uspe pokusacu da, sto ti kazes preko RedniBrojId samo sto ce ID biti sastavljen od te tri kolone (71115 npr).
Darkonyks je offline   Odgovorite uz citat
Staro 17. 02. 2012.   #8
miks
član
Certified
 
Datum učlanjenja: 24.02.2009
Poruke: 55
Hvala: 0
11 "Hvala" u 7 poruka
miks is on a distinguished road
Default

Neznam nista vezano za pojacala niti za program koji radis, ali kako si sam naveo ako ti se pojacalo identifikuje sa te tri kolone, onda bi trebalo da zapis koji predstavljaju bude jedinstven, ako nije onda napravi novu tabelu gde ce to biti realizovano. Zato sam i rekao da malo porazmislis o trenutnoj semi baze, jer se cini da nije normalizovana.

Tabela VRP (ID, ONKZ, Asb_alt, Vrp_alt, ostali atributi pojacala (bez FakturaID is sl))

Tabela VRPneu (ID, VRP_ID, FakturaID, ostalo ... )

Tablea Digitalizacija (ID, VRP_ID, FakturaID, ostalo ...)

ili kao sto je vec navedeno mozes da vuces te tri kolone kroz svaku tabelu kao FK gde ti treba pojacalo.
miks je offline   Odgovorite uz citat
Staro 17. 02. 2012.   #9
nn.nn
nobody
Expert
 
Avatar nn.nn
 
Datum učlanjenja: 19.04.2007
Poruke: 537
Hvala: 14
705 "Hvala" u 106 poruka
nn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoro
Default

Nisi naveo koju bazu koristiš. Nisam baš neki poznavalac, ali mi se čini da Postgresql, a verovatno i razne druge baze, ne ograničava UNIQUE constraint na jednu kolonu:

Kôd:
CREATE TABLE example (
    a integer,
    b integer,
    c integer,
    UNIQUE (a, c)
);
Dakle, n-torke se ne mogu ponavljati u tako definisanoj tabeli.
nn.nn je offline   Odgovorite uz citat
Staro 17. 02. 2012.   #10
Darkonyks
član
Certified
 
Avatar Darkonyks
 
Datum učlanjenja: 27.07.2011
Poruke: 66
Hvala: 12
3 "Hvala" u 2 poruka
Darkonyks is on a distinguished road
Pošaljite poruku preko Skype™ za Darkonyks
Default

Koristim Ms SQL Server 2008, i on ne ogranicava na jedan unique u tabeli, ali kod mene ni ne mogu da budu unique kolone jer se podaci ponavljaju.

Miks, mislim da si mozda u pravu sto se tice normalizacije tabele. Kad malo bolje sagledam strukturu dosta je toga sto se nepotrebno ponavlja u vise tabela. Moracu nesto da izmenim. Nisam se do sada dovoljno bavio bazama pa mi je jos tesko da primenim sve na malo komplikovanijoj bazi.

...ali zato su tu forumasi da pomognu
Darkonyks je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum


Vreme je GMT +2. Trenutno vreme je 08:02.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.