Databáza - relácia 1:1

Ak hľadáte nejaký softvér do PC prípadne ak s ním máte nejaký problém.

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: Databáza - relácia 1:1

Príspevok od používateľa Radus » 30 Mar 2021, 18:02

Pekné, tak to už hej.
Ešte by som mal otázku na profesionála. Asi som si vypestoval zlý zlozvyk, nepoužívam totiž pre spájanie tabuliek JOIN. Keď potrebujem spojiť tabuľky robím to napr: SELECT d.dep FROM USER us, DEPARTMENT d WHERE us.id=d.userId AND userId = xxx, napr, to som len tak z hlavy.
Na koľko je takýto zápis zlý? Funguje rýchlejšie ak použijem JOIN?
Vďaka
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6200
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Databáza - relácia 1:1

Príspevok od používateľa pocitujlasku » 30 Mar 2021, 20:17

nie je to zle, len tam nesmies zabudnut to prepojenie.
ja pouzivam join, lebo sa mi zda krajsi zapis a hned vidim ako je tabulka prepojena. Navyse casto pouzivam skor left join, tak aby som mal jednotny zapis.
inac fajn vychytavky su aj temporary table a CTE.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: Databáza - relácia 1:1

Príspevok od používateľa Radus » 30 Mar 2021, 20:41

Ja sa v tomto považujem skôr za začiatočníka. Temporary table používam pri vnorených príkazoch, napríklad pre SELECT DISTINCT... a potom z toho ďalší SELECT. CTE mi nič nehovorí...ale vyzerá to zaujímavo čo som narýchlo vygooglil. Musím poštudovať. Ďakujem.
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6200
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Databáza - relácia 1:1

Príspevok od používateľa pocitujlasku » 31 Mar 2021, 09:08

na to ti staci subselect. CTE je super, len sa da pouzit iba v jednom hlavnom selecte. a taky cursor je fajn, je to vlastne obdoba foreach.
ja databazy ako take riesim vyse 10 rokov (oracle, firebird/interbase, mysql), a mssql poslednych 5 rokov.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

JohnnyElektro
Stály člen
Stály člen
Príspevky: 386
Dátum registrácie: 16 Júl 2019, 14:22

Re: Databáza - relácia 1:1

Príspevok od používateľa JohnnyElektro » 31 Mar 2021, 09:48

Firebird/interbase je bomba, prisiel prvy s triggermi. Ja som si s jednym "on connection" triggerom zahatal pristup do databazy pretoze vyzadoval specificke heslo na sysdba ucet roota :potlesk:
Taketo zabezpecenie ostatne db nevedeli.
Na fb som spravil C# wrapper, ale uz asi je nieco take dostupne, je to uz 10 rokov. Ale ak by niekto chcel ten C# wrapper, zadarmo mu ho dam, len aby ho vytestoval, by som sa potesil, kontakt cez spravu ked tak.
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: Databáza - relácia 1:1

Príspevok od používateľa dan21 » 31 Mar 2021, 09:55

database trigger poznam uz hodne davno. Taky Informix to mal uz par desatroci dozadu :-)
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6200
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Databáza - relácia 1:1

Príspevok od používateľa pocitujlasku » 31 Mar 2021, 10:59

JohnyElektro: neviem, ci bol prvy, ale vela veci mala nie velmi stastne riesene. napr. procky, ked musis deklarovat aj vystupy a nevie vratit viac datasetov. Alebo pri par milionoch zaznamov to padalo. A peklo zvane transakcie a obcasne vytuhnutie, to bola klasika.
My sme to pouzivali, lebo stacilo pridat do projektu jednu dll a pre jednouzivatelsky pristup si nemusel instalovat cely engine. A navyse, kedze projekty boli v Delphi, a fb robila ta ista firma, tak implementacia bola hracka.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

JohnnyElektro
Stály člen
Stály člen
Príspevky: 386
Dátum registrácie: 16 Júl 2019, 14:22

Re: Databáza - relácia 1:1

Príspevok od používateľa JohnnyElektro » 31 Mar 2021, 11:43

Fb sa vie odstavit, hlavne transakcie su velmi narocne, avsak su pomocky ako prepared statementy, tie som videl ako idu na 1000nasobok insertov a pod.
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6200
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Databáza - relácia 1:1

Príspevok od používateľa pocitujlasku » 31 Mar 2021, 11:49

my sme to mali v systeme, kde isli desiatky dotazov za sekundu, ale ked sme presli na interbase, tak to uz bolo o niecom inom. 3/4 roka sme ani netukli do systemu, lebo bezal ako hodinky.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: Databáza - relácia 1:1

Príspevok od používateľa Radus » 31 Mar 2021, 23:25

No, spomínate tu zase kopu cudzích slov a ktorých nemám šajnu :) Tak mi treba :P
Dnes som mal takú perličku, mám spravenú reláciu v jednej tabuľke. Napr - zoznam užívateľov, tie majú vlastné id, ale majú aj parameter ktorý určuje napr ich šéfa, teda šefId, a táto relácia sa zase spatne odkazuje na tú istú tabuľku. Najvyšší šéf má ako šéfId sám seba :) To je len príklad. Ako na jeden select dostanem meno šéfa pomocou užívateľského id? Hútal som kus nad tým, ale dosť som sa ponáhľal, tak som to zbúchal cez dva selecty, ale určite sa to dá aj jedným...však? :)
//a, už som aj prišiel na odpoveď:

Kód: Vybrať všetko

