clipper.824bulaja,
**** new file ****
R:\IBMPC\DATABASE\*.*
----------------------
dbx132 arj 188705 dbMAX v1.32, utility za rad sa DBF datotekama (obj+hlp)
dbx132ex arj 271776 dbMAX v1.32, utility za rad sa DBF datotekama (exe)
dbMAX(tm) Version 1.32
Copyright (c) 1991-1993 David A. Kennedy.
All rights reserved.
INTRODUCTION
============
dbMAX is an xBASE utility that will allow complete multi-user access to
any xBASE databases and indexes. The program uses a CUA-type menu system
with Brief(R)-style hot keys and can browse databases in up to 250 moveable,
sizable windows. Almost every Clipper(R)/dBASE(R) command is available,
allowing dbMAX to replace the dBASE Assist/Control Center or Computer
Associates' DBU utility. dbMAX also has a partially open architecture,
allowing programmers to create their own menus and operate on dbMAX
internal data structures.
clipper.825milanv,
Iz ovog pitanja verovatno će delovati kao da sam upravo
pikirao s marsa :) al' ja propisno olupah glavom zid a i dalje
mi nije jasno kako da dođem do pojedinačnih fajlova sa
instalacionih disketa CLIPPER-a 5.1, konkretno GETSYS.PRG, kome
sam namerio izvesne ispravke.
Da podsetim, fajlovi su u meni nepoznatom .LIF obliku.
clipper.826bulaja,
-> #825, milanv│kako da dođem do pojedinačnih fajlova sa instalacionih disketa CLIPPER-a
│5.1, konkretno GETSYS.PRG, kome sam namerio izvesne ispravke.
│Da podsetim, fajlovi su u meni nepoznatom .LIF obliku.
└───
GetSys.prg se instalira u \clipper5\sample\sys\ zajedno sa ostalim
primerima, ako prilikom instalacije zadas da ti se kopiraju i primeri.
clipper.827nbatocanin,
-> #823, dr.grba> U umetku "Clipper 5.2" u poslednjim "Računarima" se
> pominje tzv. mađarska notacija. Potpuno je jasno šta ona
> znači i čemu služi.
Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije
(Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972.
Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip
promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj.
Mislim da je članak odličan i rado bi ga video prevedenog u R.
> I jedna stvar u kojoj želim da izrazim svoje neslaganje, a
> to je terminološki momenat pojma "relaciona baza".
> Ali se ne slažem sa uravnilovkom tabela <=> relacija u
> kontekstu pojma "relaciona baza podataka".
C.J. Date: Database Systems - "The reasons such systems are called
'relational' is because the term 'relation' is essentially just a
mathematical term for a table. For most practical purposes, indeed,
the terms 'relation' and 'table' can be taken as synonymous."
> Nenade, nadam se da te ne vređa ovo što napadam ovaj deo
> tvog (inače odličnog) umetka.
Taman posla, već sam mislio da te teorijske delove svi preskaču ;)
clipper.829ndragan,
-> #766, bulaja/ fn_isNet() provides a simple way to determine if the user
/ running your program is logged in. if fn_isNet() == 0,
Da ne bude samo fn_isNovel()? Imam nezgodno iskustvo sa sličnim
funkcijama, koje prepoznaju neke mreže, a neke ne.
U Foksu, sys(0) treba da da ime čvora/stanice na kome se nalazite,
propraćeno jednobajtnim id brojem. To radi pod RPTI mrežom bez problema.
Ista funkcija pod Novelom daje "# 0", tj. "nisi u mreži". FoksPro,
inače, ume da sarađuje sa Novelovim spulerom, tj ima naredbu tipa Set
Print To Spooler <ime> ili tako nešto.
Pretpostavljam da se ta i slične funkcije oslanjaju na neke službene
adrese na koji mreže ostavljaju neke svoje oznake dok rade; stvar je
uveliko problematična zbog poznate "standardnosti" DOSa. Nema garancije
da postoji bajt u onih 640 K koji sve mreže koriste, pa još na isti
način. žak sam spremniji da poverujem da postoje značajne razlike i među
verzijama iste mreže.
Bue_ Ndragan
clipper.830ndragan,
-> #782, bulaja/ SIxRDD drajvera i MachSIx query optimizera. Blizi se dan kada ces i
/ ti poceti da razmisljas o prelasku sa FoxPro-a na Clipper :).
Da sam imao vremena da naučim C, možda. Previše sam razmažen
interpreterskom okolinom. Gooomilu stvari uradim iz komandnog prozora.
Kad bih za to sve morao da pišem rutine, pa da ih kompajliram, život bi
mi bio mnogo kraći - dok sam radio u (kobolu i u) petlji editor->
kompajler-> linker-> run, za svako linkovanje duže od minuta palio sam
cigaru.
Sve što možete da uradite na računaru, a traje preko deset sekundi od
editovanja do testiranja, škodi zdravlju :>
Btw, Kliper to nema u dućanu, to se dokupljuje na buvljaku pa se
instalira pa dojavljuje linkeru pa je često i kompatibilno jedno s
drugim. Foks sve to ima u startu i radi odmah. Dakle, nismo iz iste
ulice (nisam ni ja iz iste ulice, preselio sam se :)
Bue_ Ndragan
clipper.831ndragan,
-> #784, i.a.n./ Za brzinu Foxove SQL SELECT naredbe više je zaslužan ugrađeni
/ optimizator nego .CDX indeksi. Ako se tabele pootvaraju klasičnim
A optimizator upravo najbolje voli cedeiksove. Baška što dobro odabranim
tegovima možeš da ubrzaš mnoge stvari.
Btw, setih se da priupitam kliperaše da li cdx drajver ima isti bugi ko
u foksu: indeksirajte jednu datoteku pet ili deset puta uzastopce po
istom tegu, ne brišući već postojeći istovetan teg. Ako to uradite iz
Foksa, .cdx će nenormalno da raste. Zato smo u rutine za indeksiranje
ubacili da se generiše jedno Delete Tag All pre samog indeksiranja.
Nije neki bag, baš i ne pravi neku štetu, osim što malo pojede diska dok
ga ne primetite. Kako se ponaša Kliper?
Bue_ Ndragan
clipper.828ndragan,
-> #785, i.a.n./ ali ne vidim razlog da se forsira zarez kao decimalni separator, dosad
/ nisam sreo ama baš nikog kome bi decimalna tačka smetala.
Ne vidim ni ja - čak sam celu ovu pantljičaru od niza poruka posvetio
prebrojavanju problema koje to stvara.
Kad su se pojavili šifonjeri, kružila je priča da će računari naterati
ceo svet da standardizuje mere, da će se uvesti SI itd. Jedino su
Englezi napravili decimalnu lovu, a sve ostalo je ostalo na "svaka vaška
obaška". Obično ispisivanje datuma, po kalendaru koji je svetski priznat
više vekova, ima desetak varijanti. Ameri i Englezi uporno forsiraju
colove, unce, jarde (i milijarde :), nemački predlog o podeli pravog
ugla na sto gradi je ugrađen u nešto kalkulatora i ni u jedan programski
jezik, i najzad, Evropa uporno koristi decimalni zarez i tačku za
hiljade, osim na računarima koji su američka izmišljotina i rade upravo
obratno.
Nije problem odštampati broj sa decimalnim zarezom, to se uveliko radi,
ali za unos je to maksimalno bezvezna tehnika kad je zarez tako daleko.
Mada, kad se setim PAKA terminala, imali su i zarez (iznad entera, a
plus je bio upola manji).
Bue_ Ndragan
clipper.832saks,
-> #831, ndragan Pazi ovako: U uputstvu za SixDrivers (imam verziju 1.0), lepo pise
da se reindeksiranjem taga isti ne brise, vec se nadopisuje na
postojeci CDX. Ako hoces da CDX ne raste, nemoj reaindeksirati ni
tagove pojedinacno, ni CDX u celini, vec ih kreiraj. Sledi => Porast
CDX-a nije bug vec osobina. Sory.
Sasa
clipper.833i.a.n.,
-> #823, dr.grba>> Slažem se sa matematičkim pojmom relacije, kao i sa prikladnošću da
>> podaci budu prezentirani kao tabela. Ali se ne slažem sa uravnilovkom
>> tabela <=> relacija u kontekstu pojma "relaciona baza podataka".
Na ovo je nbatocanin već odgovorio...
>> Naime, naziv "relaciona baza" ne potiče zbog te mogućnosti prezentacije u
>> tabeli, već zbog mogućnosti da se uspostavi relacija između dve ili više
>> baza postedstvom zajedničkog podatka - ključa relacije. Da ne zalazimo u
>> implementaciju, mislim na "set relation...".
... a ovo je bilo i moje uverenje dok me C.J. Date nije prosvetlio. ;)
Posle toga sam počeo da sumnjam da li Fox ili Clipper uopšte zaslužuju
naziv "relacioni sistemi". Evo šta Date kaže (svi navodi su iz "An
Introduction to Database Systems", Vol. I):
Data independence can most easily be understood by first
considering its opposite. [...] the way in which the data is
organized in secondary storage and the technique for
accessing it are both dictated by the requirements of the
application under consideration, and moreover _knowledge of
that data organization and that access technique is built
into the application logic and code._
Example: [...] Then the (data-dependent) application in
question will typically be aware of the fact that the index
exists, and aware also of the file sequence as defined by
that index, and the internal structure of the application
will be built around that knowledge.
USE tabela INDEX ind1, ind2... Upravo to. A dva od Coddovih dvanaest
pravila (o tome koji se sistem može smatrati potpuno relacionim)
zahtevaju "physical" i "logical data independence". Ima tu još zahteva
po kojima Fox i Clipper definitivno padaju. Dobro, da vidimo onda tzv.
"early 1980s definition", po kojoj je sistem minimalno relacioni ako
podržava sledeće:
- Relational databases (i.e., databases that are perceived
by the user as tables, and nothing but tables);
- The operations restrict, project, and (natural) join,
without requiring any predefinition of physical access paths
to support these operations.
Pa sad. Fox ovde prolazi kroz iglene uši, za Clipper ne bih bio
siguran, zbog zahteva #2. Još jedan sistem koji zadovoljava ove
zahteve je Paradox, koji ima i neke zgodne dodatne operacije, npr.
"outer join", za šta se na Foxu treba mučiti sa UNION.
Sve u svemu, xBase sistemi još i najviše liče na ono što Date naziva
"inverted list systems" (Dodatak A). A tu se nalazi i ohrabrujuća
tvrdnja: "Many relational systems -- though not all -- can be thought
of as inverted list systems at the internal (i.e. physical) level".
Što znači da se možemo nadati da xBase sistemi postanu pravi relacioni
-- kad malo porastu. :)
clipper.834djelovic,
-> #827, nbatocanin> Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije
> (Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972.
> Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip
> promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj.
> Mislim da je članak odličan i rado bi ga video prevedenog u R.
Inace se ova notacija najvise koristi u C programima za Windowse da bi se
odrzala jaka tipizacija podataka. U modernijim jezicima za tako nesto nema
potrebe jer o tipovima podataka brine kompajler - ako pokusas da pozoves
funkciju sa argumentima pogresnog tipa, on ti javi gresku.
clipper.835petrovics,
-> #823, dr.grba>> Naime, naziv "relaciona baza" ne potice zbog te mogucnosti prezentacije u
>> tabeli, vec zbog mogucnosti da se uspostavi relacija izmedu dve ili vise
>> baza postedstvom zajednickog podatka - kljuca relacije. Da ne zalazimo u
>> implementaciju, mislim na "set relation...".
Ja pak delim misljenje Nenada Batocanina :).
Smatram da je njegova interpretacija termina "relacione baze
podataka" ispravna i da naziv bas dolazi od toga sto su podaci
organizovani u tabelama (relacijama) izmedju kojih je moguce
uspostavljati veze (ono sto neki Clipper-asi nazivaju relacijama
;). U Clipperu, kao relacionoj bazi podataka, relacija je DBF
fajl a SET RELATION TO veza izmedju relacija. Ovakva
terminologija je saglasna i sa Oracle-om koji je jedan tipican
predstavnik relacione baze podataka.
Inace na ovu temu se svojevremeno u SETNetu vodila rasprava koja
nije dala rezultata. Svi su ostali na svojim stanovistima. Zato
bih zamolio nekog ko je dovoljno kompetentan ili jos bolje ima
adekvatnu literaturu da objasni pojam *relaciona baza podataka*
jednom za svagda ;).
Inace ova diskusija na SETNetu je vodjena i oko toga da li je
izraz "baza podataka" ili samo "baza" adekvatan za .DBF
datoteku ? Ja mislim da nije a vi?
clipper.836ndragan,
-> #813, d.petrovic/ Kakve veze sad zatvaranje ima sa UPS-ovima? Pa svi se slažemo da, ako
/ ne zatvaraš, koristiš redovno DBCommit().
Hm... jedino čemu bih verovao je da taj DbCommit() uredno forsira DOS da
upiše sve i u FAT i u direktorij (mislim na dužinu fajla, alocirane
klastere). Uostalom, pokušaj da posle svakog dodatog sloga u bazi pratiš
njenu dužinu onako kako piše u direktoriju. Ako je ne povećava uredno,
onda ipak ima opasnosti.
Bue_ Ndragan
clipper.837ndragan,
-> #808, bcetina/ Na primer to kod foxa radi, normalno.
Foks iznutra radi do 15 značajnih cifara, bar toliko pristaje da upiše u
.dbf, međutim otkako me inflacija naterala da pravim izveštaje sa 18 i
20 cifara (bez decimala), primećujem da ih sabira tačno. Zblanut sam.
Btw, i select 000000000000000+sum(iznos) as iznos from... itd, daje bazu
širu od one koja se može stvoriti redovnim Create ili Create Table, i u
njoj iznosi tačno sabrani na više od 15 cifara.
Sad ili su na nekim mestima odustali od IEEE formata brojeva, ili foks
ipak podržava više cifara, jedino se pravi blesav tamo gde treba da
ostane kompatibilan sa dibejzom?
Bue_ Ndragan
clipper.838bestbp,
Sta je najbolje uraditi sa bazama ukoliko se radi na racunarima na kojima su
cesti ispadi struje ? Naime , program je kasa za PP pa bi bilo pozeljno da se
max jedan racun izgubi u slucaju nestanka struje . Da li bi najbolje bilo da se
baze otvaraju samo pri upisu ili neko ima bolju ideju.
hvala
GM
clipper.839dragisha,
-> #827, nbatocanin-> Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije
-> (Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972.
-> Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip
-> promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj.
-> Mislim da je članak odličan i rado bi ga video prevedenog u R.
I tip radi u Microsoft-u i šef je ili tako nešto tima za Windows, i
notacija je napravljena prvenstveno za potrebe tog projekta (što se vidi u
svakoj liniji Windows.H:).
Bilo bi lijepo da neko barem dovuče ASCII formu članka, pretpostavljam da
je ima na bix::byte91.
--
[Postscript,..Prescript,..what's the difference?]
clipper.840i.a.n.,
-> #835, petrovics>> Inace ova diskusija na SETNetu je vodjena i oko toga da li je
>> izraz "baza podataka" ili samo "baza" adekvatan za .DBF
>> datoteku ? Ja mislim da nije a vi?
Ditto. Odgovarajući izraz bi bio "tabela".
clipper.841dr.grba,
-> #827, nbatocanin>> Mislim da je članak odličan i rado bi ga video prevedenog u R.
I ja.
>> > Ali se ne slažem sa uravnilovkom tabela <=> relacija u
>> > kontekstu pojma "relaciona baza podataka".
>>
>> C.J. Date: Database Systems - "The reasons such systems are called
>> 'relational' is because the term 'relation' is essentially just a
>> mathematical term for a table. For most practical purposes, indeed,
>> the terms 'relation' and 'table' can be taken as synonymous."
No comment. E, šta da se radi, evo 16.589-og primera neusaglašenosti
referentne literature. Organizaciju podataka sam slušao kod Radmila
Simića na Višoj informatičkoj, i neke stvari koje sam čuo od njega mi
ostadoše u glavi, pogotovo kada je u pitanju princip projektovanja baza.
Ne bi me čudilo ni da naletim na neko n-to objašenjenje, sasvim
komplementarno svim ostalim koje sam do sada čuo. Ovo me priseti na
predavanja na PMF-u, gde nema šanse da čuješ dva predavača mat. analize
da pričaju istu priču...
>> Taman posla, već sam mislio da te teorijske delove svi preskaču ;)
Jes', pa posle "Kako ovo?"... (: Tvoje tekstove čitam veoma pažljivo,
na sopstvenu korist i zadovoljstvo. Već ti rekoh da bih voleo da pročitam
tvoju knjigu u kojoj se baviš projektovanjem programa u Clipperu.
Kako ono beše? A, da, SetBlink(.F.)... (:
clipper.842dr.grba,
-> #833, i.a.n.Vrlo zanimljiv prilog!
>> USE tabela INDEX ind1, ind2... Upravo to. A dva od Coddovih
>> dvanaest pravila (o tome koji se sistem može smatrati potpuno
>> relacionim) zahtevaju "physical" i "logical data independence"....
Može li svih dvanaest, ako nije zametno da prepišeš?
I uostalom, molio bih par reči i bližu referencu na knjigu koju
pomenuste nbatocanin i ti.
clipper.843dr.grba,
-> #835, petrovics>> Inace na ovu temu se svojevremeno u SETNetu vodila rasprava koja
>> nije dala rezultata. Svi su ostali na svojim stanovistima. Zato
Bio ja u pravu ili ne, drago mi je da je ono moje pitanje Nenadu
pokrenulo ovu raspravu, jer bi trebalo da bude svima na korist.
Jer sam siguran: kada bismo bolje razumeli teorijske koncepte,
u praksi bi se mogli videti bolji rezultati.
A ja rekoh da sam spreman da korigujem svoje mišljenje uz valjanu
argumentaciju. Prvi argumenti su već stigli i ja sam veoma raspoložen
da ih proučim.
Hvala Bogu, najzad konstruktivna rasprava na Sezamu!
>> Inace ova diskusija na SETNetu je vodjena i oko toga da li je
>> izraz "baza podataka" ili samo "baza" adekvatan za .DBF
>> datoteku ? Ja mislim da nije a vi?
Za mnoge je XXX.EXE program. Za mene nije. To je za mene datoteka u kojoj
se nalazi kod nekog programa, koji se učitava u memoriju blablabla...
E, pa šta je YYY.DBF? Baza? Datoteka čiji se sadržaj može interpretirati
kao baza podataka u dBase i sličnim sistemima? Skup formatiranih podataka
u ASCII obliku? ________________? (dopisati po želji...)
Ovde smo tek kod pojma datoteke, pazite. Još nismo došli do pojma baze
ili baze podataka. Tu bi rasprava mogla da ide u nedogled...
To su mutne vode, te terminološke zavrzlame...
clipper.844bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
frank arj 242263 Frankie lib v2.1: Clip. mouseable User Interface Engine
frankg arj 86579 Frankie lib v2.1: Norton Guide
frankn arj 11015 Frankie lib v2.1: Newsletter
frankr arj 66109 Frankie lib v2.1: Reference (text)
What is the Frankie Library?
────────────────────────────
The Frankie library is a collection of Clipper 5.01/5.2 mouseable
and configurable user interfaces. Every UI is built upon an
engine that has default looks and functionality, but can be
reconfigured. The reconfiguration takes place by sending messages
to the engine via APIs.
The Engines
───────────
The following UI engines are available in version 2.0:
1. Database Browser
2. Get/Read Subsystem
3. Boxed Gets
4. Vertical Menu
5. Horizontal Menu
6. Dialog Box
7. Push Buttons
8. Radio Buttons
9. Scroll Bar
10. File Viewer
The APIs
────────
Each engine has its own set of API functions that serve to
configure the engine (a Config API), interrogate its state (an
Info API), or instruct it to do something (an Action API).
Specialized UI Fucntions
────────────────────────
In addition to the generic engines, Frankie contains a number
of specialized UI functions:
1. Drives picklist
2. Directory picklist
3. Files picklist
4. Fields picklist
5. "Drive Not Ready" dialog box
6. "Printer Not Ready" dialog box
7. "Which Drive?" dialog box
9. "Which Floppy?" dialog box
10. Switch toggler dialog box
11. Database browser scroll bars
12. Horizontal and vertical push buttons
13. A Read of one Get (two variants)
Miscellaneous Functions
───────────────────────
Aside from the engine functions and their APIs, Frankie contains
a wide variety of miscellaneous and useful functions. These,
however, are primarily for the purpose of supporting the Frankie
engines. They are not intended to serve as a full repertoire of
Clipper functions. Frankie is primarily a UI engines library.
clipper.845gari,
Da li bi neko znao da mi objasni zasto 1. primer radi,
a drugi radi nekoliko desetina puta u petlji X pa onda
odjednom izleti sa sledecom porukom:
Error BASE/1003 Variable does not exist: T_DATUM
Razumem ja da on izleti prvi put kad udje u petlju
zbog koriscenja LOCAL varijabli u makrou, ALI
da to uradi N-ti put (N=promenljiva velicina, koja
zavisi od raspolozenja mikroprocesora, vremenske
prognoze, gravitacije,... ;), E TO MI NIJE JASNO!
Evo saljem primere (ko voli probleme, ETO IH):
**********************
*** GLAVNI PROGRAM ***
**********************
do while ...neka petlja X
...
t_kol := Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum)
...
enddo
****************
*** PRIMER 1 *** OVO RADI ...
****************
FUNCTION Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum)
LOCAL t_kolicina:=0, t_uslov
if valtype(t_datum) == "D"
t_uslov:={|p1,p2|p1==SIF_RO .and. p2==DATUM .and. !eof()}
else
t_datum:=date()
t_uslov:={|p1,p2|p1==SIF_RO .and. !eof()}
endif
select POCETNO
seek t_objekat+t_sif_robe
if found()
t_kolicina+=KOLICINA
endif
select PRODAJA
set order to 2
seek t_objekat+t_sif_robe
do while eval(t_uslov,t_sif_robe,t_datum)
t_kolicina-=BOMBONA
skip
enddo
...
...
RETURN t_kolicina
****************
*** PRIMER 2 *** ... A OVO NE RADI UVEK !?
**************** ^^
FUNCTION Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum)
LOCAL t_xxx, t_yyy, t_zzz, t_kolicina:=0, t_uslov
if valtype(t_datum) == "D"
t_uslov:="t_sif_robe==SIF_RO .and. ;
t_datum>=DATUM .and. !eof()"
else
t_uslov:="t_sif_robe==SIF_RO .and. !eof()"
endif
select POCETNO
seek t_objekat+t_sif_robe
if found()
t_kolicina+=KOLICINA
endif
select PRODAJA
set order to 2
seek t_objekat+t_sif_robe
do while &t_uslov && <- OVDE GA IZBACI, A PRE
t_kolicina-=BOMBONA && TOGA PROSAO DESETAK PUTA
skip
enddo
...
...
RETURN t_kolicina
clipper.846ppekovic,
-> #835, petrovics>> organizovani u tabelama (relacijama) izmedju kojih je moguce
Tabela nije isto što i relacija. Tabela je skup pojavljivanja
jedne relacije. Tako, može postojati više tabela (skupova
pojavljivanja) jedne relacije.
Paya
clipper.847i.a.n.,
-> #842, dr.grba>> Može li svih dvanaest [Coddovih pravila], ako nije zametno da prepišeš?
1. The information rule
2. The guaranteed access rule
3. Systematic treatment of null values
4. Active online catalog based on the relational model
5. The comprehensive data sublanguage rule
6. The view updating rule
7. High-level insert, update, and delete
8. Physical data independence
9. Logical data independence
10. Integrity independence
11. Distribution independence
12. The nonsubversion rule
(1) je drugi način da se kaže da svi podaci u bazi treba da budu
predstavljeni na jedan jedini način, u vidu tabela. (2) zahteva da se
svakoj pojedinačnoj vrednosti unutar baze može pristupiti, što povlači
postojanje primarnog ključa za svaku relaciju, pošto se po relacionoj
teoriji do određenog sloga (n-torke) može doći jedino njegovim
korišćenjem.
(3) je po Dateovom mišjenju slaba tačka većine današnjih relacionih
sistema. žesto je potrebno da se u bazi nađu podaci tipa "nepoznat",
"ne postoji" itd. koji bi trebalo da budu a) predstavljeni vrednostima
različitim od svih ostalih mogućih vrednosti, i b) dosledno tretirani
od strane relacionog sistema. SQL rešenje (NULL vrednosti) je daleko
od potpunog.
(4) traži postojanje on-line kataloga sa podacima o bazama i tabelama
unutar njih. Katalogu treba da je omogućen pristup putem standardnog
upitnog jezika, naravno ako korisnik ima dovoljna ovlašćenja. (5)
znači da treba da postoji bar jedan relacioni jezik koji se može
koristiti za celokupan rad sa bazom: upite, ažuriranja, definiciju
novih tabela/baza, transakcioni rad, davanje prava pristupa i
postavljanje pravila integriteta. Dodatni zahtev je da se jezik
dostupan i interaktivno i u aplikacijama, bez znatne izmene sintakse u
bilo kom slučaju.
Po pravilu (6), sistem mora biti sposoban za ažuriranje svih pogleda
za koje teorija kaže da je ono moguće. I ovde stvari stoje klimavo, i
teorijski i praktično. (7) zahteva operacije INSERT, UPDATE i DELETE
koje ne bi bile ograničene na rad slog po slog, već sposobne da deluju
nad više slogova odjednom. (8) i (9) sam ranije spomenuo.
Prema (10), pravila integriteta moraju da se zadaju nezavisno od
aplikacija i da budu smeštena u katalogu. Takođe se mora omogućiti
njihova izmena bez uticaja na postojeće aplikacije. (11) se odnosi na
uvođenje distribuirane verzije sistema i kasniju preraspodelu podataka
u njemu: postojeće aplikacije i dalje treba da rade bez izmena.
Najzad, (12): ako sistem omogućava pristup podacima na niskom nivou,
pri čemu se ne misli na direktno brljanje po datotekama, već rad sa
pojedinačnim slogovima, onda se u takvom načinu rada ne sme dozvoliti
narušavanje postojećih pravila integriteta i prava pristupa.
>> I uostalom, molio bih par reči i bližu referencu na knjigu koju
>> pomenuste nbatocanin i ti.
C.J. Date: "An Introduction to Database Systems", Vol. I (5th ed.),
Addison-Wesley, Reading, MA, 1990.
Knjiga se smatra za standardni priručnik/udžbenik opšteg tipa. Neki
zameraju Dateu isključivost (relacioni model, i šlus!), ali Bože moj.
Lični utisak: pred ovim bi svi YU udžbenici organizacije podataka
trebalo da se posakrivaju u mišju rupu. Toliko je jasno i dobro
napisano da ne shvatiš da ti u stvari nemilosrdno trpa u glavu hrpu
činjenica i teorije do trenutka kad se malo osvrneš.
Praktičan rezultat čitanja je, u najmanju ruku, ovaj: moje aplikacije
B.D. (Before Date :) su nastajale tako što bih pet dana pisao program,
a posle ga tri meseca doterivao. A.D. postupak je dve nedelje
projektovanja, istih onih pet dana pisanja, nedelju-dve doterivanja i
to *radi*. Da ne spominjem koliko su sva kasnija dodavanja i menjanja
lakša.
clipper.848djelovic,
-> #847, i.a.n.> (2) zahteva da se svakoj pojedinačnoj vrednosti unutar baze može
> pristupiti, što povlači postojanje primarnog ključa za svaku relaciju,
> pošto se po relacionoj teoriji do određenog sloga (n-torke) može doći
> jedino njegovim korišćenjem.
Jel može šire objašnjenje zašto je primarni ključ neophodan? Još bolje,
ukoliko bi mogao da nađeš neki ilustrativan primer...
clipper.850petrovics,
-> #838, bestbp>> Sta je najbolje uraditi sa bazama ukoliko se radi na racunarima na kojima
>> su cesti ispadi struje ? Naime , program je kasa za PP pa bi bilo
>> pozeljno da se max jedan racun izgubi u slucaju nestanka struje . Da li
>> bi najbolje bilo da se baze otvaraju samo pri upisu ili neko ima bolju
>> ideju.
Smatram da je dovoljno samo da se posle svake izmene/dodavanja
sloga forsira upis na disk naredbom tipa COMMIT. Mislim da nije
od nekog sireg znacaja da li su u trenutku nasilnog prekida rada
programa datoteke bile zatvorene.
Ipak ne mogu sa sto posto sigurnosti ovo da tvrdim jer se
zasniva na mom iskustvu a to nije dovoljno da se izvede
generalni zakljucak.
clipper.849petrovics,
-> #843, dr.grba>> Bio ja u pravu ili ne, drago mi je da je ono moje pitanje Nenadu
>> pokrenulo ovu raspravu, jer bi trebalo da bude svima na korist.
Svaka konstruktivna rasprava je korisna :). Inace slazem se sa
tobom da na Sezamu bas i nema puno konstruktivnih rasprava :(.
>> Jer sam siguran: kada bismo bolje razumeli teorijske koncepte,
>> u praksi bi se mogli videti bolji rezultati.
Nista bez teorije :). Na zalost mnogi i ne haju za ovu vaznu
komponentu bavljenja racunarom. Da ne pominjem one sto misle da
su naucili da programiraju u trenutku kad su zapamtili sve
rezervisane reci nekog jezika...
Inace i ja sam za to da ovde cujem nesto pametno i konstruktivno o
relacionim bazama podataka.
clipper.851i.a.n.,
-> #848, djelovic>> Jel može šire objašnjenje zašto je primarni ključ neophodan? Još
>> bolje, ukoliko bi mogao da nađeš neki ilustrativan primer...
Teorija definiše telo relacije kao skup (n-torki), a u skupu nisu
mogući duplikati. Definicija primarnog (zapravo kandidatskog) ključa
zahteva da obeležje koje ga čini zadovoljava uslov da ni u jednom
trenutku ne postoje dve n-torke sa istom vrednošću tog obeležja. Ovo
znači da svaka relacija ima primarni ključ -- za razliku od tabele,
gde se može desiti da postoje istovetni slogovi, u kom slučaju tabela
više ne može da se smatra fizičkom predstavom relacije. Dopuštanje
duplikata u tabelama može da dovede do anomalija prilikom brisanja ili
ažuriranja, recimo.
Primer? Svakom primeru koga bih ovde mogao da navedem suđeno je da
deluje budalasto, ali ajde:
Ime Kompjuter
-----------------------------
Ivan 80386SX
Dejan 80386
Dejan 80386
Operacija
UPDATE oprema
SET Kompjuter = "80486"
WHERE Ime = "Dejan" AND Kompjuter = "80386";
bila bi logički uspešna samo ako oba Dejana dobijaju 486-icu. A šta
ako treba promeniti samo jednog? Morao bi da se uvede redosled (prvi i
drugi Dejan u tabeli), a relacije (opet zbog toga što su definisane
kao skupovi) nemaju uređenje.
clipper.852djelovic,
-> #851, i.a.n.> UPDATE oprema
> SET Kompjuter = "80486"
> WHERE Ime = "Dejan" AND Kompjuter = "80386";
>
> bila bi logički uspešna samo ako oba Dejana dobijaju 486-icu. A šta
> ako treba promeniti samo jednog?
S obzirom da ti ovde pričaš o velikim sistemima (SQL i sl.), sasvim sam
saglasan da svaka tabela mora da ima primaran indeks. Međutim, kod standardnih
aplikacija koje se danas vrte u 99% firmi korisnik slog koji se menja bira
interaktivno, kroz nekakvu vrstu tabele (mislim da se to na Clipperu zove
TBrowse?), tako da postojanje primarnog ključa koji ničemu ne služi a veštački
se kreira zaista ničemu ne služi (?). Kad treba - treba, al kad ne treba zašto
onda sistem da još dodatno opterećuje programera kreiranjem "veštačkog"
primarnog ključa kao što to radi Paradox Engine?
clipper.853nbatocanin,
-> #834, djelovic> U modernijim jezicima za tako nesto nema potrebe jer o
> tipovima podataka brine kompajler - ako pokusas da pozoves
> funkciju sa argumentima pogresnog tipa, on ti javi gresku.
Ne bi se baš složio, iz više razloga: prvi razlog je čitljivost
programa. Na primer, čitaš neki program, a ono u sredini modula od
5000 linija (ne, ljudi nisu savršeni => ne pišu savršene programe)
nađeš f(x). Da, prevodilac će javiti grešku ako X nije dobrog tipa,
ali tebi treba u trenutku čitanja da znaš tačan tip. E, a za to moraš
da trčiš na početak modula, ili da imaš editor sa dva prozora u svet
;) Nije ni malo bezveze što FORTRAN ima konvenciju sa prefiksom
promenljivih.
Mislim da je deklarisanje promenljivih u strogo tipiziranim jezicima
tehničko ograničenje koje će vrlo brzo (?) doći na red za
usavršavanje. Klasična deklaracija na početku bloka je čista usluga
koju programer pravi prevodiocu da bi ovaj lakše uradio posao. Mislim
da će se to bolje rešiti. Razmislite: zašto ne bi prevodilac na
osnovu primene određene promenljive sam provalio kog je tipa, a ako
baš ne može da ukapira, nek pita. Jedini razlog koji mi pada na pamet
je brzina rada, a to je već njegov problem ;)
clipper.854nbatocanin,
-> #841, dr.grba> Ne bi me čudilo ni da naletim na neko n-to objašenjenje,
> sasvim komplementarno svim ostalim koje sam do sada čuo.
Nikako ne bi smelo. O tome zašto se relacioni *model* zove tako, nema
nikakvog spora: zato što se realni objekti modeliraju relacijama. A
relacione baze podataka se zovu tako zato što koriste relacioni
model kao osnovu.
clipper.855nbatocanin,
-> #833, i.a.n.> Posle toga sam počeo da sumnjam da li Fox ili Clipper uopšte
> zaslužuju naziv "relacioni sistemi". Evo šta Date kaže (svi navodi
> su iz "An Introduction to Database Systems", Vol. I):
Da, ovde može uslediti jedna pošira rasprava o tome. Ono što je
sigurno to je da nijedan xBase jezik neće zadovoljiti sve uslove za
pravi relacioni sistem. Osnovni razlog za to je nivo obrade: u
relacionom sistemu se zahteva da taj nivo bude mnogo viši od onoga u
kome se radi sa xBase jezicima. E, sad tu ima par kvaka: prvo, ni
jedan sistem se ne pravi tako što sednu neki tipovi i kažu: "ajde da
napravimo jedan relacioni sistem" ili se bar to retko radi. Skoro
uvek se pravi alatka za određenu vrstu problema, a rezultat - gde
upadne. dBase je nastao kao mala baza podataka na računaru sa veoma
skromnim mogućnostima, pa nije bilo ni govora o tome da se
implementira mogućnost transparentnog rada sa relacijama. Clipper i
ostali su nastali kao naslednici dBase-a, pa nisu imali mnogo izbora.
Osim toga, ovi proizvodi i nisu bili namenjeni izradi "pravih" baza
podataka, već poslovnih aplikacija koje, doduše, skoro uvek rade sa
većim količinama podataka.
Druga stvar je shvatanje relacionog modela. To je jedno formalno
predstavljanje realnog sistema čija je osnova da se realni objekti i
njihove veze predstavljaju relacijama. Praktična *realizacija* tog
modela je drugi problem: može biti na ovom ili onom nivou. Ali, po
osnovnom principu svi xBase derivati spadaju u grupu relacionih
sistema. Mada, nije nemoguće neki drugi model (mrežni, na primer)
realizovati u xBase-u. Kao što rekoh, to je pitanje realizacije.
clipper.856nbatocanin,
-> #835, petrovics> Inace ova diskusija na SETNetu je vodjena i oko toga da li
> je izraz "baza podataka" ili samo "baza" adekvatan za .DBF
> datoteku ? Ja mislim da nije a vi?
Baza podataka ima više značenja. Osnovno značenje je otprilike
"organizovan skup podataka koji kontroliše sistem za upravljanje
bazom podataka". U širem značenju, baza uključuje i te podatke i
softver. To znači da DBF nije baza podataka. Međutim, iz ko zna kog
razloga se vrlo često sreće termin "baza" za DBF datoteku i kod nas i
u inostranstvu. Moja deviza je: važno je da se razumemo :)
clipper.857djelovic,
-> #853, nbatocanin> Ne bi se baš složio, iz više razloga: prvi razlog je čitljivost
> programa. Na primer, čitaš neki program, a ono u sredini modula od
> 5000 linija (ne, ljudi nisu savršeni => ne pišu savršene programe)
> nađeš f(x). Da, prevodilac će javiti grešku ako X nije dobrog tipa,
> ali tebi treba u trenutku čitanja da znaš tačan tip. E, a za to moraš
> da trčiš na početak modula, ili da imaš editor sa dva prozora u svet ;)
Mađarska notacija nastala je (ili se prvi put primenjivala u većem obimu)
za pisanje Windows programa u C-u. Kao takva ona je inžinjersko rešenje
(prljavo al' efikasno) za problem koji ti navodiš, a nikako nešto čemu treba
težiti. Dalje, i kao rešenje za čitljivost programa Mađarska notacija je
uveliko zastarela. Ajmo redom:
1. "žitljivost programa". Danas skoro da ne postoji editor koji ne može da
prikaže više fajlova u raznim prozorima. U jedan prozor staviš tekst programa,
u drugi deklaracije, i problem je rešen. Štaviše, ukoliko koristiš programski
jezik koji ne podržava deklaracije funkcija (fuj!), uvek postoje programi koji
protrče kroz sors i povade ih, makar samo za dokumentaciju. Danas je ta
mogućnost ugrađena i direktno u većinu C kompajlera.
2. Opet "čitljivost programa". Dodavanje dva slova na početak imena
promenljive direktno krši pravilo da "ime promenljive ne sme da bude kriptično
i treba jednostavno i jasno da govori čemu ona služi". (Iz ovog pravila se
naravno izuzimaju promenljive 'i' i 'j' koje svi koristimo kao brojače :).)
3. Dobar dizajn je zasnovan na podacima, i to je jedan od razloga zašto se
programski jezici okreću ka objektnoj orijentaciji. Ako me sećanje dobro služi,
i ti misliš da je OOP dobra stvar. Kako onda misliš da koristiš Mađarsku
notaciju kada nemaš pet osnovnih tipova podataka nego pet hiljada tipova
podataka, tj. sve klase koje si do sada napravio?
> Nije ni malo bezveze što FORTRAN ima konvenciju sa prefiksom
> promenljivih.
Od popularnih jezika samo Fortran i Bejzik koriste takve konvencije. Nije
slučajno da su oba ta jezika nastala u predhistojiji :) računarstva.
> Mislim da je deklarisanje promenljivih u strogo tipiziranim jezicima
> tehničko ograničenje koje će vrlo brzo (?) doći na red za
> usavršavanje. Klasična deklaracija na početku bloka je čista usluga
> koju programer pravi prevodiocu da bi ovaj lakše uradio posao. Mislim
> da će se to bolje rešiti. Razmislite: zašto ne bi prevodilac na
> osnovu primene određene promenljive sam provalio kog je tipa, a ako
> baš ne može da ukapira, nek pita. Jedini razlog koji mi pada na pamet
> je brzina rada, a to je već njegov problem ;)
Dva su razloga za deklaraciju promenjljivih:
Klasičan: Deklaracija promenljivih te rešava muke kada negde u programu
pogrešno napišeš promenljivu a to ne primetiš. Recimo, imaš promneljivu
"brojacLjudi" a na jednom mestu u programu napišeš "broavLjudi". Kompajler ti
ne javlja grešku, a program ne radi. Takođe, ukoliko se promenljive ne
deklarišu postoji zabuna kada globalna i lokalna promenljiva treba da imaju
isto ime, što sa količinom podataka u današnjim programima nije nimalo redak
slučaj.
OOP: Naslednik neke klase ponaša se isto kao i ona sama, tako da kompajler
nema načina da sazna na osnovu primene promenljive da li se radi o promelnjivoj
tipa X, ili nekog naslednika klase X.
P.S.
> ne, ljudi nisu savršeni => ne pišu savršene programe
Pokušavajući da napišem savršen C++ program često se setim metode William
J. Buckleya kako naslikati savršenu sliku: "Postanite vi savršeni i onda
slikajte prirodno."
clipper.858i.a.n.,
-> #852, djelovic>> S obzirom da ti ovde pričaš o velikim sistemima (SQL i sl.), sasvim
>> sam saglasan da svaka tabela mora da ima primaran indeks.
Izgleda da sam bio nedovoljno precizan -- nisam naglasio da u
teorijskom smislu, u kome ga spominjem, postojanje primarnog ključa
ne povlači postojanje *indeksa* definisanog po njemu. Indeksi su
neophodni kod implementacije relacione baze, u teoriji nisu.
Znači, u onome što sam pisao: "mora postojati primarni ključ" = "ne
sme biti duplikata u tabelama". A Paradoxovske zavrzlame sa indeksima
su i meni gazile po nervima. ;)
clipper.862dr.grba,
-> #855, nbatocanin>> Da, ovde može uslediti jedna pošira rasprava o tome. Ono što je
>> sigurno to je da nijedan xBase jezik neće zadovoljiti sve uslove za
>> pravi relacioni sistem. Osnovni razlog za to je nivo obrade...
>> ...
>> njihove veze predstavljaju relacijama. Praktična *realizacija* tog
>> modela je drugi problem: može biti na ovom ili onom nivou. Ali, po
>> osnovnom principu svi xBase derivati spadaju u grupu relacionih
>> sistema...
Ovaj momenat pomalo liči na raspravu o sistemima koji (ne) zadovoljavaju
atribut "objektni". Izgleda da su kompromis i popustljivost u principima
projektovanja sistema postali sasvim uobičajena stvar. Na sreću ili na
žalost...
clipper.861dr.grba,
-> #853, nbatocanin>> usavršavanje. Klasična deklaracija na početku bloka je čista usluga
>> koju programer pravi prevodiocu...
...i sebi.
clipper.860dr.grba,
-> #852, djelovic>> saglasan da svaka tabela mora da ima primaran indeks. Međutim, kod
>> standardnih aplikacija koje se danas vrte u 99% firmi korisnik slog
>> koji se menja bira interaktivno, kroz nekakvu vrstu tabele (mislim
>> da se to na Clipperu zove TBrowse?), tako da postojanje primarnog
>> ključa koji ničemu ne služi a veštački se kreira zaista ničemu ne
>> služi (?). Kad treba - treba, al kad ne treba zašto
žovek pomenu PROJEKTOVANJE baza, a dobro projektovan sistem za rad
sa nekom bazom neće dozvoliti ad hoc brisanje - izmenu podataka,
bar ne legalno. Ne mali broj projektanata (barem dvojica koje poznajem)
vrše neko kriptovanje slogova baze ne zbog nekog straha od zloupotrebe,
nego da bi sprečili korisnika i njegove prijatelje da čeprkaju po bazi
na nepredviđen način.
clipper.859dr.grba,
-> #848, djelovic>> Jel može šire objašnjenje zašto je primarni ključ neophodan? Još
>> bolje, ukoliko bi mogao da nađeš neki ilustrativan primer...
Po ovom, ako dobro shvatam, taj kriterijum obezbeđuje ostale kriterijume.
To znači, na primer (teoretski i praktično): ne smem izbrisati podatke
o nekom komitentu jer imam živu neku analitičku karticu sa njegovim
podacima. Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke
dodatne mehanizme, obezbeđen je integritet podataka.
Osim toga, primarni ključ je jedinstven, bar bi trebalo da bude. Dakle,
ne mogu da imam dva komitenta 233-001.
clipper.863ndragan,
-> #832, saks/ tagove pojedinacno, ni CDX u celini, vec ih kreiraj. Sledi => Porast
/ CDX-a nije bug vec osobina. Sory.
Ružna osobina, preuzeta iz originala. Stvar postaje bezvezna, jer ako
imaš dva istovetna tega, održavaju se oba, a praktično se čita samo onaj
prvi. Očekivao sam da kraj toliko drugih pametnih stvari prepozna
ponovno indeksiranje po nečem što već postoji.
U mom generatoru programa za indeksiranje stoji da uvek prvo obriše .cdx
fajl, pa onda da pravi tegove ispočetka. Očetkivao sam da je siks malo
pametniji.
Bue_ Ndragan
clipper.864bestbp,
Eeee, ljudi, ovaj BLINKER 3.0 je bas... Izgleda da su se bas potrudili. Do sada
se odlicno pokazuje. Videcu dalje.
Usput , sto se tice Visual Objects-a, pravo ime bi trebalo da mu bude ASPEN.
pozdrav
clipper.865domana,
-> #842, dr.grba
Primetio sam da postujes teoriju (ja takodje) pa 'ajde da podelimo onda ovo
sto ja usput skupljam baveci se bazama...
Upozoravam da tekst nije u originalu vec je onako kako ga ja shvatam - pa
mozda negde i gresim...
******************************************************************************
12 ZLATNIH PRAVILA RELACIONE TEORIJE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(E.F.CODD 1970.)
! 1. PRIKAZ INFORMACIJE - iskljucivo na LOGICKOM NIVOU kao TABELARNI iznos
!!! 2. PRISTUP PODATKU - kombinacija imłna: tabele + kljuca + kolone
~~~~~~~~~~~~~~~~~~~~~~~~
! 3. OBRADA VRIJEDNOSTI kojih nema u relaciji ali se dobiju izvedeno
4. PROMJENLJIVI "ON LINE" KATALOG za tipove datoteke i programe
5. RAZVIJEN JEZIK unutar postojeceg relacionog modela
!! 6. AZURIRANJE SISTEMA nezavisno od konceptualne seme
7. AZURIRANJE TABELE - bilo po jednom ili vise podataka (skupova)
!! 8. FIZICKA NEZAVISNOST PODATAKA od logicke konstrukcije i koncepta
! 9. LOGICKA NEZAVISNOST PODATAKA kod promene konceptualne seme
10. NEZAVISNOST SIGURNOSTI na svim nivoima a ne u programima
11. NEZAVISNOST OD DISTRIBUCIJE PODATAKA i BAZE PODATAKA (lokacija)
12. NEMOGUCNOST SUBVERZIJE - INTEGRITET kod izmene i manipulacije podacima
------------------------------------------------------------------------------
12 ZLATNIH PRAVILA RELACIONE TEORIJE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(E.F.CODD PC Magazine, May 1988.)
...tabela:
1. Struktura baze podataka se na LOGICKOM nivou prestavlja TABELOM,
na fizickom je to bilo sta, recimo dvostruko ulancana lista...
...pristup:
2. Pristup SVAKOM podatku (u relacionoj bazi podataka) moguc/ostvariv je
preko kombinacije imłna: tabele/relacije + kljuca + kolone/atributa
znaci BEZ: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- unapred zadatih pristupnih puteva
- rekurzija
- iteracija
...relaciona nula:
3. Postoji SPECIFICNI INDIKATOR/podatak za predstavljanje NULA VREDNOSTI
BEZ OBZIRA NA TIP PODATKA (razlicit od bilo kog znaka normalno
upotrebljivog). Sistem podrzava/omogucava i sve MEDJUSOBNE operacije
izmedju nula vrednosti (tog specificnog indikatora) i svih ostalih
tipova podataka.
...katalog, meta podaci:
4. Postoji KATALOG/recnik tipova PODATAKa i PROGRAMa koji se LOGICKI
prestavlja na ISTI nacin kao i sama baza podataka tako da KORISNIK
moze da pristupi tim META podacima koristeci ISTI jezik koji koristi
i pri pristupu svarnim podacima u bazi podataka.
..jezik:
5. Sistem mora posedovati BAR 1 jezik koji podrzava:
1 - definiciju podataka/DATA
2 - definiciju pogleda/VIEW
3 - manipulaciju podacima - kroz programe i interaktivno
4 - definiciju pravila integriteta
5 - granice transakcija/BEGIN - COMMIT - ROLLBACK
6 - autorizaciju/sigurnost podataka
...azuriranje sistema, SAMOodrzavanje:
6. AZURIRANJE SISTEMA nezavisno od konceptualne seme - algoritmom koji
za svaki definisani pogled/VIEW u TRENUTKU NJEGOVOG DEFINISANJA
OD STRANE KORISNIKA moze da odredi da li se i koje operacije
odrzavanja MOGU da primene na taj pogled/VIEW i koji te operacije
SMESTA U KATALOG baze podataka (po zelji korisnika).
...azuriranje tabela (baznih):
7. I nad BAZNIM RELACIJAMA i nad POGLEDIMA mogu se izvrsavati ne samo
operacije pretrazivanja vec i operacije odrzavanja baze podataka
bilo po jednom ili po vise podataka (skupova).
...fizicka nezavisnost:
8. FIZICKA NEZAVISNOST PODATAKA od logicke konstrukcije i koncepta -
i aplikacioni program i interaktivna komunikacija korisnika
OSTAJU NEIZMENJENI kada/ako se promeni:
- fizicka organizacija baze
ili - fizicki metod pristupa, record-manager, Btrieve
...logicka nezavisnost:
9. LOGICKA NEZAVISNOST PODATAKA kod promene konceptualne seme -
i aplikacioni program i interaktivna komunikacija korisnika
OSTAJU NEPROMENJENI kada/ako se dese BILO KOJE promene u
strukturi baznih tabela OSIM promena samih podataka koje
bazne tabele cuvaju, recimo promena redosleda polja/atributa
(a mozda i naziva polja - ipak malo teze...)
...integriteti u katalogu:
10. PRAVILA INTEGRITETA se definisu u okviru/trenutku definisanja baze
podataka i cuvaju u katalogu podataka, ne implementiraju se kroz
aplikacioni program/kod.
...nezavisnost od distribucije:
11. Sve gore navedene karakteristike nezavise od DISTRIBUCIJE podataka
i baze podataka, lokacije/mesta FIZICKOG smestanja podataka...
...integritet promena podataka:
12. Ako relacioni sistem radi sa nekim jezikom trece generacije koji
u jednom trenutku obradjuje/menja samo jenu n-torku/zapis
kroz taj jezik se NE MOGU zaobici pravila integriteta zadana
preko samog relacionog jezika.
******************************************************************************
E, sad, moja razmisljanja:
Prvo, svi kazu a i meni se cini, da ZASTA NE POSTOJI relacini jezik koji
zadovoljva POTPUNO SVIH 12 principa; mozda im se najvise priblizi Magic...
Drugo,
relaciona teorija je samo jedna od ostalih - postoje i drugaciji nacini
SHVATANjA i PRISTUPA problematici OBRADE PODATAKA izmedju kojih narocito
svi isticu Chen-ov model OBJEKTI-VEZE. Model je zaista krajnje prirodno
elegantan jer, bar se meni cini, polazi od toga kako covek razmislja - a
razmislja na nivou OBJEKATA izmedju kojih pravi VEZE - i gotovo, nema vise,
to su TEMELjI svega...
Gde su onda aplikacije koje se oslanjaju na ostale pristupe podacima ?
Jednostavno ih nema jer teoreticari NISU prakticari - kud' bi oni da pored
toga sto smisle nov nacin GLEDANjA NA PODATKE jos se bakcu i sa jezikom
koji bi podrzao sve to...
Bar se meni cini da tako stvari stoje, mozda i gresim, ali znam da postoji
standardan postupak da se Chen-ov model KONKRETNOG RESENJA nekog problema
PREBACI na relacio fazon. Cini mi se da teoreticari modela samo teoretisu
a kada resenje treba pretociti u aplikaciju - 'ajmo na relacione dijalekte...
A Chen-ov model je tako divan... Gledas graficki prikaz i BUKVALNO citas
RECENICE kojima svi mi tako prirodno komuniciramo medjusobom...
Da ne budem pristrasan evo i spiska ostalih modela:
- MODEL OBJEKT-VEZE (MOV) (Chen 1976) //obrati paznju na godinu !
- BINARNI MODEL PODATAKA
- PROSIRENI RELACIONI MODEL (RT/M) (Codd 1979) //u praksi je stari model !
- SDM-IBM (IBM)
- MODEL PODATAKA SEMANTICKIH MREZA (Roussopoulos & Mylopoulos)
- SEMANTICKI MODEL PODATAKA (SDM) (Hammer & McLeod 1978)
- PETRI-jeve mreze (Reti di Petri)
- SEMANTIC ASSOCIATION MODEL (SAM) (Stanlay)
- D-GRAPH MODEL (Weber)
- PALMER (Palmer)
- DIAM II (Senko)
Spisak je prepisan iz: _"Sistem analiza i modeliranje podataka", Mile Pavlic_
i to samo iz grupe modela podataka III generacije a kazu postoji i IV...
KnjiziCA je zaista zgodan PRIRUCNIK za nuzdu, preporucujem je svim
NAIVNIM UMETNICIMA koji su problematici obrade podataka pristupali direktno
kroz neki aplikacioni jezik (recimo Clipper) - i sebe ubrajam u iste...
Mozda tek posle njenog DETALJNOG iscitavanja naivac shvati da jezik na kome
se pisu aplikacije nije sustina vec samo KRAJNjI CIN celog postupka, da su
jezici orijentisani ka obradi podataka samo "igle i makaze" ili mozda oko
20% cele problematike... Jednostavno, po meni, treba bar zavrsiti FON ili
BAR citati njihove udzbenike ili BAAAR koristiti CASE alate...
Da malo "elaboriram" one "igle i makaze". Svi mi koji zivimo od pisanja
poslovnih aplikacija smo ustvari ZANATLIJE u smislu da kada nekom zatreba
odelo ode kod krojaca da mu ga PO MERI sasije. Ne sporim da, kao sto
krojaci treba dobro da barataju iglama i makazama, treba i "kreatori"
aplikacija da detaljno vladaju finesama jezika kojim MODELIRAJU ali
majstor se ne postaje cistom vestinom baratanja alatima svog zanata - treba
imata i nesto vise, ono sto razlikuje krojaca od modnog kreatora; vestina
igala i makaza je samo TRECI obavezan PREduslov (drugi je poznavanje
teorije a prvi je ideja, po meni). NajLepse od cele price je cinjenica da je
sivenje/kreiranje odela LICNI CIN stvaranja NECEG NOVOG - dakle MOZE
nastati i umetnicko delo (gde ja odoh...).
Izvinjavam se na opsirnosti sve u nadi da cu biti konstruktivan...
Miki
P.S. Prosto su mi smesne one tirade od "diskusija"
koje se bave tackama i zarezima...
Naiva...
clipper.866ppekovic,
-> #865, domana>> 12 ZLATNIH PRAVILA RELACIONE TEORIJE
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> (E.F.CODD 1970.)
U knjigama sam najčešće čitao o kriterijumima za ocenu
relacionih SUBP-a (DBMS-a).
>> Prvo, svi kazu a i meni se cini, da ZASTA NE POSTOJI relacini jezik koji
>> zadovoljva POTPUNO SVIH 12 principa;
Tačno. Codd navodi da IBM-ov DB2 zadovoljava samo 7, a neki kao
Cullinet-ov IDMS/R ili CA Datacom, čak nijedan. Kritični su
uglavnom kriterijumi koji se odnose na pravila integriteta, zatim
održavanje pogleda, nula vrednosti, ditribucija, i dr.
>> relaciona teorija je samo jedna od ostalih - postoje i drugaciji nacini
>> SHVATANjA i PRISTUPA problematici OBRADE PODATAKA
Da, mrežni i hijerarhijski na primer, ali je relacioni model
najrasprostanjeniji i najviše SUBP-a (DBMS-a) podržavaju ovaj
model.
>> izmedju kojih narocito
>> svi isticu Chen-ov model OBJEKTI-VEZE. Model je zaista krajnje prirodno
>> elegantan jer, bar se meni cini, polazi od toga kako covek razmislja - a
>> razmislja na nivou OBJEKATA izmedju kojih pravi VEZE - i gotovo, nema vise,
>> to su TEMELjI svega...
Ne možeš porediti relacioni model i model objekti-veze jer
pripadaju različitim "generacijama" modela podataka. Takođe, niti
jedan do sada poznati DBMS ne podržava implementaciju modela
objekti-veze, već se ovaj model mora prevesti u neki model druge
generacije (relacioni, mrežni, hijerarhijski, ...) koji se zatim
implementiraju u neki od postojećih DBMS-a. Takođe, moguće je
model treće generacije prevesti i u modele prve generacije tj.
konvencionalne programske jezike.
Paya
P.S. Veliki deo podataka je iz skripte za vežbe i predavanja iz
predmeta "Baze podataka" autora prof. dr. Branislava Lazarevića.
clipper.867i.a.n.,
-> #859, dr.grba>> Po ovom, ako dobro shvatam, taj kriterijum obezbeđuje ostale
>> kriterijume. To znači, na primer (teoretski i praktično): ne
>> smem izbrisati podatke o nekom komitentu jer imam živu neku
>> analitičku karticu sa njegovim podacima.
Smeš, ako postoji mehanizam koji će obezbediti da budu obrisani i svi
podaci koji su vezani za njega. Drugo je pitanje da li je takvo
brisanje poželjno ili ne.
>> Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke
>> dodatne mehanizme, obezbeđen je integritet podataka.
U primeru koji navodiš, referencijalni integritet. Ideja je da se u
sistemskom katalogu čuvaju i pravila za njegovo očuvanje, na primer
DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta brisanje
samo ako nema vezanih podataka, drugi briše i njih.
clipper.868bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
ct_bli arj 3414 Automatically overlaying CA-Clipper Tools with Blinker
Ustedite 20 Kb root prostora:
--------------
Most of the networking functions of CA-Clipper Tools are dynamically
overlayable with Blinker. The easiest way of taking advantage of this
is to split the original CL.LIB library in two seperate libraries, one
of them being automatically overlayable and one of them still having
to be linked into the root. If you own a copy of a Microsoft library
manager (LIB.EXE) you can create this two libraries easily by using
the batch file SPLIT_CT.BAT.
...
The script file CA-CON.LNK for Blinker shows how to use the two
libraries to create the CA-Clipper Tools sample CA-CON.EXE. The load
size displayed by Blinker using CTROOT.LIB and CTOVL.LIB is 248 KB
compared to 267 KB when using CT.LIB without any overlaying features.
clipper.869nbatocanin,
-> #857, djelovic> Mađarska notacija nastala je (ili se prvi put primenjivala
> u većem obimu) za pisanje Windows programa u C-u.
"I (Simonyi) first used the Hungarian style in 1972. Since then,
programming teams at Xerox, Apple, and 3Com have used it, as well as
hundreds of Microsoft programmers in most Microsoft applications
(e.g. Multiplan, Word, and Excel) and also in large parts of
Microsoft Windows systems. Since its inception, many people have
contributed to the refinement of the Hungarian style"
> 1. "žitljivost programa". Danas skoro da ne postoji editor
> koji ne može da prikaže više fajlova u raznim prozorima. U
> jedan prozor staviš tekst programa, u drugi deklaracije, i
> problem je rešen. Štaviše, ukoliko koristiš programski
> jezik koji ne podržava deklaracije funkcija (fuj!), uvek
> postoje programi koji protrče kroz sors i povade ih, makar
> samo za dokumentaciju. Danas je ta mogućnost ugrađena i
> direktno u većinu C kompajlera.
Ovo je direktan argument meni u prilog. Ako uvek kada treba da
analiziram parče programa treba da otvaram dva prozora, pa da trčim
na deklaracije, pa search, ... Da ne govorim o ponovnom startovanju
kompajlera zbog generisanja deklaracija ;( Zar nije jednostavnije
potrebne podatke pročitati upravo na mestu na kome ti i trebaju? Ako
si radio na nekom iole većem (naročito timskom) projektu, prosto mi
je neverovatno da nisi došao do nekog sličnog rešenja. Sećam se da
smo uvek u timovima uvodili neke prefikse za svakog člana ekipe, pa
za funkcionalne celine i sl. u zajedničkim delovima koda kako bi se
lakše pratio i održavao program.
> 2. Opet "čitljivost programa". Dodavanje dva slova na početak imena
> promenljive direktno krši pravilo da "ime promenljive ne sme da bude
> kriptično i treba jednostavno i jasno da govori čemu ona služi"
Prvo, mađarska notacija ne podrazumeva navođenje prefiksa od samo dva
slova: može ih biti i manje ili više i odnose se na tip promenljive.
Dalje se mogu dodavati atributi promenljive (brojač, privremena,
save, ...) itd. U suštini, MN je *predlog* za oformljavanje celog
imena promenljive. E, sad, da je nečitko, ne slažem se: onaj ko čita
takav listing duže od 2 minuta navikne se da preskače prefiks pisan
malim slovima pri čitanju, a ako mu zatreba, tu je. Da su u "sredini"
programa potrebne dodatne informacije, dokazuje i pojava "kolor"
editora koji za sada boje oficijelne stvari kao što su rezervisane
reči i sl. Ne vidim prepreku da tako na neki način olakšam razumevanje
i mog dela ;)
> Kako onda misliš da koristiš Mađarsku notaciju kada nemaš pet
> osnovnih tipova podataka nego pet hiljada tipova podataka, tj. sve
> klase koje si do sada napravio?
Uopšte nije stvar u strogo formalnom pokrivanju svih klasa koje sam
kreirao. Dovoljno je za važnije napraviti mnemonik od 1-3 slova koji
označava objekte iz te klase pa da ih daleko lakše uočavam u
programima. Uostalom, dovoljno mi je samo "o" za "object", pa da bude
korak napred.
>> Nije ni malo bezveze što FORTRAN ima konvenciju sa
>> prefiksom promenljivih.
> Od popularnih jezika samo Fortran i Bejzik koriste takve
> konvencije. Nije slučajno da su oba ta jezika nastala u
> predhistojiji :) računarstva.
Nisam mislio da je ova osobina nešto što je i danas dobro, nego da se
još davno ukazala potreba za dodatnim informacijama o promenljivim.
> Recimo, imaš promneljivu "brojacLjudi" a na
> jednom mestu u programu napišeš "broavLjudi". Kompajler ti
> ne javlja grešku, a program ne radi.
Opet da ponovim: mislim da je deklarisanje promenljivih u strogo
tipiziranim jezicima tehničko ograničenje koje će vrlo brzo doći na
red za *usavršavanje*. Znači, ne izbacivanje, nego usavršavanje.
clipper.871saks,
-> #863, ndragan
>> Ruzna osobina, preuzeta iz originala. Stvar postaje bezvezna, jer
>> ako imas dva istovetna tega, odrzavaju se oba, a prakticno se cita
>> samo onaj prvi. Ocekivao sam da kraj toliko drugih pametnih stvari
>> prepozna ponovno indeksiranje po necem sto vec postoji.
Nije bas da istovremeno azurira i stari i novu verziju istog taga vec
se jednostavno stara verzija taga pretvara u nekoristan prostor.
Uostalom, evo navoda iz njihovog NG-a:
Q: Why does my .CDX keep growing when I re-create an existing tag?:
A: When an existing tag in a compound index (.CDX) is rebuilt using
INDEX ON ... TAG ... the space from the original tag is not
automatically reclaimed. Instead, the new tag is added to the end
of the file, causing the file size to increase.
You can use the REINDEX command to "pack" the index file. REINDEX
rebuilds each tag, eliminating any unused space in the file.
If you rebuild your indexes on a regular basis, it is recommended
that you either delete your .CDX files before rebuilding the tags
or use the REINDEX command to rebuild them instead.
Sasa
clipper.872petrovics,
-> #856, nbatocanin>> u inostranstvu. Moja deviza je: vazno je da se razumemo :)
clipper.873smoki,
Ako neko ima NULLHERC.OBJ iz paketa DGX neka me emajlira.
Miloš
ps. mislim da se tako nekako zove.
clipper.876dr.grba,
-> #864, bestbp>> Eeee, ljudi, ovaj BLINKER 3.0 je bas... Izgleda da su se bas
>> potrudili. Do sada se odlicno pokazuje. Videcu dalje.
Šta konkretno najviše voliš? Dual mode?
>> Usput , sto se tice Visual Objects-a, pravo ime bi trebalo da mu
>> bude ASPEN.
Radiš li sa njim? Imaš praktična iskustva? De, pričaj malo, zanima nas sve,
siguran sam.
clipper.875dr.grba,
-> #863, ndragan>> U mom generatoru programa za indeksiranje stoji da uvek prvo obriše
>> .cdx fajl, pa onda da pravi tegove ispočetka.
Nema šta, tako verovatno radi većina nas.
>> Očetkivao sam da je siks malo pametniji.
E, sad... Očetkaj malo bolje, možda nestanu fleke (:
clipper.874dr.grba,
-> #857, djelovic>> 2. Opet "čitljivost programa". Dodavanje dva slova na početak imena
>> promenljive direktno krši pravilo da "ime promenljive ne sme da
>> bude kriptično i treba jednostavno i jasno da govori čemu ona
>> služi". (Iz ovog pravila se naravno izuzimaju promenljive 'i' i 'j'
>> koje svi koristimo kao brojače :).)
Dodavanje dva slova po mnemoničkom principu ničim ne krši jednostavnost.
Sorry, ali nisam baš najbolje shvatio negiranje kvaliteta mađarske notacije.
BTW, da li ti programiraš u Clipperu? Znam da si zaražen sa C++++++++++.....
clipper.877bestbp,
-> #876, dr.grba ASPEN nije jos zvanicno izasao. U uputstvu za Clip-4-Win od Skelton Softwarea
stoji:
"Aspen is a code name for the Windows xBase product that CA are busy working
on. It will no doubt be marvellous, but is not expected to be shipping for 6-9
months. You can use Clip-4Win to gain invaluable expirience with Windows raedy
for Aspen."
Ovo je iz jula '93.
Imam problem kod burazera na racunaru u vezi novog Blinker-a. Naime, on ima
386DX/33/240ÚM i instalirao sam mu Funcky II i CA Tools zajedno sa novim
Blinker-om 3.0. Medjutim , pri linkovanju on javlja sledece:
BLINKER : 1115 : FUNCKY88.LIB(_malloc) : '__str_alloc' :unresolved external
Funcky88.lib je na putanji i navedena je u link fajlu, ali on ovo i dalje
javlja. U drugim programima (examples od FUNCKY-ja) javlja po vise gresaka.
So, ako neko zna ...
Usput, evo jedan koristan program koji kupi sve podatke iz baza, probajte...
pozdrav
clipvars.execlipper.878djelovic,
-> #874, dr.grba> Dodavanje dva slova po mnemoničkom principu ničim ne krši jednostavnost.
> Sorry, ali nisam baš najbolje shvatio negiranje kvaliteta mađarske
> notacije.
Uzmi neki srpski tekst i dodaj na kraj svake reči u superskriptu slovo koje
označava šta je ona (p za pridev, g za glagol itd.). To mnogo manje smeta nego
par slova na početku promenljive a ipak će te izluđivati.
Sve ovo pričam zato što sam svojevremeno i ja koristio Mađarsku Notaciju.
Kao rešenje za jedan tadašnji problem ona je bila odlična. Danas, ona je
potpuno nepotrebna i, po mom mišeljnju, čak i kontraproduktivna.
> BTW, da li ti programiraš u Clipperu? Znam da si zaražen sa C+++++++++...
Ne programiram u Clipperu. Smatram da je on dobar za pravljenje baza
podataka zbog svojih low-level rutina, ali da je kao jezik dosta loše
koncipiran. Doduše, vidim da njegovi autori polako izbacuju iz njega razne
"arhaizme" i kradu iz drugih jezika koliko god mogu, tako da će se verovatno
kroz par verzija razviti u moderan jezik. Videćemo...
clipper.879djelovic,
-> #869, nbatocanin> Zar nije lakše potrebne podatke pročitati upravo na mestu na kome ti i
> trebaju?
Jes' vala, oduvek sam se čudio onim budalama koje u knjige stavljaju
fusnote umesto da ih smeste direktno u tekst :).
> Ako si radio na nekom iole većem (naročito timskom) projektu, prosto mi
> je neverovatno da nisi došao do nekog sličnog rešenja. Sećam se da
> smo uvek u timovima uvodili neke prefikse za svakog člana ekipe, pa
> za funkcionalne celine i sl. u zajedničkim delovima koda kako bi se
> lakše pratio i održavao program.
Prefikse za svakog člana ekipe nikada nismo uvodili i ne znam čemu vodi
takva praksa? No, uvođenje prefiksa za različite module, ili u mom slučaju
hijerarhije, sasvim je normalna stvar. Na taj način se uvodi red u izvorni kod
i izbegava se "name space polution". No stavljanje prefiksa na imena funkcija
i/ili klasa sasvim je različita stvar od stavljanja prefiksa na promenljive.
> Opet da ponovim: mislim da je deklarisanje promenljivih u strogo
> tipiziranim jezicima tehničko ograničenje koje će vrlo brzo doći na
> red za *usavršavanje*. Znači, ne izbacivanje, nego usavršavanje.
Naravno. I kod i podaci se sve više kreću ka dinamičnim formama, pa će se i
mehanizmi deklaracije u skladu s time promeniti i usavršiti. S tim što sam ja
skeptik po pitanju tvog 'vrlo brzo' - ući ćemo mi u 21. vek pre nego što se to
dogodi.
clipper.880dr.grba,
-> #867, i.a.n.>> >> Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke
>> >> dodatne mehanizme, obezbeđen je integritet podataka.
>>
>> U primeru koji navodiš, referencijalni integritet. Ideja je da se u
>> sistemskom katalogu čuvaju i pravila za njegovo očuvanje, na primer
>> DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta brisanje
>> samo ako nema vezanih podataka, drugi briše i njih.
Da li je ovo implementirano u Oracle-u ili Progress-u? žini mi se vrlo
zanimljivim alatom. Šta kaže praksa?
clipper.881d.petrovic,
-> #821, arazumenicĂ> -> Sa Blinker-om sam se ponovo rodio :)). Nije sporo prevođenje,
Ă> samo me -> nervira kad počne novi modul da me zeza pa pre RMAKE-a
Ă> (.rmk je po -> defaultu na "/n /a /l" moram zbog ručnog "clipper
Ă> novi /n /a" -> (bez /l) da čekam puno linkovanje.
Ă>
Ă> Nisam razumeo šta si hteo da kažeš, pogotovo onim "ručnog".
Pre nego što otkucam "rmake bla" moram "clipper truc /n /a"
clipper.882i.a.n.,
-> #880, dr.grba>> >> DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta
>> >> brisanje samo ako nema vezanih podataka, drugi briše i njih.
>>
>> Da li je ovo implementirano u Oracle-u ili Progress-u? žini mi se
>> vrlo zanimljivim alatom. Šta kaže praksa?
Oracle 7 nešto od toga ima, ako je suditi po reklamama. DB2 u novoj
verziji takođe. Za ostale ne znam. Stvar je u praksi i te kako
potrebna, a implementacija je problem utoliko što treba omogućiti da
mehanizam dejstvuje za proizvoljan broj nivoa veza, a da se održe
razumne performanse celog sistema.
clipper.883ndragan,
-> #852, djelovic/ se kreira zaista ničemu ne služi (?). Kad treba - treba, al kad ne
/ treba zašto onda sistem da još dodatno opterećuje programera
/ kreiranjem "veštačkog"
Da, to i jeste praktična mana toga. Banalan primer su dani pred
denominaciju, gde se iznos ukucava iz pet puta po 9000000...000, jer
broj sa nulom više ne može da stane, a numerička polja su već proširena
do daske. Pojavljuju se parovi, trojke, ... entorke istovetnih slogova.
Izmišljanje unikatnog ključa je nepotrebno - stavke imaju broj naloga,
datum i ostalo što im treba. Kad malo bolje razmislim, većini prometnih
datoteka uopšte ne smeta što je najčešće nemoguće napraviti unikatni
ključ od postojećih polja.
S druge strane, u .dbf sistemima su baze istovremeno sekvencijalne,
relativne i indeksne, dok su raniji sistemi ove tipove držali strogo
odvojeno: ako ste imali pristup po broju sloga, niste imali indekse i
obratno (VAX RMS, naprimer). Unikatni ključ je bio bitan, da bi se slog
uopšte mogao locirati. Nije se mogao menjati, ni duplirati. Paradoks
prati tu logiku; .dbf sistemi to ne moraju, i čini mi se da je zahtev za
postojanjem unikatnog indeksa nastao dok je takav sistem bio jedini
moguć. Situacija sa ovako komfornim indeksima s kojima je moguće
bukvalno da se igramo, zahtevaće doradu teorije.
Bue_ Ndragan
clipper.884ndragan,
-> #879, djelovic/ Jes' vala, oduvek sam se čudio onim budalama koje u knjige stavljaju
/ fusnote umesto da ih smeste direktno u tekst :).
E, ozbiljno:
oduvek sam se čudio onim budalama koje u knjigama stavljaju fusnote
na kraj knjige umesto da ih smeste na dno strane
Bue_ Ndragan
clipper.885arazumenic,
-> #881, d.petrovic-> Pre nego što otkucam "rmake bla" moram "clipper truc /n /a"
Ne moraš. Pogledaj još jednom moju poruku 11.636 iz ove konferencije.
Saša
clipper.886bestbp,
Da li je moguce zadati neki format PICTURE, tako da se pri unosu u GET polje
ono ponasa kao kasa, dakle ako se unosi 90000, da on ima zarez - 90.000,00.
Bolje receno, da unos ide s desne na levu stranu, a ne sa leve na desnu.
pozdrav
clipper.887fric,
-> #878, djelovic> Uzmi neki srpski tekst i dodaj na kraj svake reči u
> superskriptu slovo koje označava šta je ona (p za pridev,
> g za glagol itd.). To mnogo manje smeta nego par slova na
> početku promenljive a ipak će te izluđivati.
Nije vic u izluđivanju, već da čitajući s leva u desno odmah
znaš o čemu se radi, a prvo veliko slovo u imenu na koje
se naiđe označava kraj prefiksa i početak samog imena.
> Kao rešenje za jedan tadašnji problem ona je bila odlična.
> Danas, ona je potpuno nepotrebna i, po mom mišeljnju, čak
> i kontraproduktivna.
U (glupom) kliperu nemaš tipove, ne moraš ništa da deklarišeš
na početku ... Kako drugačije, sem uz pomoć konvencija (u koje
spada i mađarska notacija), mogu sa kakvom-takvom preciznošću
znati na šta se odnosi neko _ime_ na koje naletim u sred
procedure: na logučku promenljivu, znakovnu, numeričku, niz,
polje u bazi (ne daj Bože), neku ko-zna-gde definisanu global
ili private ili parameter (sve gore od goreg) promenljivu ...
Idealna pravila za kliper bi po meni bila: strogo deklarisanje
svega, nema makroa, kompajliranje /w, uz sve to mađarska notacija
i još neke konvencije (o imenima globalnih promenljivih i o
imenima polja u bazama), i sve treba da bude ok (valjda:).
Radio sam nekad u Moduli 2 (timski rad, veliki projekat) i
zavoleo njenu _strogu_ tipiziranost, case-sensitive & unlimited
(almost) length imena (procedura, modula, promenljivih), itd.
Doduše, bilo je ponekad kilavo (bez pomoći pametnog, 'uradi
umesto mene' editora) zaroniti u duboko ugnježdene .def fajlove
da bi se stiglo do pra-definicije nekog tipa podataka da bi se
se razjasnila njegova _prava_ suština. Lepa vremena to behu,
kad me nije mogao s*ebati neki variable-not-found error.
clipper.889nbatocanin,
-> #879, djelovic> Prefikse za svakog člana ekipe nikada nismo uvodili i ne
> znam čemu vodi takva praksa?
Da, zaista nije neko rešenje, ali to je bio projekat od nekoliko
godina na kome je radilo kuso i repato. Skoro sve procedure su bile
PUBLIC, pa ajde ti izaberi neko ime koje neko već nije upotrebio ;) A
tek da u *tom* trenutku ne piše f-ju sa istim nazivom.
clipper.891nbatocanin,
-> #873, smoki> Ako neko ima NULLHERC.OBJ iz paketa DGX neka me emajlira.
> Miloš
Misliš li na NULEXHRC.OBJ iz dGE?
clipper.890nbatocanin,
-> #876, dr.grba>>> Usput , sto se tice Visual Objects-a, pravo ime bi
>>> trebalo da mu bude ASPEN.
>
> Radiš li sa njim? Imaš praktična iskustva? De, pričaj
> malo, zanima nas sve, siguran sam.
VO se *ne* zove Aspen: to je bio radni naziv projekta koji je započeo
Nantucket, a sada je deo VO. Imam ja neki tekst na nemačkom, al' ga ič
ne razumem :( Znam samo da gledam slike.
clipper.888nbatocanin,
-> #878, djelovic> ali da je kao jezik dosta loše koncipiran.
Šta mu konkretno zameraš?
clipper.892ndragan,
-> #882, i.a.n./ potrebna, a implementacija je problem utoliko što treba omogućiti da
/ mehanizam dejstvuje za proizvoljan broj nivoa veza, a da se održe
Imao sam sličan problem par puta; recimo, u bazi kupaca ima nekih
indikatora (npr. šifra magacina iz kojeg pazari), koji se prevlače u
prometnu bazu. Onda, kad se indikator u matičnoj promeni (mušterija se
sad snabdeva iz drugog magacina), treba protrčati kroz prometnu i
prepraviti u svim stavkama. U neku ruku bi bilo elegantnije da se taj
indikator ne prepisuje u prometnu, nego čita iz matične, ali s druge
strane taj baš služi za grupisanje po magacinima kad se vuku izveštaji.
Verovatno se stvar može i elegantnije rešiti nekom SQL kombinacijom, ali
zasad stoji tako i radi pristojnom brzinom.
U većini slučajeva nema načina da se korisnik spreči da uništi neku
šifru - jer čak i ako se to zabrani iz aplikacije, on uvek može da nekim
drugim programom uleti u bazu i sve to pročačka ručno. Zasad se stvar
rešava banalnim upozorenjima, tj niko nije lud da brljavi po sopstvenim
podacima, i da posle doživljava zaslužene probleme baš u vreme završnih
računa. Međutim, ne bih se čudio da se pojavi neki uvređeni kućni
programer da to uradi iz osvete. DOS ne omogućava zaštitu.
Bue_ Ndragan
clipper.893dr.grba,
-> #886, bestbp>> Da li je moguce zadati neki format PICTURE, tako da se pri unosu u
>> GET polje ono ponasa kao kasa, dakle ako se unosi 90000, da on ima
>> zarez - 90.000,00. Bolje receno, da unos ide s desne na levu
>> stranu, a ne sa leve na desnu.
Dremaš, a? (:
Pogledaj, za početak poruku (i skini priloženi fajl) 11.639, u kojoj
Aquarius predlaže jedno prilično kvalitetno rešenje. A usput pročitaj
i pratećE reference posle te poruke.
clipper.894dr.grba,
-> #890, nbatocanin>> VO se *ne* zove Aspen: to je bio radni naziv projekta koji je
>> započeo Nantucket, a sada je deo VO. Imam ja neki tekst na
>> nemačkom, al' ga ič ne razumem :( Znam samo da gledam slike.
Potpuno isti slučaj: postoji neki bilten što izlazi u nekom nemačkom
'PC magazine' časopisu, a koji se bavi Clipperom. Tamo videh nešto
o Win verziji Clippera, ali sam, kao i ti, samo bespomoćno zurio u
ilustracije...
clipper.895ficus,
-> #893, dr.grbaPogledaj, za pocetak poruku (i skini prilozeni fajl) 11.639, u kojoj
Aquarius predlaze jedno prilicno kvalitetno resenje. A usput procitaj
i pratecE reference posle te poruke.
pOGLEDAH NABRZAKa predlozeno resenje i ... to je i meni padalo napamet ako sam
dobro provalio o cemu se radi ali .... :(((((( kolko sam provalio moram stalno
da se zezam sa preblock i postblock moja ideja i ja sam tako kod sebe uradio je
da se izmeni getsys.prg (funkcija aplykey kolko se secam) tako da standardni
readmodalpoziva tu drugu varijantu. doda se jos jedna proverica za tip
parametra i .... program ne zahteva nikakve izmene samo se ulinkuje novi getsys
i calc unos radi a u programu sve isto ko da se unosi numerik.
clipper.896saks,
-> #894, dr.grba
Imam neki casopis QBS Software News, koji se bavi samo Clipperom.
Tu je izasao neki prikaza prvih utisaka o VO. Tu se ne kaze previse,
ali ima nekoliko bas lepih slika. Elem:
"Clipper programeri su na Techniconu bili impresionirani onim sto
VO pruza. Isti obuhvata elemente XBase, Clipper-a, VBasica, VC++-a i
Windows API-ja. Postojece aplikeacije se mogu direktno prebaciti u
njega. Radice pod Win-om kao prava W31 aplikacija, bez mem
ogranicenja, ali u karakter rezimu. Garantovano je 90+ posto
kompatibilnosti C5.01 i C5.2 sa VO. VO ima u sebi "form painter",
"menu painter", "report painter", "visual debugger" itd. Aplikacija
razvijena pomocu njega podrzava Multiple Document Interface lako i
brzo (zan li neko sta to znaci?).
VO-ov "Repositoru" uklanja potrebu za make fajlovima, automatski,
bez programerskih zahvata. Kad se klikne na "build button",
Repositoru automatski kompiluje samo one entitete aplikacije koji su
menjani. Entiteti imaju svoje browsere koji se automatski startuju u
zavisnosti od toga koji je entitet pozvan na izmenu.
Kod koji se dobija kompilacijom je pravi (ne pseudo) kod, brzi oko
60 puta od dosadasnjeg.
Najveca snaga VO-a lezi u "CommonView class library". To je GUI
biblioteka objekata. Ti objekti su svesni tipa podataka kojim
manipulisu i automatski predlazu browsere, formatiranje,
validaciju... Inicijalno VO database server podrzava operacije u DBF
i ODBC/SQL formatima."
Sasa
clipper.897dsisic,
Da li se nekad nekom desilo da program povezan blinkerom sa opcijama:
- BLINKER INCREMENTAL PAD ... radi, za razliku od
- BLINKER INCREMENTAL OFF gde se javlja nedefinisano
pucanje programa ( potpuna blokada )
na komandi :
SET RELATION TO ...
Potpuno je iskljucena mogucnost greske u postavljanju relacije
( to je prva SET RELATION komanda), inace radi se o CLIPPER 5.2c.
Greska se ne javlja pod CLIPPER 5.01a.
Greska se javlja prilikom upotrebe blinkera 2.01 i 3.0.
RDD je SIXCDX.
Vrlo cudno !?
clipper.898dpredovic,
Jel to stvarno samo ja imam problema sa Blinkerom 3.0 i Funcky-jem,
ili svi ostali ćute? Problem sam locirao na __videoinit, ali šta sa
tim?
Cu, Dejan
clipper.899bestbp,
-> #898, dpredovicProbaj da izbacis neku FUNCKY biblioteku iz CL.BAT. I ja sam imao slicne
probleme , a izgleda da on mesa razlicite LIBeĘ._nä
pzdrav
clipper.900saks,
-> #898, dpredovic
FUNCKY Ima problema sa EXO-Space-om. Tako na primer i FUNCKY-jeva
funkcija FRead() izaziva blokadu masine linkovane sa ES-om. Citao sam
pre par dana da je F sada kompatibilan sa istim, pa verovatno treba
potraziti novi upgrade. Ako je kompatibilan sa ES-om, verovatno je i
sa B3.0, jer je sustina problema u radu u protected modu.
Sasa
clipper.901dpredovic,
-> #899, bestbp> Probaj da izbacis neku FUNCKY biblioteku iz CL.BAT. I ja sam
> imao slicne probleme , a izgleda da on mesa razlicite LIBeĘ._nä
> pzdrav
Da izbacim neki lib? Ne moze, svi trebaju...
clipper.902smoki,
-> #891, nbatocaninDa, treba mi NULEXHRC.OBJ i DGEHRC kao i iskustva sa DGE-om na Herc-u.
HK
Miloš.
PS. DGEHRC.OBJ :)KKK
clipper.904neman,
-> #903, rzoltan> podacima, i da posle dozivljava zasluzene probleme bas u
> vreme zavrsnih racuna. Medutim, ne bih se cudio da se
> pojavi neki uvredeni kucni programer da to uradi iz
> osvete. DOS ne omogucava zastitu.
>
> Bue_ Ndragan
Mada je poruku potpisao ndragan, ide mi u soru kao rzoltan, ali nema veze :)
Ja nameravam da bas zbog tog problema uvedem kontrolni znak za svaki zapis
a da u samom programu proverim definiciju dbf datoteke. Glede toga, bas je
zgodan onaj programcic Clipvars
neman
clipper.905bestbp,
//a da u samom programu proverim definiciju dbf datoteke. Glede toga, bas je
//zgodan onaj programcic Clipvars
Hvala, hvala. Nadao sam se da ce vam koristiti kao sto i meni koristi.
pozdrav
clipper.906cnenad,
Instalirao sam novi BLINKER 3. i primetio da nešto nije u redu sa
inkrementalnim linkovanjem. Ubacio sam u LNK datoteku BLI INCREMENTAL ON,
mada po NG-u to je stanje po DEFAULT-u. Svako linkovanje mu traje oko 12-14
sec. dok 2.01 INCREMENTAL radi oko 0.4-0.6 sec.
Da li treba još nešto da se podesi ?
clipper.907arazumenic,
Juče sam saznao tužnu istinu.
Htedoh da isprobam NUM2CALC, pustih kompajler, kad ono ne može da nadje
getexit.ch. Pogledam lepo na mestu gde bi trebao da bude, kad tamo su
svi ostali .ch fajlovi, samo ovog nema. Verovatno sam ga greskom izbrisao.
Stoga molim dobru dušu da mi gorepomenuti fajl pošalje.
Saša
clipper.908gari,
-> #907, arazumenicEvo ti getexit.ch (Clipper 5.2c)
Nadam se da ce pomoci.
pozdrav, Gari.
getexit.chclipper.909ndragan,
-> #887, fric/ svega, nema makroa, kompajliranje /w, uz sve to mađarska notacija
Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u poslednje
vreme makroe zamenjujem sa Eval ili (ime) gde ima smisla, ali svejedno -
makroi ti omogućuju da prenosiš imena ili delove imena procedura,
funkcija, .fr? i drugih fajlova kao _argumente_ u potprograme opšte
namene.
Blago rečeno, ne bih mogao da živim bez toga.
Bue_ Ndragan
clipper.910bulaja,
-> #909, ndragan│Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u poslednje vreme
│makroe zamenjujem sa Eval ili (ime) gde ima smisla, ali svejedno - makroi
│ti omogućuju da prenosiš imena ili delove imena procedura, funkcija, .fr?
│i drugih fajlova kao _argumente_ u potprograme opšte namene.
└───
Bljak, discusting. :)
Jesi li nekad prosao pored nekog CODE BLOCK-a?
clipper.911arazumenic,
-> #908, gari-> Evo ti getexit.ch (Clipper 5.2c)
Zahvaljujem.
Saša
clipper.912arazumenic,
Povodom NUM2CALC. Fino uradjeno.
Postoji par sitnih problema koje sam ustanovio isprobavajući.
1. Ako se kreira get objekt za unos promenljive nVrednost, a nVrednost nije 0,
onda bi trebalo da pritiskom na prvu cifru obriše prethodnu vrednost, kao
što to radi "normalan" READ.
2. Kurzor nije na pravom mestu ako se stavi picture "čE 999,999.- ". Možda ovo
i nije toliko bitno, ali kvari utisak.
3. nVrednost se mora zadati na sledeći način: nVrednost := 0.00, jer na obično
nVrednost := 0 javlja se isti problem kao i pod 2.
Nadam se da će se autor ovog veoma korisnog dodatka potruditi da ovo ispravi,
jer smatram da ovo zaslužuje da se nadje u predloženom SEZAM.LIB.
Saša
clipper.913djelovic,
-> #888, nbatocanin> Šta mu konkretno zameraš?
Uffff... puno toga. Clipper je, po mom mišeljnju, najviše osakaćen dBase
kompatiliblnošću, pa tamo i treba potražiti njegove najveće mane: mali broj
osnovnih tipova podataka, nepostojanje struktura i unija, nekonzistentnu i lošu
sintaksu, slabu tipiziranost podataka i sl.
Da se sada po meni ne bi osulo drvlje i kamenje, odmah da naglasim da je po
meni i C++ daleko od idealnog jezika, zbog svoje šugave C sintakse. Najbliže
idealu bi čini mi se bio nekakav Turbo Pascal 5.0 + objektne ekstenzije
identične onima iz C++-a. Na žalost, taj je voz već propušten :(.
P.S. Da li je u Clipperu moguće odvojiti definiciju i implementaciju? Ako
nije, eto još jednog minusa :(.
clipper.914ndragan,
-> #910, bulaja/ Bljak, discusting. :)
De gusibus non est disputandum :). Ovo mi omogućava da pravim rutine
opšte namene, koje rade jedan deo posla, a kao parametre im prosleđujem
druge stvari, te upravo postižem ono što je cilj modularnog
programiranja: manje koda, manje ponavljanja.
/ Jesi li nekad prosao pored nekog CODE BLOCK-a?
Hm, u firmu stiže ukupno jedan primerak Računara te promakne da ga ne
primetim, a kad je to bilo na jelovniku imali smo nesporazum sa
pretplatnom službom, ili sam iz nekih drugih razloga džonjao na času...
Jel može u kratkim crtama šta je tu suštinski novo?
Bue_ Ndragan
p.s. nisam potencijalni kliperaš, nego radoznao.
clipper.915.bale.,
-> #913, djelovic> P.S. Da li je u Clipperu moguće odvojiti definiciju i implementaciju?
> Ako nije, eto još jednog minusa :(.
Pa Clipper je polu-interpreter. To razdvajanje mu dođe samo kao još
jedna komplikacija.
clipper.916bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
bumenu14 zip 12460 BuMenu 1.4, poboljšani sistem menija za Clipper(bulaja)
04.02.94 - v1.4
─────────────────
- dokumentacija u obliku NG (Norton Guide)
- ukljucena BuMenu.ch include datoteka za lakse koriscenje BuMenu
sistema i emulaciju standardne @..PROMPT.. i MENU TO.. sintakse
- ispravljene jos neke sitnice, samo se vise ne secam koje :)
02.09.93 - v1.31 (never released:)
──────────────────
- ispravljen mali bug :) u bu_MenuColor(), zbog koga nije Ok radilo
ne-automatsko podesavanje boja
clipper.918fric,
-> #909, ndragan> Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u
> poslednje vreme makroe zamenjujem sa Eval ili (ime) gde
...
> Blago rečeno, ne bih mogao da živim bez toga.
Well, _teoretksi_, upotrebom kodnim blokovima je moguće
izbaciti potrebu za makroima.
Makroe, kaže dalje teorija, treba izbegavati jer se zbog
njih (ako se samo jednom pojavljuju u kodu) ulinkljuje :)
i ceo interpreter za iste. Drugi razlog za izbegavanje istih
je, normalno, pouzdanost: kompajler ne može da provali da li
ono što je protureno kroz makro ima smisla; error bupne tek
kad se makro lepo razvije :)
U praksi, makroe i dalje koristim :) ponekad kad me mrzi da
provalim kako bih isto uradio sa kodnim blokovima.
clipper.919vlaslo,
hi :-)
da li neko moze da mi objasni oblik ntxXXX.obj filea u clp 5.2
jer zeleo bih da napravim index za madjarski jezik.
cu
clipper.920drdjokic,
Imam sledeci problem. U mrezi koristim svoj program, kada posaljem stampu
na stampac on ne reaguje. Stampa tek kada izadjem u DOS. Isti problem imam i sa
nekim komercijalnim softverom. Sta da radim ?
Hvala u napred !
clipper.921bulaja,
Moze li se nekako iz #command / #translate direktiva pristupati
članovima niza? Standardnim načinom aNiz[i] to naravno nije moguće,
pošto pretprocesor [ ] smatra kao separatore opcionih argumenata.
Pod rešenjem ne podrazumevam pravljenje neke funkcije kao što je:
FUNC ArrayElement (aArray, nIndex)
RETURN aArray[nIndex]
:) već me interesuje da li #command/#translate omogućavaju direktan
pristup članovima niza?
clipper.922cnenad,
-> #916, bulajaŁŁŁ - ispravljene jos neke sitnice, samo se vise ne secam koje :)
Jel ono sa MESSAGE ako je negde na sredini pa seče ram koji je iscrtan na
ekranu ?
clipper.923dsisic,
Stigao je patch za SIXCDX 1.5. Po nekom mom rezonu bilo bi OK
da ga tutnem ovde, ako ni to ne moze, bicu dostupan preko mail-a.
clipper.924nbatocanin,
-> #913, djelovic>> Šta mu konkretno zameraš?
> mali broj osnovnih tipova podataka,
Da, ovde bi se moglo dodati ponešto...
> nepostojanje struktura i unija
Strukture on ima: kako drugačije da zoveš ovo: {1, "ABC", Date()}.
Što se tiče unija, nisam baš lud za njima: to je mašinska caka za
uštedu prostora koji se u Clipper-u ne štedi ni na mnogo važnijim
mestima ;)
> nekonzistentnu i lošu sintaksu,
Paaa... Ne bih se baš složio. Šta je nekonzistentno? Meni jedino
smetaju "doslovni argumenti" (USE Test, a ne USE "Test"), ali i to je
sad sređeno.
> slabu tipiziranost podataka i sl.
;) E, ovde se ne slažemo. Meni čak odgovara netipiziranost. Izgleda
da je najbolje rešenje zlatna sredina primenjena u VO: 'oš
tipizirane, 'oš netipizirane podatke, pa biraj :)
> Da se sada po meni ne bi osulo drvlje i kamenje, odmah da naglasim da
> je po meni i C++ daleko od idealnog jezika, zbog svoje šugave C
> sintakse. Najbliže idealu bi čini mi se bio nekakav Turbo Pascal 5.0
> + objektne ekstenzije identične onima iz C++-a. Na žalost, taj je voz
> već propušten :(.
C je svoje pristalice dobio tako što je bio prvi jezik koji je zaista
oslobodio programera: lično me je strašno nerviralo što kad radiš u
nekom jeziku ne možeš sve da uradiš u njemu, nego spajaj sa ovim, pa
sa onim, itd. C je tu napravio revoluciju - prevodilac ti skoro kaže:
"bato, piši šta oćeš, pa šemo da vidimo". I to je nešto što se i meni
kao programeru zaista sviđa - uostalom, ko voli ograničenja? E, sad:
naravno da se tako nešto i gubi. Pascal (ili Modula) su mnogo lepši
jezici za čitanje, ali nisu postali tako popularni uglavnom samo zato
što su imali glupa ograničenja (je*eš jezik bez stepenovanja). Eto,
Borland je dodao par caka u TP i vidite šta je napravio. No, tu smo
gde smo i nema nam izlaza ;) A da je voz propušten, nisam siguran -
ko zna šta će sutra biti...
> P.S. Da li je u Clipperu moguće odvojiti definiciju i
> implementaciju? Ako nije, eto još jednog minusa :(.
Slušaj, razmišljanje ti je kontekstno vezano: probaj malo da se
prebaciš u drugu klasu problema. Clipper je sa te strane tipičan
izvršibilan jezik: čak su i deklaracije poput PUBLIC izvršne naredbe.
Tačno, ima to nedostataka. Međutim, imaj u vidu pri proceni Clipper-a
da su neke stvari zaista originalne: pretprocesor, koncepcija core
jezika kome pretprocesor daje finalni izgled; kod blokovi - jedna
zaista odlična ideja - *akcije* koje se tretiraju kao podaci (sasvim
u duhu OOP-a); potpuno modularna struktura: pristup bazi podataka,
terminal, GET sistem, obrada grešaka... Naročito sistem za obradu
grešaka.
clipper.925bulaja,
-> #923, dsisic│Stigao je patch za SIXCDX 1.5. Po nekom mom rezonu bilo bi OK
│da ga tutnem ovde, ako ni to ne moze, bicu dostupan preko mail-a.
└───
Baci ga meni na mail :), pa ako može da ide u dir (a trebalo bi
da može:), prebacicu ga.
clipper.926bulaja,
-> #922, cnenad│Jel ono sa MESSAGE ako je negde na sredini pa seče ram koji je iscrtan
│na ekranu ?
└───
Nemam pojma, uopšte ne koristim MESSAGE :)).