Pouziti autoincrementu
Karel Zak
zakkr na zf.jcu.cz
Úterý Červen 17 12:45:56 CEST 2003
On Tue, Jun 17, 2003 at 12:11:17PM +0200, Ing. Pavel Janousek wrote:
> > -----Original Message-----
> > From: Honza Pazdziora [mailto:adelton na informatics.muni.cz]
> > No, mozna si zkuste projit ten thread, zacalo to tim, ze OP hledal
> > genericke reseni prenositelne mezi uplne vsim, ja jsem namital, ze
> > to neni trivialni, protoze nektere databaze proste autoincrement
>
> Ano a ja si myslim, ze odpoved pomoci JDBC 3.0. metody je
> uspokojive vyrazne vice nez triggery, kdy kazdy dodavatel ma svou
Jen neni-li to presun problemu z jednoho mene uspokojiveho standardu
(SQL) do jineho standardu (JDBC) :-)
> Otazkou ovsem je, zda-li to aplikace v tom "atomickem" kroku
> vubec potrebuje vedet... - myslim, ze 90% pripadu takovych neni...
> Ostatne, jak dostat tyto informace ci je aspon multiplatformove (mysleno
> ve smyslu SQL databazi) vyuzivat ma kolega Zak velmi bohate zkusenosti
> prave z Mape...
To nastesti resi Dan Horak :-)
> Pokusim se to tedy rici jinak - ve vice jak 90% pripadu je
> jedine vyuziti sekvenci k tomu, ze svazu dve a vice tabulek vazbou.
> Sekvence ci autoinkrement je vhodny prostredek, protoze nam zarucuje
> dostatecnou entropii v bezne pouzitych objemech - ovsem ta unikatnost -
> pozadavek primarniho klice - je velika pouze a jen zpravidla 32-bit uint
> => 2^32-1, coz zase neni az tak moc zaznamu...
long long
> Ja osobne mam take prirozeny odpor k vazani tabulek pres neco
> jineho nez int/serial, ale to z hlediska modelovani neni:
>
> a) vubec pravda
> b) vubec potreba
>
> V 90% vsech tabulek je primarnim klicem (pokud existuje) int,
> serial apod., ac nema coby udaj zadny vztah k tabulce ani vazbam... -
Tech 90% neni tak moc pravda. Co jsem videl vetsi DB tak to casto bylo
uplne neco jineho nez int. A casto proto, ze je efektivnejsi mit nekde
ve sloupci, ktery je cizim klicem nejakou smysluplnejsi informaci nez
cislo, ktere je nutne neustale prekladat na tu "smysluplnou informaci"
v tabulce kde je to pouzito jako PK.
Peknym prikladem je tabulka se seznamem jazyku. IMHO je blobost
pouzivat zde cislo kdyz mohu pouzit treba zkratku (EN/CZ/DE) a i v
dalsich vazbach bude bez pristupu do tabulky jazyku zrejme o jaky
jazyk jde.
> samozrejme, ze pres vazbovou tabulku je vhodne modelovat M:N vazby, ale
> rucim Vam, ze temer vsechny M:1 nebo 1:N vazby nemusime tvorit pomoci
> toho, co tady resime, ale proste jako primarni klic zvolime neco
> vhodnejsiho - nehlede k tomu, ze primarni klic muze byt slozeny a presto
> ho lze z hlediska modelovani vyuzivat pro vazani s jinymi entitami...
Nejsem si jist jak moc ciste by slozeny PK prosel pouckami o modelovani
databazi :-)
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
Další informace o konferenci Test