SELECT ub.name from USER ua, USER ub WHERE ua.id = ub.sefId AND ua.id = xx
0

epto
Stály člen
Stály člen
Príspevky: 151
Dátum registrácie: 09 Nov 2012, 16:23
Bydlisko: Seňa

Re: Databáza - relácia 1:1

Príspevok od používateľa epto » 01 Apr 2021, 09:26

Trochu odbocim,

databazove systemy sme mali na skole, celkom ma to bavilo, teda az na profesorku a jej sposob vyucby...
Ale co sa chcem opytat:
Priklad - mate databazu ludi s roznymi udajmi o nich (vek, vyska, vaha, farba oci, vlasov, bydlisko...)
Zadanie bolo, vyhladat v tabulke rysavych muzov vo veku od 30 do 50 rokov, ktori vedia po anglicky, nie su z BA a su lavaci. Vysledok zotriedit podla ich vysky.
Odpoved bolo treba napisat do formulara na prvy krat. Otazka za 6 bodov a vyhodnocoval ju pocitac. Cize, ak dostal z vasho prikazu presne to, co ocakaval, mali ste 6 bodov. Ak mu vasa odpoved vyhodila nieco ine, bolo to za nula.
Tychto otazok bolo asi 6 co dava dokopy 36 bodov co je uz tretina z maxima. Samozrejme vyhodnotenie som mal vsetky za 0 pretoze vsade bola chybicka (OK, jednu odpoved som totalne domrvil). Profesorke som argumentoval s tym, ze vsak nikto to neda na prvy sup (okrem profikov) a ze postune by som ku vysledku dosiel, ak by som mal moznost zadavat prikazy postupne a pozerat, co mi databaza vypluje. Skoro sme sa pohadali ale nakoniec som jej len na papier pisal ako by som postupoval. Skoncilo to tak, ze ak by som za kazdy ten priklad dostal 4-5 bodov, zo skusky by som dostal B, no nechcela mi dat lepsie ako E.

Tak sa vas, profikov, chcem, opytat ze ak vytvarate request na data podla viacerych parametrov, ci to vzdy date na prvy krat bez chyby alebo sa ku zelanemu vysledku dopracujete postupne.
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6200
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Databáza - relácia 1:1

Príspevok od používateľa pocitujlasku » 01 Apr 2021, 10:41

epto: to mi pripomina pohovor u mimozemstana, tiez chceli, aby som pisal na papier.
v inej firme ma posadili za pocitac a povedali: tu je zadanie a ries. samozrejmostou bol pristup na internet. Neriesili, ci to pisem z hlavy, ale to, ako rychlo to viem vyriesit a ako efetivne - naco vymyslat koleso, ked v diskusnych forach nieco podobne uz riesili.

A odpoved na tvoju otazku: urcite nie. Nieco vies z hlavy, ak to casto pouzivas, ale ja strasne vela veci riesim postupne. Robim ciastkove selecty, aby som dostal co potrebujem a potom hladam moznosti, ako to co najefektivnejsie pospajat. Casto to skonci tak, ze je to nakoniec uplne iny select :)
Preto v normalnych firmach maju 3 prostredia. DEV/TEST/PROD -
na DEV sa hras, skusas, proste je to tvoj piesok. ked domrvis, nic sa nedeje, obnovis z test prostredia.
TEST - to uz je funkcny celok, kde to testuju testeri, a kde odchytavaju skor chyby, co sa tyka dat, alebo logiky
PROD - to je produkcia, ostra db
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6200
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Databáza - relácia 1:1

Príspevok od používateľa pocitujlasku » 01 Apr 2021, 10:50

Radus: najvyssi sef nemoze mat sefa ma sefa, lebo to by si zacyklil. on tam bude mat null.
Stromovu strukturu v db som riesil, bolo to sialenstvo, ale dal som to. a potom len stacilo naplnit tabulku, spustit procku a ta vratila krasne stromove data (vyse 100 udajov a bezne tak 3-4 vnorenia)

Kód: Vybrať všetko

SELECT ub.name
FROM USER ua
LEFT JOIN USER ub ON ua.sefId=ub.id
WHERE ua.id=xx
alebo subselect

Kód: Vybrať všetko

SELECT ub.name
FROM USER ub 
WHERE ub.id=(SELECT ua.sefId FROM USER ua WHERE ua.id=xx)
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: Databáza - relácia 1:1

Príspevok od používateľa dan21 » 01 Apr 2021, 13:09

Este pekna vec su kaskadne operacie :-)
0

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: Databáza - relácia 1:1

Príspevok od používateľa Radus » 01 Apr 2021, 13:33

@pocitujlasku: Nevedel som že FK môže mať hodnotu aj null. Ale áno, máš pravdu, keby som nato poštval rekurzívnu funkciu, tak by sa to zacyklilo, ale v mojom prípade ktorý som riešil, mohlo dôjsť aj k tomu že užívateľ bude mať priradený daný parameter aj sám k sebe - príklad ktorý som uviedol bol len fiktívny. Ale čo už, vyznáš sa, čo dodať, klobúk dole...
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6200
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Databáza - relácia 1:1

Príspevok od používateľa pocitujlasku » 01 Apr 2021, 13:58

to su roky praxe, nic ine. Navyse ma bavi vymyslat kadejake vychytavky. Na fk je super vec aj tie kaskady. zmazes zaznam v hlavnej tabulke, tak ti automaticky zmaze ten zaznam vo vsetkych, kde je ten dany fk :)
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Napísať odpoveď