Cunoaște Intuit, curs, baza de date internă (dinamic)

În acest capitol, vom începe să învețe să lucreze cu baze de date în prologul.

Pe de o parte, Prolog nu -programs pentru nimic numit baze de cunoștințe. Prolog implementat cu ușurință baze de date relaționale. cele mai frecvente în zilele noastre. Orice tabel de bază de date relațională poate fi descrisă printr-un set corespunzător de fapte, în cazul în care fiecare înregistrare din tabela sursă corespunde unui fapt. Fiecare câmp se va potrivi cu argumentul predicatul care pune în aplicare tabel. Multe distribuții conțin Prolog ca un exemplu, partea de bază a limbii SQL. Putem spune că structura unei baze de date relaționale este inclusă în structura programelor Prolog.

Pe de altă parte, Turbo Prolog. pe care ne concentrăm încă în cursul nostru, a built-in instrumente pentru lucrul cu două tipuri de baze de date: interne și externe. Bază de date internă așa-numitele, deoarece acestea sunt prelucrate exclusiv în memoria calculatorului, spre deosebire de baze de date externe. care pot fi prelucrate pe disc sau în memorie. Deoarece baza de date internă situată în memoria calculatorului, desigur, pentru a lucra cu ei mult mai rapid decât extern. Pe de altă parte, capacitatea memoriei principale este, în general, mult mai mică decât capacitatea memoriei externe. Rezultă că volumul bazei de date externe poate fi substanțial mai mare decât baza în interiorul datelor. Și dacă se presupune că baza poate fi destul de mare, ar trebui să utilizați numele unei baze de date externe.

Studiul bazelor de date externe, dincolo de domeniul de aplicare al acestui curs.

În acest capitol, studiem interne sau, așa cum sunt numite, baza de date dinamice.

Bază de date internă este format din fapte care pot fi în mod dinamic, în timpul rulării, pentru a adăuga la baza de date și șterge din acesta, salvați în fișier, încărcați faptele dintr-un fișier în baza de date. Aceste fapte pot utiliza numai predicate sunt descrise într-o bază de date descriere secțiune predicatul.

În cazul în care secțiunea care descrie predicatul bazei de date în program este doar una, atunci acesta nu poate fi numit. În acest caz, primește automat un dbasedom nume implicit. În cazul în care există un număr de descrieri de baze de date ale secțiunilor predicative, doar una dintre ele pot fi anonime. Toți ceilalți trebuie să aibă un nume unic care este listat după numele și secțiunea DATABASE cratimă. Atunci când a declarat secțiune descrie predicatele bazei de date. compilator declară intern un domeniu care corespunde cu același nume ca și cea a secțiunii; Acest lucru permite predicate speciale să se ocupe de fapte ca termeni.

predicate Descriere Baza de date coincide cu descrierea lor în secțiunea predicate descriere predicat. Cu toate acestea, aceste predicate pot fi exploatate ca un built-in parametri predicatelor, pe care le vom introduce mai târziu. In plus, pot fi adăugate și îndepărtate în timpul rulării faptelor de utilizare a acestor predicate.

Vă rugăm să rețineți că baza doar faptele, nu regulile de inferență pot conține date, datele de bază de date nu pot conține variabile libere. Aceasta este o altă diferență semnificativă de la clasic Prolog Turbo Prolog, care în timpul programului, puteți adăuga și elimina nu numai faptele, ci și regulile. Rețineți că în Visual Prolog, care este succesorul lui Turbo predicate Prolog în intern de date de bază de date descriere secțiune din titlu cuvânt DATABASE înlocuiește sinonim cu fapte. care subliniază în continuare că numai faptele, dar nu și regulile pot fi stocate într-o bază de date internă.

Să facem cunoștință cu predicate integrate Turbo Prolog, concepute pentru a lucra cu baza de date internă. Toate predicatele mai vizualizate pot fi utilizate într-un exemplu de realizare, cu una sau două argumente. Iar opțiunea-un singur argument este utilizat în cazul în care baza de date internă nu are un nume. În cazul în care este numit de bază, este necesar să se utilizeze predicatului cu două argumente. în care al doilea argument - numele bazei de date.

Să începem cu predicatul, cu care, în timpul programului, puteți adăuga sau elimina fapte de baze de date.

Pentru a adăuga fapte într-o bază de date internă poate folosi una din cele trei predicate assert. asserta sau assertz. Diferența dintre aceste predicate este faptul că asserta predicat adaugă faptul altor fapte (la baza de date de top-end), și assertz predicat adaugă alte fapte după fapt (în cele din urmă a bazei de date). afirma predicatul adăugată pentru compatibilitate cu alte versiuni ale Prolog și funcționează exact în același mod ca și assertz. Primul parametru specifică în aceste predicate pentru a se adaugă faptul, ca al doilea opțional, - intern numele bazei de date. la care se adaugă faptul. Putem spune că predicatele afirma assertz și de a lucra cu un set de fapte ca o coadă, și asserta predicat - ca o stivă.

Pentru a elimina fapte din baza de date sunt predicate retracta și retractall. retract predicatului elimină din baza de date internă de la începutul primului fapt, care poate fi identificat cu primul parametru. Al doilea parametru opțional al predicatului este numele intern al bazei de date.

Pentru a șterge toate predicatele care corespund primului argument este un retractall predicat. Pentru a elimina toate dovezile unor baze de date interne ar trebui sa solicite predicatul. arătând spre ea ca primul parametru al variabilei anonime. Deoarece variabila anonimă se potrivește cu orice obiect, și retractall predicat elimină toate faptele care pot fi identificate cu primul său argument, faptele vor fi șterse din baza de date internă. Dacă al doilea argument al predicatului specificat numele bazei de date. faptele sunt eliminate din baza de date specificată. Dacă al doilea argument nu este specificat, faptele sunt eliminate dintr-o singură bază de date fără nume. Rețineți că predicatul retractall poate fi înlocuită printr-o combinație de predicate se retractează și nu după cum urmează:

Pentru a păstra baza de date dinamice de pe disc este salvarea predicatul. El salvează într-un fișier text cu un nume care a fost specificat ca primul parametru al predicatului. Dacă al doilea parametru opțional a fost omis, există păstrarea dovezilor unei singure baze de date internă fără nume. Dacă a fost spus numele bazei de date internă. în faptele acestui fișier de bază de date special, vor fi stocate.

Faptele care sunt salvate într-un fișier text de pe disc pot fi încărcate în memoria RAM se consulte echipa. Primul parametru specifică numele fișierului text predicat de la care doriți să încărcați faptele. Dacă al doilea parametru este omis, faptele vor fi încărcate într-o singură bază de date internă fără nume. Dacă a doua opțiune este specificată, faptele vor fi încărcate în baza de date internă. al cărui nume a fost plasat în al doilea parametru al predicatului. Predicatul nu va avea succes dacă fișierul care urmează să fie citit nu este suficient spațiu liber în memorie, sau dacă fișierul specificat nu este găsit pe disc, sau în cazul în care conține erori (de mai jos va explica un pic mai mult ceea ce sunt).

articole similare