Podaci se obično povezuju sa programiranjem iu savremenom informacionom svijetu predstavljeni su u tri logički ekvivalentne verzije: podaci opisani i korišteni u programu u programskom jeziku; podaci u sistemima baza podataka; podaci u distribuiranim informacionim sistemima. Moderno programiranje dalo je relativnu slobodu samo prvoj varijanti formalizacije informacija. Druge dvije opcije su manje-više pouzdani oblici pružanja informacija i odnosa između njegovih komponenti.
Podaci prošli i sadašnji
Osnovna pozicija programskih jezika je tačan opis podataka i algoritama. Računari ne "predstavljaju" nikakve šanse za neizvjesnost: postoji nešto na šta treba djelovati i postoji komanda koja izvodi tu radnju.
Savremeni koncept je zasnovan na mnogo višim temeljima: postoji datost, a šta će tačno biti određeno je na mestu njene upotrebe. U svakom slučaju, u trenutku upotrebe podaci se automatski provjeravaju i pretvaraju u ispravan tip. Savremeni programer nije obavezan da vodi računa o njihovom preliminarnom opisu i poštovanju kompatibilnosti tipova u algoritmu.
Proces tranzicije:
- iz upisanih podataka i njihovog obaveznog opisa prije upotrebe;
- na neotkucane podatke i slobodu od bilo kakve obaveze da ih opišete i koristite.
U stvari, možemo prepoznati relativnu relaksaciju zahtjeva formalizacije - ona je dostupna samo u okruženju modernih programskih alata. U toku rada, tip svakog datuma je fiksiran, a sekvenca komandi je dobro definisana.
Vrste i modeliranje
Matematika i fizika, trgovina i proizvodnja, ekonomija i druge oblasti u kojima se koriste brojevi, uvijek su operisali podacima i nisu pridavali nikakav značaj konceptu tipa. Činjenica da brojevi mogu biti cijeli ili razlomci nije bila bitna.
Svaka specifična formula ili specifična akcija može dati cijeli broj, beskonačni razlomak, realan ili kompleksan broj. Do sada postoje takva čuda uma kao što su beskonačno mala i beskonačno velika. Štaviše, ova čuda čak imaju svojstva.
Još uvijek nema slobode u programiranju. Sve mora biti strogo formalizovano. Koncept podataka je, prije svega, tip:
- integer;
- boolean;
- char;
- string i tako dalje.
Nazivi tipova se mogu razlikovati u različitim programskim jezicima, ali uvijek postoji cijeli ili realni broj, booleova vrijednost, simbol,linija. Još su preostale relikvije i specifične ideje: nepotpisani cijeli broj, kod, bajt, riječ, dvostruka riječ, niz fiksne dužine.
Koncept podataka u sistemu podataka nema slobodu. SQL jezik - "međunarodni" (postoji dijalekt za svaku modernu bazu podataka) - ne toleriše nikakve netačnosti ne samo u podacima, već ni u sql upitima. Greška u zahtjevu je garancija izostanka rezultata. O kršenju opisa uopće ne treba govoriti.
Modeliranje procesa informacija i predstavljanja podataka je jedini siguran način da se izgradi struktura koja može evoluirati i prilagoditi se promjenjivim uvjetima.
Dinamika originala
Prirodne informacije su kontinuirane promjene. Dati formalni opis i koncept modela podataka u određenoj predmetnoj oblasti znači riješiti tri problema:
- definiraj koji su podaci ovdje;
- formalizirati odnos između njih;
- opišite procese za promjenu podataka i odnosa.
Primjer skupa podataka jednostavnog algoritma u JavaScript-u - smanjena kopija modela čak i najsolidnijeg sistema upravljanja bazom podataka.
Samo u drugom slučaju, stručnjaci i stručnjaci, prilikom projektovanja struktura podataka, tabela i relacija, obično ne vide (zaista je teško pokriti veliku količinu prirodnih informacija) suštinu stvari, i dobija se glomazan, nerazvijen skup gomila podataka, dok izvorne informacije u predmetnoj oblasti kruže slobodno i lako.
Statičnimoguće
Uobičajena JavaScript praksa je uključiti kod prikačen na stranicu i funkcije dodijeljene događajima na oznakama stranice. U svakom slučaju, oznake stranice definiraju podatke koje određeni web resurs prihvata, modificira ili kreira.
Ako pažljivo koncentrišete svoj kod za rukovanje na događaje elemenata, a ne na kod stranice u cjelini, ovo je najbolji izlaz. U idealnom slučaju, kada kod ne uvodi nove podatke ili ne popravlja dostupne podatke, već se fokusira na ono što tačno ima u određenom trenutku.
U stvari, ako definišete koncept "podataka" kao minimalno statičan opis izvornih informacija i slijedite ga, onda to znači da imate šanse za uspjeh.
Što se tiče baza podataka, stvari su mnogo komplikovanije. Bilo koji JavaScript kod "obavlja" stranicu sa funkcionalnošću. Svaka baza podataka je zbirka tabela, odnosa između njih, pohranjenih procedura, upita i funkcionalnosti dostupnih izvana.
Statičnost je problem svakog algoritma. Savremeni koncept podataka je statičan: broj, niz, znak itd. Prilikom obrade ili pisanja u tablicu baze podataka, sve ispada glatko. Ali kada original dobija drugu dimenziju ili značenje? Prva opcija: promijenite znak, ali veze i zahtjevi mogu odmah pasti.
Statika i objekti
Definiranje koncepta "podataka" kao objekta dramatično mijenja situaciju. Objekat ima svoju strukturu. Ovdje možete koristiti bilo koji opis bilo koje varijable. Uloga neće igrati. Objekt ima metode putem kojih su podaci dostupni. Od svegakoristi se u oblasti programiranja, odnosno tri osnovne metode: čitanje, pisanje, promjena. Možete dodati više za poređenje, pretraživanje, kloniranje, itd.
Tematsko područje nameće niz svojstava za svaki podatak. Tako se ispostavlja da se koncept podataka pretvara u neku vrstu opisa koji se može dinamički mijenjati. Statičnost unutar objekta daje dinamiku izvan njega.
Promjenom kombinacije statičkih deskriptora unutar objekta, ne morate brinuti o dinamici njegovih odnosa s drugim objektima.
Programiranje i prezentacija podataka
Šta su podaci? Javna svijest je već navikla na informatičku tehnologiju, radi u oblacima i ima kontejnere u virtuelnim prostorima. Sada, ne samo profesionalni programeri i korisnici, već i obični ljudi su kompetentni za pitanja informacija i njihove upotrebe.
Ali šta je programiranje? Do danas javno mnijenje daje sljedeću definiciju ovom konceptu i njegovim konceptima:
- Informacije i podaci su osnovni koncepti koji se koriste u informatici.
- Podaci su na određeni način primljena i snimljena zapažanja u odnosu na okolnu stvarnost.
- Oni su jednostavni i složeni (strukture), primarni i sekundarni.
- Baza podataka je zbirka nezavisnih materijala predstavljenih na sistematičan način tako da se mogu pronaći, modificirati i koristiti.
Koliko je ovo objektivno? Autoritativni autorimisliš. Prava praksa teži da osigura da svako predmetno područje odredi svoj ispravan sistem podataka i daje svaku priliku da se izgradi dobar dinamički model.
Nije neuobičajeno da kupac (potrošač) nameće svoje mišljenje programeru (dizajneru baze podataka) o tome kako i šta da radi. Sa stanovišta programiranja, svaka želja kupca se može ispuniti sa najvećom preciznošću.
Potreban Oracle za rješavanje problema budžetiranja za održavanje ruralnog vodovoda (zgrada 21 u selu) - dobro. MySQL je potreban za organizovanje sistema praćenja poštanskih pošiljaka za sve pošte u Rusiji - sve će takođe raditi.
Uvijek možete sastaviti bilo koji algoritam i omogućiti pristup bilo kojoj reprezentaciji informacija u okviru definicije koncepta podataka, koju uspostavlja programer sistema za upravljanje bazom podataka ili programskog jezika. Pitanje je drugačije: kako to učiniti uz minimalne troškove u maksimalnoj dinamici?
Baze podataka, primjeri
Jednostavna baza se kreira bez modela. Osnovni koncepti podataka i komunikacije su mali, funkcionalnost je vrlo jednostavna. Na primjer, za visokoškolsku ustanovu trebate:
- sto učitelja;
- tabela grupe (ključ i broj grupe);
- opšta tabela učenika (koriste se grupni ključevi).
Dekan želi znati napredak nastavnika. Tabela nastavnika ima polja:
- prezime;
- name;
- patronim;
- broj grupe pod nadzorom.
Studentska tabela ima polja:
- prezime;
- name;
- patronim;
- datum rođenja;
- GPA (za sve predmete);
- broj grupe.
Mogu postojati najmanje dvije opcije za uzorkovanje: koristeći ime nastavnika, možete otići do broja grupe i vidjeti sve učenike i njihove prosječne rezultate, ili po prezimenu nastavnika i prezimenu ime studenta, možete vidjeti prosječan rezultat posljednjeg.
Čak i u ovako jednostavnoj verziji, problemi su zagarantovani i nešto će se morati mijenjati. Situacija: nastavnik se razbolio, zamjenjuje ga još mjesec dana, što znači da nadgleda dvije grupe. Postoji samo jedno polje pod jednim brojem grupe u tabeli nastavnika.
Da biste riješili problem, morate dodati duplikat polja. A ako se dvoje razbole, onda dodajte tri polja. Dakle, sto učitelja počinje da raste od nule.
Postoji još jedna opcija: zamijenite numeričko polje grupnog ključa simboličkim. Zatim, svaki put kada odaberete, morat ćete konvertirati niz u niz ključeva, a jedan sql upit će se pretvoriti u nekoliko.
Primjer koji više obećava nije pravljenje tablica, već pravljenje objekata. Tada je nastavnik objekat i može imati nekoliko nadgledanih grupa. Ali to je uvijek jedan objekt. Objekt nastavnika ima jedinstveni ključ, ali može imati više nadziranih grupa. Grupa takođe ima jedinstven ključ. Student također.
Sve tri pozicije nisu dostupne samo u okviru zadatka, već se mogu dalje razvijati.
Objektno orijentisane baze
Lideri industrije informacijanude klasične relacijske baze podataka. Testirani su životom, rade, sigurni su, pouzdani i, u slučaju problema, omogućavaju vam da vratite informacije.
Objektno orijentisane baze podataka (OODB) počele su da se razvijaju sredinom 1980-ih i, prema autoritativnim autorima, obećavaju do danas. Ali do sada, osim osnovnih teorija i konceptualnih odredbi, ne postoji OODB koji je postigao isti rejting i distribuciju kao MySQL, MS SQL Server ili Oracle u svim svojim različitim inkarnacijama.
Ali šta ako je definiciju, koncept podataka, tipova, atributa, klasa, hijerarhija predložio programer čija ocjena nije dovoljna da stvori zajednicu programera koji ispovijedaju mentalitet ovog OODB-a? Morat ćemo se osloniti na vlastitu snagu.
Više od trideset varijanti OODB-a kreirano je u Linux okruženju. Ali gdje je garancija da kreirana baza podataka neće zahtijevati više funkcionalnosti? Windows okruženje ne nudi mnogo garancija u ovoj oblasti.
Objektno orijentirano rješenje
Međutim, postoji rješenje. Koristeći MySQL kao primjer, možete pokazati kako se standardne relacijske tablice pretvaraju u objektno orijentirani model problema koji se rješava.
Ovde ne postoji baza podataka, ali postoji okruženje za formiranje sopstvenog sistema objekata. Moć MySQL-a se koristi samo kao relaciona memorija za tabele iz redova sa informacijama. Logiku upotrebe određuje sam programer. Konkretno, postoji tabela is_cache. Ima svenekoliko osnovnih polja:
- owner_code;
- session_code;
- h_code;
- a_surprise;
- a_contents.
Ostala polja nose servisne funkcije. Ova tabela stoji na ulazu svakog zahtjeva i bilježi njegov dolazak. Ono što će model baze podataka raditi određuje njegov programer. Šta će stati u polje sadržaja (a_contents) određeno je objektima modela koji je kreirao programer.
Postoje četiri stvari u ovoj ideji: pogodak, hit sesija, šifra historije pogodaka i određeni sadržaj. Šta je poziv, koji sistem objekata treba izgraditi - određuje programer. Što se podrazumijeva pod sesijom (radnim procesom) određuje programer. Kod historije je mogućnost vraćanja na zahtjeve.
Ovdašnje tabele nemaju nikakve veze sa predmetnim područjem. Postoji kontroler poziva (is_cache), postoji evidentiranje (is_customs), postoji historija poziva (is_histories). Preostale tabele su određene zadatkom koji se rješava.
Zapravo, ovo rješenje predlaže kreiranje vlastitog OODB-a zasnovanog na modelu baze podataka izgrađenog domena i problemu koji se rješava. Ovdje postoji veliki plus - ovo je vaš vlastiti koncept podataka, vaš vlastiti model njihove prezentacije i odnos između njih. Ovdje postoji osnova - odlična relaciona baza podataka. Neće biti problema u traženju nečega i nerazumijevanju nečega.
Model: objektni sistem + DBMS
Gotovo je nemoguće bilo šta promijeniti u informacionoj tehnologiji. Prava informatička revolucija je još daleko. profesionalna svijestprogrameri softvera neće promijeniti klasične tradicije. Ali još uvijek postoji izlaz iz situacije.
Koristeći pouzdane moderne sisteme upravljanja bazama podataka kao osnovu za stvaranje okruženja za postojanje sopstvenog modela, možete postići zapažen uspeh.
U svakom slučaju, moraćete da izgradite pogled ili model podataka da biste rešili zadatak, ali morate to da uradite ispravno: neka to bude sistem objekata, a dobar DBMS njegovo okruženje.