Aplicații de baze de date. Programe pentru gestionarea și lucrul cu baze de date. Despre directoarele db și date

Introducere

Baza de date (DB) - aceasta este o colecție numită de date care reflectă starea obiectelor și relațiile lor în domeniul subiectului.

DBMS - este un program de calculator responsabil pentru crearea, editarea, ștergerea și, în general, stocarea bazelor de date (DB) sau a colecțiilor de înregistrări de date.

Funcții DBMS:

1. Determinarea structurii bazei de date care urmează a fi creată, inițializarea acesteia și încărcarea inițială.

2. Oferirea utilizatorilor cu capacitatea de a manipula datele (selectarea datelor necesare, efectuarea calculelor, dezvoltarea unei interfețe de intrare/ieșire, vizualizare).

3. Asigurarea independenței datelor logice și fizice.

4. Protejarea integrității logice a bazei de date.

5. Protecția integrității fizice.

6. Gestionarea permisiunilor utilizatorilor pentru a accesa baza de date.

7. Sincronizarea muncii mai multor utilizatori.

8. Managementul resurselor mediului de stocare.

9. Sprijin pentru activitățile personalului de sistem.

Capitolul 1

1.1.Tipuri de SGBD:

Relațional

SGBD-urile relaționale sunt cel mai comun tip de sisteme de gestionare a bazelor de date în acest moment. Sunt cu adevărat ușor de folosit. SGBD-urile relaționale au acest nume deoarece... ele stochează datele ordonate în tabele. Modelul relațional se bazează pe stocarea datelor ordonate în coloane și rânduri. Datele pot fi legate în cadrul aceluiași tabel sau între tabele diferite. Tipuri de relațiiSGBD pot lipsi performanța în comparație cu alte tipuri de sisteme de gestionare a bazelor de date, dar nu au puterea de procesare și problemele de căutare în memorie ale PC-urilor moderne. Datele din acest tip de SGBD sunt stocate într-o formă definită cu precizie și sunt de obicei gestionate folosind limbajul de programare SQL (Structured Query Language). De asemenea, puteți specifica cele mai populare tipuri de DBMS - Oracle, MSSqlServer, IBMDB2, PostgreSQL și multe altele.

Sisteme de gestionare a bazelor de date cu fișiere plate

SGBD-urile FlatFile sunt poate cele mai simple dintre toate. Acestea sunt uneori numite și un model plat. Ideea este de a lansa o singură aplicație care să conțină setările programului și formatul original al modelului de stocare. Fișierele plate în rânduri și coloane formatate presupun că fiecare element dintr-un anumit model conține aceleași informații. Un exemplu binecunoscut al acestui tip de DBMS este CSV (Comma Separated Values) și un altul este tabelele precum MS Excel.

Ierarhic

SGBD-urile ierarhice se bazează pe modelul arborelui genealogic. Aici elementele au de obicei o relație unu-la-mulți și este bine să stocați informații cu o descriere a elementelor, caracteristici etc. Aici puteți stoca o carte cu capitole și versete. Tipuri ierarhiceSGBD poate fi folosit pentru a stoca baze de date cu melodii, rețete, modele de telefon și, în general, orice poate fi stocat într-un format imbricat. Tipurile ierarhice de sisteme de gestionare a bazelor de date pot fi inferioare ca eficiență atunci când se lucrează cu diferite obiecte reale. Un exemplu de tipuri ierarhice DBMS este un document XML.

Reţea

Sistemele de gestionare a bazelor de date din rețea folosesc un model de date similar cu unul ierarhic. Principala diferență este că structura unui SGBD de rețea permite mulți părinți pentru mulți copii. Tipuri de rețea de SGBD se bazează pe înregistrări și seturi și utilizează SQL pentru munca lor. Sistemele de gestionare a bazelor de date bazate pe rețea tind să fie foarte flexibile, dar au devenit rar utilizate după anii 1960 și 1970. În căutarea elementului solicitat, programul solicitant trece prin toate elementele instalate, care pot fi prea greoaie. Acest tip de sisteme de gestionare a bazelor de date au fost practic înlocuite cu cele relaționale.

Alegerea unui program pentru a scrie o bază de date

În munca mea de curs, am folosit o bază de date relațională folosind Microsoft Access.

Microsoft Access– unul dintre cele mai populare SGBD pentru sistemul de operare Microsoft Windows. În plus, Access DBMS este o platformă de dezvoltare puternică, cu un mediu integrat flexibil și funcțional. Microsoft Access poate fi folosit ca instrument pentru dezvoltarea și implementarea sistemelor informatice de afaceri cu baze extinse.

Accesul folosește următoarele principalele tipuri de câmpuri:

text: destinat informațiilor text și numerelor atunci când nu este nevoie de a efectua operații matematice cu acestea;

numeric: destinat numerelor atunci când sunt utilizate în calcule matematice;

NOTIFICARE: conceput pentru a stoca text sau comentarii arbitrare (până la 64.000 de caractere);

monetar: conceput pentru a stoca numere reprezentând sume monetare;

data Ora: conceput pentru a stoca informații despre dată și oră;

tejghea: un câmp numeric special conceput pentru a adăuga automat un număr unic pentru înregistrarea curentă în tabelul de date.

logic: conceput pentru a stoca doar două valori „adevărat” și „fals”;

Câmp obiect OLE: destinat stocării obiectelor create de alte aplicații (desene, grafice, diagrame).

În Microsoft Access, există mai multe moduri de a selecta doar datele de care aveți nevoie atunci când căutați o anumită valoare, o singură înregistrare sau un grup de înregistrări.

Folosind caseta de dialog Căutare Este ușor să găsiți anumite înregistrări sau anumite valori în câmpuri. Când fiecare apariție a elementului necesar este găsită, acesta trece prin înregistrări. Dacă trebuie să înlocuiți anumite valori găsite în timpul căutării, ar trebui să utilizați caseta de dialog Înlocuire.

Cereri fac posibilă lucrul cu un set specific de înregistrări care îndeplinesc condițiile specificate pentru unul sau mai multe tabele de baze de date. Când executați o interogare, devine posibil să lucrați independent cu acest set de înregistrări într-o anumită formă sau obiect în vizualizarea tabel.

Triere face posibilă aranjarea rândurilor într-un tabel în funcție de conținutul uneia sau mai multor coloane. Pentru a sorta, selectați câmpul după care va fi efectuată sortarea și faceți clic pe butonul „Sort Ascending” sau „Sort Descending” din bara de instrumente.

Filtrare vă permite să izolați și să vizualizați temporar un anumit set de înregistrări care îndeplinesc anumite condiții. Pentru a filtra, selectați datele după care doriți să filtrați și faceți clic pe butonul „Filtrați după selectat” din bara de instrumente. Pentru a schimba filtrul, utilizați butonul „Schimbați filtrul”. Pentru a seta condiții mai detaliate pentru filtrare în meniul „Înregistrare”, utilizați comanda „Filtrare” și subcomanda „Filtru avansat”. Pentru a aplica un filtru obișnuit sau avansat, utilizați butonul „Aplicați filtru” din bara de instrumente.

capitolul 2

Formularea problemei

Scopul bazei de date Hotel este automatizarea procesului de contabilizare și analiză a datelor hotelului.

Sarcini rezolvate la utilizarea bazei de date:

Stocarea și preluarea datelor despre angajații hotelului;

Stocarea și preluarea informațiilor despre clienții hotelului;

Stocarea și preluarea informațiilor despre numere;

Stocarea datelor privind rezervările, check-in-ul, check-out-ul clienților și calcularea plății pentru cazare

Calculul și analiza informațiilor privind primirea plății pentru cazare de la clienții companiei;

Cauta informatii despre principalele articole: camere rezervate, check-in pentru perioada, check-out pentru perioada.

Crearea bazei de date

Pentru a crea o bază de date MS Access, a fost folosit Table Designer, care vă permite să determinați structura tabelului necesară.

Pentru a afișa informații complete despre starea hotelului, domeniile de activitate ale acestuia și raportarea lucrărilor efectuate, au fost create următoarele tabele:

1. „Angajați”

Tabelul are următoarele câmpuri: Codul angajatilor(câmp cheie) - tip de date: contor; Numele complet– tip de date: text, dimensiune – 50, opțional, nu sunt permise potriviri; Data nașterii–tip de date: data\ora, optional; educaţie– tip de date: master substitution – set de date fix (superior, secundar); denumirea funcției–master de substituții (lista posturilor disponibile); abordare– tip de date: text, dimensiune-50, opțional; telefon– tip de date: numeric, câmp opțional; salariu– tip de date: monetar, format câmp – ruble, opțional. Tabelul în modul design arată astfel:

2. „Poziții”

Acest tabel are următoarele câmpuri: codul postului– contor (câmp cheie); denumirea funcției– tip de date: text (set de poziții principale).

3. „Numere”

Acest tabel are următoarele câmpuri: codul numeric– contor tip de date (câmp cheie); categorie– tip de date: master of settings (single, duble, junior suite, lux)

Câmpuri: cod de categorie– tip de date: contor (câmp cheie), număr- text; categorie– maestru al substituțiilor (numerelor); număr de locuri– tip de date: număr întreg numeric lung, opțional; număr de camere– asemănătoare; Informații suplimentare– tip de date: MEMO; cost pe zi– tip de date: monetar, format – ruble, opțional.

5. „Starea numărului”

Câmpuri: codul numeric– contor, câmp cheie; număr- material de substituție tip de date (câmp similar din tabelul „Categorii camere”); angajat(servitoare) - master substituție (dintr-o interogare pe tabelul „angajați”, cu condiția de selecție „servitoare”), câmpuri - rezervare, check-in, check-out– tip de date: data\ora, camp optional; client – ​​maestru de substituție (din tabelul „Clienți”).

6. „Clienți”

Câmpuri: Cod client Numele complet– tip de date: text, dimensiune câmp - 50, obligatoriu; Data nașterii- tip de date: data\ora, obligatoriu; podea- maestru de producție (soț, soție); Tipul documentului– maestru de producție (pașaport, licență militară, carte de identitate), obligatoriu; serie- text, obligatoriu; număr– numeric, obligatoriu; emise de către– text, dimensiune câmp – 50, obligatoriu, data emiterii– data/ora, obligatoriu.

Câmpuri: cod copil– tip de date: contor (câmp cheie); Cod client– tip de date: asistent de substituție (un câmp similar din tabelul „clienți”); Numele complet– tip de date: text, dimensiune câmp – 50; Data nașterii– tip de date: data\ora.

Schema de date arată astfel:

Tabelele Starea camerei și Angajații sunt legate printr-o solicitare pentru Angajați, cu condiția de selecție „servitoare”.

Pentru ușurință în utilizare, au fost create interogări pentru baza de date a hotelului.

Cerere nr. 1 – „Rezervare”

În linia Condiție de selecție, se introduce următoarea condiție:

>=[s]Și<=[по]

Adică selecția câmpurilor pentru o anumită perioadă de timp.

Interogările 2 și 3 au fost create în mod similar.

Cerere nr. 2 - „Înregistrarea în camere”

Cerere nr. 3 – „Ieșirea din camere”

Cererea nr. 4 – „Clienți cu copii”.

Interogarea în modul design arată astfel:

Această solicitare sistematizează informații despre dacă clienții au copii, ceea ce este necesar pentru anumite reduceri, beneficii etc.

Cerere nr. 5 – „Plata cazare”.

Solicitarea conține o expresie care reflectă calculul costului vieții pentru fiecare client.

Cererea nr. 6 – „Plătit pentru lună”.

Solicitarea conține o expresie care reflectă calculul costului vieții pentru fiecare client:

Plata pentru cazare: (Room_state. Check-out - Room_state. Check-in + 1)*Room_categories. [Cost per day].

Precum și selectarea câmpurilor pentru perioada respectivă.

Cererea nr. 7 – „Plată pentru program”.

Similar cu cererea 6, cu excepția selectării perioadei de selectare a câmpurilor. Pe baza datelor din această interogare, sunt construite diagrame pentru analiză, precum și tabele pivot.

Cererea nr. 8 – „Cerere de post”.

Cerere cu condiția de selecție pentru angajații „servitoare”. Folosit pentru a înlocui datele în tabelul Stare număr.

Crearea acestor interogări simplifică foarte mult activitățile de raportare la hotel, sistematizează convenabil informațiile și vă permite să le utilizați rapid și să faceți modificări. Lista cererilor este prezentată mai jos:

Rapoartele sunt următoarele:

Lucrul cu baza de date începe prin deschiderea formularului Hotel:

În stânga sunt butoane pentru deschiderea rapoartelor, în dreapta pentru introducerea și vizualizarea datelor privind pozițiile principale.

De exemplu, formularul Informații despre cameră arată astfel:

Aici puteți vedea toate informațiile despre camera de hotel, precum și o listă cu toate camerele.Când selectez o poziție, putem vedea imediat toate informațiile despre cameră. În colțul din stânga jos există butoane pentru ușurința de a lucra cu înregistrările. În dreapta sus există un buton pentru a deschide formularul Introduceți categoria camerei.

Folosind butonul Rezervare Check-in Check-out, vom deschide formularul:

Care are trei file:

Informații despre camere – informații complete despre camerele disponibile;

Dinamica încasărilor – dinamica încasărilor după număr:

Rezumatul plății – rezumatul plății per cameră:

Butonul Angajații hotelului deschide următorul formular:

Aici puteți vizualiza informații despre angajați, precum și puteți introduce informațiile necesare.

Cu ajutorul afișării rapoartelor se rezolvă sarcinile de căutare a informațiilor despre starea camerelor: rezervare, check-in, check-out, precum și reflectarea informațiilor de plată și afișarea unei chitanțe pentru client.

Astfel, această bază de date rezolvă problemele atribuite.

Concluzie

În timpul lucrărilor de curs a fost creată baza de date „Hotel”. Această bază de date este destinată angajaților, deoarece simplifică procesul de service clienți.

Această bază de date include: tabele, interogări, formulare și rapoarte, precum și o fereastră de rulare automată pentru ușurință în utilizare.

Literatură:

1. Date, K., J. Introducere în sistemele de baze de date. a 6-a ed. - LA.; M., Sankt Petersburg: „Williams”, 2000. – 848 p.

2. Khomonenko A.D., Tsygankov V.M., Maltsev M.G. Baze de date: Manual pentru instituţii de învăţământ superior/Ed. prof. IAD. Homonenko. – Sankt Petersburg: print CORONA, 2002. – 672 p.

3. V.V. Korneev, A.F. Gareev, S.V. Vasyutin, V.V. Baze de date Reich. Procesarea inteligentă a informațiilor. – M.: Cunoașterea, 2001.- 496 p.

4. Prag K., Irwin M., „Access User Bible for Windows 2000”, K.: Dialectics, 2001 – 576 pp..

5. Garnaev A.S., „VBA Self-Teacher”, Sankt Petersburg, 1999. – 104 p.

6. Microsoft Access 2010. Dezvoltarea aplicației folosind un exemplu real - G. Gurvits - 496p.

7. Proiectarea bazei de date. Microsoft Access DBMS. Manual - N. N. Grinchenko, E. V. Gusev, N. P. Makarov - 240 p.

8. Acces 2007. Utilizare efectivă - V. E. Koshelev - 590 p.

DbVisualiser 9.1.5

DbVisualizer este un instrument de baze de date pentru dezvoltatori și administratorii de baze de date, ajutându-vă atât cu dezvoltarea, cât și cu întreținerea bazelor de date.

Firebird 2.5.2

Firebird este o bază de date relațională care oferă multe caracteristici standard ANSI SQL care rulează pe Linux, Windows și o varietate de platforme Unix. Firebird oferă concurență excelentă, performanță ridicată și suport de limbaj puternic pentru procedurile stocate și declanșatoare.

Reitec.PMM 1.2.1.0

Reitec.PMM este un instrument gratuit pentru managementul echipamentelor de testare ca parte a asigurării calității.

WowBase 1.1

Creați-vă propria bază de date rapid și ușor.

MyContacts 3.1

Gestionarea contactelor, zilelor de naștere și a datelor/sarcinilor.

LibreOffice Rus pentru Windows 3.6.4

Suita de birou LibreOffice este cea mai bună alternativă gratuită pentru Microsoft Office 2003, 2007 și chiar 2010.

PhpMyAdmin 3.5.3

phpMyAdmin Rus este un program pentru gestionarea unei baze de date MySQL, pe care o puteți descărca și utiliza gratuit - atât acasă, cât și într-o organizație. Versiunea rusă.

Oracle MySQL pentru Linux, UNIX, *BSD și alte *nix 5.5.28 Final / 6.0.6 Beta

Oracle MySQL - Renumit server de baze de date. Renumit pentru stabilitatea și viteza impecabile.

Oracle MySQL pentru Windows 5.5.28 Final / 6.0.6 Beta

MySQL este una dintre cele mai populare baze de date open source și este complet gratuit de descărcat și utilizat.

Multe companii creează diverse aplicații bogate în funcții pentru a facilita gestionarea, dezvoltarea și administrarea bazelor de date.

Majoritatea bazelor de date relaționale, cu excepția MS Access, constau din două componente separate: un „back-end” unde sunt stocate datele și un „front-end” - interfața de utilizator pentru interacțiunea cu datele. Acest tip de design este destul de inteligent, deoarece paralelizează un model de programare cu două straturi care separă stratul de date de interfața cu utilizatorul și permite pieței de software să se concentreze direct pe îmbunătățirea produselor sale. Acest model deschide ușa terților pentru a-și construi propriile aplicații pentru a interacționa cu diferite baze de date.

Pe Internet, oricine poate găsi multe produse pentru dezvoltarea și administrarea bazelor de date MySQL. Am decis să colectăm cele mai populare 10 instrumente într-un singur articol, astfel încât să vă puteți economisi timp.

1.Bancul de lucru

Primul loc aparține de drept instrumentului Workbench (dezvoltat de Sun Systems/Oracle), care poate rula pe platformele Microsoft Windows, Mac OS X și Linux. Workbench combină dezvoltarea și administrarea bazei de date și este succesorul DBDesigner4.

MySQL Workbench distribuit sub o licență gratuită - Community Edition și cu un abonament anual plătit - Standard Edition. Acesta din urmă include caracteristici suplimentare care pot îmbunătăți semnificativ productivitatea atât a dezvoltatorilor, cât și a administratorilor de baze de date.

Costul este gratuit.

Ce face ca Workbench să fie popular?

  • capacitatea de a prezenta modelul bazei de date sub formă grafică, precum și de editare a datelor într-un tabel;
  • prezența unui mecanism simplu și funcțional pentru crearea de relații între câmpurile tabelului, printre care se implementează o relație „mulți-la-mulți” cu posibilitatea de a crea un tabel de relații;
  • funcția Reverse Engineering vă permite să restaurați structura tabelelor și a relațiilor din cea care a fost implementată anterior și stocată pe serverul bazei de date;
  • prezența unui editor de interogări SQL, care face posibilă, atunci când este trimis către server, să primească un răspuns în formă tabelară și alte caracteristici.

2. Navicat

Locul doi Navicat(dezvoltat de PremiumSoft CyberTech Ltd) este un instrument pentru dezvoltarea și administrarea bazelor de date care rulează pe orice server MySQL începând cu versiunea 3.21. Pentru MySQL, Navicat este disponibil pentru a rula pe platformele Microsoft Windows, Mac OS X și Linux.

Prețurile produselor variază de la 199 USD la 379 USD.

Ce face Navicat popular?

  • Disponibilitatea unui designer de interogări vizuale;
  • capacitatea de a importa, exporta și face backup de date;
  • capacitatea de a crea rapoarte;
  • Tunnel SSH și HTTP;
  • migrarea și sincronizarea datelor și structurii;
  • instrument de planificare a sarcinilor și alte caracteristici.

3. PHPMyAdmin

PHPMyAdmin este o aplicație open source gratuită concepută pentru administrarea SGBD MySQL. PHPMyAdmin este o interfață web cu care puteți administra serverul MySQL, puteți rula comenzi și puteți vizualiza conținutul tabelelor și bazelor de date printr-un browser.

Costul este gratuit.

Ce face PHPMyAdmin popular?

  • capacitatea de a gestiona SGBD-ul MySQL fără a introduce direct comenzi SQL;
  • ca panou de control PHPMyAdmin oferă posibilitatea de a administra baze de date dedicate;
  • dezvoltare intensivă;
  • abilitatea de a integra PHPMyAdmin în propriile dezvoltări datorită licenței publice generale GNU și altor caracteristici.

4. dbForge Studio pentru MySQL

dbForge Studio pentru MySQL- un instrument de interes atât pentru utilizatorii MySQL, cât și pentru dezvoltatorii de baze de date. Cu ajutorul acestuia, puteți automatiza cu ușurință munca de rutină și puteți economisi timp. Astăzi, dbForge Studio pentru MySQL este disponibil în trei ediții: Express, Standard și Professional, care vă permite să alegeți instrumentul de care aveți nevoie. Puteți utiliza dbForge Studio pentru MySQL atât în ​​versiunea comercială, cât și în versiunea gratuită.

Există atât versiuni gratuite, cât și versiuni plătite, cea din urmă fiind la prețul de 49,95 USD (ediție standard) și 99,99 USD (ediție profesională).

Ce face dbForge Studio popular?

  • disponibilitatea fondurilor pentru administrare centralizată;
  • instrumente de comparare a bazelor de date;
  • profiler de interogări vizuale;
  • capacitatea de a gestiona privilegiile utilizatorului;
  • disponibilitatea unui Database Designer, care vă permite să construiți diagrame vizuale;
  • lucru îmbunătățit cu proiecte de baze de date și alte caracteristici.

5.HeidiSQL

HeidiSQL este un instrument gratuit de gestionare a bazelor de date. O alternativă demnă la PHPMyAdmin, care vă permite să creați și să editați tabele, vizualizări, declanșatoare, proceduri, precum și să vizualizați și să editați date. HeidiSQL oferă, de asemenea, posibilitatea de a exporta date atât într-un fișier SQL, cât și în clipboard-ul de pe alte servere.

Costul este gratuit.

Ce face HeidiSQL popular?

  • capacitatea de a vă conecta la server folosind linia de comandă;
  • capacitatea de a optimiza și restaura tabelele în loturi;
  • capacitatea de a edita coloane, indexuri și chei străine ale tabelelor, edita corpul și parametrii procedurilor SQL, declanșatoare etc.;
  • formatare ușoară a SQL neordonat;
  • sincronizarea tabelelor între diferite baze de date și alte caracteristici.

6. SQL Maestro pentru MySQL

SQL Maestro pentru MySQL- un instrument pentru administrarea, dezvoltarea și managementul celor mai populare SGBD. O interfață grafică convenabilă face posibilă executarea de interogări și scripturi SQL, gestionarea privilegiilor utilizatorului, exportul și crearea de copii de rezervă ale datelor.

În funcție de licența selectată și de cazul de utilizare, costul acestui instrument variază de la 99 USD la 1.949 USD.

Ce face SQL Maestro pentru MySQL popular?

  • suport pentru versiunile de server MySQL de la versiunea 3.23;
  • Disponibilitatea unui designer de baze de date;
  • capacitatea de a edita, grupa, sorta și filtra datele;
  • generator de interogări vizuale;
  • Tunnel SSH și HTTP;
  • Editor BLOB și alte caracteristici.

7. EMS SQL Manager pentru MySQL

EMS SQL Manager pentru MySQL este un instrument de dezvoltare și administrare a bazelor de date care acceptă diverse funcții MySQL și funcționează cu toate versiunile MySQL mai vechi de 3.23. Cu ajutorul acestuia, aveți posibilitatea de a edita vizual, importa și exporta baze de date, executa scripturi SQL, gestiona privilegiile utilizatorului, proiectează vizual baze de date MySQL.

Există o versiune plătită și gratuită a aplicației. Acesta din urmă are o serie de limitări funcționale. Costul versiunii plătite variază între 95 – 245 de dolari SUA.

Ce face EMS SQL Manager pentru MySQL popular?

  • suport pentru date UTF8;
  • gestionarea ușoară a diferitelor obiecte MySQL;
  • compatibil cu toate versiunile de la 3.23 la 6.0 inclusiv;
  • disponibilitatea instrumentelor grafice și text pentru generarea de interogări;
  • Tunnel SSH și HTTP;
  • designer de rapoarte convenabil și alte caracteristici.

8. SQLyog

SQLyog este unul dintre cele mai puternice instrumente care combină capacitățile MySQL Administrator, PHPMyAdmin și alte instrumente pentru administrarea și dezvoltarea bazelor de date. SQLyog rulează pe platformele Microsoft Windows, Windows NT. și Linux folosind Wine.

Există atât versiuni gratuite, cât și versiuni plătite de SQLyog disponibile. Versiunea plătită costă de la 99 USD la 1.499 USD (variază în funcție de numărul de utilizatori și licență, cu sau fără suport).

Ce face SQLyog popular?

  • generator de interogări convenabil;
  • posibilitatea de sincronizare a datelor;
  • suport Unicode;
  • Tuning SSH și HTTP, HTTPS;
  • închidere automată „inteligentă”;
  • completare inteligentă a codului și alte caracteristici.

9. Manager DBTools

Manager DBTools- o aplicație de gestionare a datelor cu suport încorporat pentru MySQL, PostgreSQL, MSAccess, MSSQL Server, Oracle și alte baze de date. Platforme acceptate: Windows 2000, XP, Vista, 7.

DBTools Manager este disponibil în versiuni gratuite (Standard) și plătite (Enterprise). Costul este de 69,90 USD per licență, cu reduceri disponibile la achiziționarea mai multor licențe.

Puteți afla mai multe despre și puteți cumpăra DBTools Manager aici

Să creăm o aplicație simplă de bază de date care afișează informații din tabelul „Turiști” și înregistrarea tabelului „Informații turistice” din baza de date Microsoft Access asociată cu înregistrarea curentă a tabelului „Turiști”.

Pentru a face acest lucru, să creăm o aplicație Windows goală. Aspectul mediului

dezvoltarea este prezentată în Figura 39.

Orez. 39. Cerere goală

Figura 39 evidențiază grupul de componente „Date”, care conține componente pentru accesarea și manipularea datelor.

Legarea datelor bazei de date la formular este realizată de componenta „Sursa de legare”. Să-l transferăm în formular. După plasarea lui pe formular, mediul de dezvoltare ia următoarea formă (Fig. 40).

Orez. 40. Componenta sursă de legare pe formular

Componenta nu este vizuală, deci este afișată într-un panou suplimentar. Proprietatea principală a componentei este proprietatea DataSource, care indică sursa de date. În mod implicit, proprietatea este goală, așa că trebuie să-i configurați valoarea. Când selectați această proprietate în fereastra de proprietăți, apare următoarea fereastră (Fig. 41).

Orez. 41. Lista surselor de date

Lista este în prezent goală, așa că trebuie să creați o nouă sursă de date selectând comanda Add Project Data Source pentru a crea o nouă sursă de date și a vă conecta la ea. Apare următoarea casetă de dialog (Fig. 42).

Orez. 42. Lista surselor de date

Acest dialog oferă următoarea alegere a surselor de date:

Baza de date - Baza de date;

Serviciu - Un serviciu este un serviciu care furnizează date. Cel mai adesea acesta este un serviciu Web;

Obiect - Obiect pentru selectarea unui obiect care va genera date și obiecte pentru a lucra cu el.

În cazul nostru, trebuie să selectați elementul „Bază de date”. Apare o fereastră pentru selectarea unei conexiuni de date (Fig. 43).

Orez. 43. Selectarea unei conexiuni de date

Scopul acestui dialog este de a crea un șir de conexiune care va descrie parametrii de conexiune pentru motorul ADO, cum ar fi tipul bazei de date, locația acesteia, numele de utilizator, caracteristicile de securitate etc.

Lista derulantă de dialog conține toate conexiunile create anterior. Dacă conexiunea necesară nu este în listă, atunci ar trebui să utilizați butonul „Conexiune nouă”. Apăsarea butonului face să apară următorul dialog (Fig. 44).

În acest dialog, selectați tipul sursei de date (în acest caz, Microsoft Access), numele bazei de date (în acest caz, numele și locația fișierului bazei de date) și numele de utilizator și parola utilizate pentru conectarea la baza de date. Butonul „Avansat” vă permite să setați un număr mare de parametri legați de diferite părți ale motorului ADO. Utilizarea butonului „Testează conexiunea” vă va asigura că parametrii introduși sunt corecti și conexiunea funcționează.

Orez. 44. Crearea unei noi conexiuni

Ultimul pas al dialogului este de a selecta acele tabele sau alte obiecte de bază de date care sunt necesare în această sursă de date. Fereastra de selecție este prezentată în Figura 45.

Orez. 45. Selectarea tabelelor necesare

În această fereastră, sunt selectate tabelele „Turiști” și „Informații turistice”. Deoarece în baza de date nu au fost create alte obiecte decât tabele, în Figura 45 sunt afișate doar tabele. Aceasta completează crearea sursei de date. După ce faceți clic pe butonul „Finish”, o componentă DataSet apare lângă componenta BindingSource din formular.

Acum datele conectate mai sus trebuie să fie afișate pe formular. Cel mai simplu mod de a afișa date este să utilizați componenta DataGridView din grupul de componente Data. Componenta este vizuală și arată astfel pe formular (Fig. 46).

Orez. 46. ​​​​Componenta DataGridView

Apare imediat fereastra de setări ale componentelor, care determină capacitățile sale de editare a datelor: „Activați adăugarea”, „Activați editarea”, „Activați ștergerea”; capacitatea de a schimba secvența coloanelor: „Activați capacitatea de a schimba ordinea coloanelor” („Activați reordonarea coloanelor”); precum și capacitatea de a fi atașat la containerul părinte.

Pentru ca componenta să afișeze date, trebuie să selectați o sursă de date din lista derulantă. Selectarea listei derulante face ca următorul dialog să apară (Fig. 47).

Orez. 47. Selectarea unei surse de date pentru DataGridView

În acest caz, am ales ca sursă de date tabelul „Turiști”. Această selecție modifică forma ecranului după cum urmează (Fig. 48).

Orez. 48. Componenta DataGridView afișează structura tabelului

Figura arată că a apărut o altă componentă BindingSource și o componentă TableAdapter care funcționează cu tabelul „Turiști”. Vă rugăm să rețineți că în timpul proiectării sau în timpul procesului de dezvoltare, datele din tabel nu sunt afișate.

Acum trebuie să afișați datele din tabelul legat „Informații turistice”. Pentru a face acest lucru, plasați o altă componentă DataGridView pe formular și selectați următoarele ca sursă de date (Fig. 49).

Orez. 49. Selectarea unei surse de date pentru al doilea DataGridView

Aici, sursa de date nu este tabelul „Informații turistice” în sine, ci conexiunea (Sursa obligatorie) dintre tabelele „Turiști” și „Informații turistice”. Această selecție asigură că sunt selectate numai acele rânduri din tabelul Informații turistice care sunt asociate cu rândul curent din tabelul Turist. Această alegere asigură, de asemenea, că datele asociate sunt actualizate și șterse corect. Funcționarea aplicației rezultate este prezentată în Figura 50.

Orez. 50. Aplicația bazei de date la locul de muncă

Navigarea prin date folosind tastele săgeți este incomodă. Pentru a simplifica navigarea prin date, există o componentă BindingNavigator. Să o plasăm pe formular (Fig. 51).

Orez. 51. Componenta BindingNavigator pe formular

Această componentă vă permite să navigați între înregistrările de tabel, să adăugați și să ștergeți rânduri de tabel. Funcționalitatea și aspectul componentei pot fi personalizate deoarece este o bandă de meniu ToolStripContainer.

Proprietatea care determină tabelul prin care se efectuează navigarea este proprietatea BindingSource. Să setăm valoarea acestei proprietăți la „touristsBindingSource”. În funcționare, componenta arată astfel (Fig. 52).

Orez. 52. Componenta BindingNavigator la locul de muncă

Editarea datelor în celulele componentei DataGridView cu setări adecvate este posibilă, dar este incomod și nu este rațional. În special, este dificil să verificați valorile introduse pentru erori. Prin urmare, pentru tabelul „Turiști” vom realiza un formular de ecran care vă permite să afișați date în componentele TextBox și să le editați. Pentru a face acest lucru, plasați un container de tip Panel pe formular și pe acesta trei componente TextBox, după cum urmează (Fig. 53).

Orez. 53. Panou ecran pentru editarea intrărilor din tabelul „Turiști”.

Acum trebuie să legați componentele TextBox la câmpurile corespunzătoare din tabelul „Turiști”. Pentru a face acest lucru, folosim proprietatea din grupul DataBindings - Advanced, prezentată în Figura 54.

Orez. 54. Proprietatea „DataBindings - Advanced”

Selectarea acestei proprietăți duce la apariția casetei de dialog prezentată în Figura 55. Acest dialog vă permite nu numai să legați date, ci și să setați un eveniment în cadrul căruia datele vor fi actualizate, precum și să formatați datele la ieșire.

Pentru componenta de sus TextBox, în lista derulantă Binding, selectați „touristsBmdmgSource” ca sursă de date și câmpul sursă ca „Last Name”. Pentru componentele TextBox din mijloc și de jos, selectați aceeași sursă de date și, respectiv, câmpurile „Nume” și „Patronimic”.

Aplicația dezvoltată în funcțiune arată astfel (Fig. 56).

Orez. 55. Fereastra de dialog pentru proprietatea „DataBindings - Advanced”.

Orez. 56. Legarea datelor de componente vizuale

Cu toate acestea, atunci când se fac modificări, toate datele noi rămân doar în formular. Nu sunt salvate în baza de date, iar când aplicația este apelată din nou, desigur, vor lipsi. Acest lucru se întâmplă deoarece datele au fost încărcate într-un obiect DataSet, care este o copie în memorie a tabelului. Toate acțiunile sunt efectuate cu această copie. Pentru ca modificările să se reflecte în baza de date, trebuie să executați metoda Update a clasei TableAdapter. Astfel, în aplicația în curs de dezvoltare, este necesar să plasați butonul „Actualizare” și să scrieți următorul cod de program în handlerul de evenimente Click:

touristsTableAdapterUpdate(bDTur_firmDataSet); information_about_touristsTableAdapter.Update(bDTur_firmDataSet);

Acest cod actualizează informațiile din tabelele Turists and Tourist Information furnizate de sursa de date. Rețineți că această metodă este supraîncărcată, iar variantele sale vă permit să actualizați atât un rând individual de tabel, cât și un grup de rânduri.

  • Dezvoltare pentru Android,
  • SQLite
    • Tutorial
    • Mod de recuperare

    Salutare tuturor! Numele meu este Oleg și sunt un programator amator de Android. Un amator pentru că în momentul de față câștig bani programând într-o cu totul altă direcție. Și acesta este un hobby căruia îi dedic timpul liber. Din păcate, nu cunosc niciun programator Android și obțin toate cunoștințele mele de bază fie din cărți, fie de pe Internet. În toate cărțile și articolele de pe Internet pe care le citesc, crearea unei baze de date pentru o aplicație dedică foarte puțin spațiu și, de fapt, întreaga descriere se reduce la crearea unei clase care este moștenitoare SQLiteOpenHelperși implementarea ulterioară a codului SQL în codul Java. În afară de faptul că obținem cod slab lizibil (și dacă în aplicația noastră apar mai mult de 10 tabele, atunci amintirea tuturor acestor relații dintre tabele este un iad), atunci în principiu putem trăi, desigur, dar cumva nu vrem la.
    Am uitat să spun cel mai important lucru, puteți spune că aceasta este prima mea încercare de a scrie aici. Și să mergem.

    Despre eterna întrebare: de ce?

    Sincer să fiu, sincer nu știu de ce cărțile și articolele despre programare pentru Android nu descriu instrumente pentru proiectarea arhitecturii bazelor de date și unele modele pentru lucrul cu bazele de date în stadiul creării lor. S-ar părea ușor să adăugați doar câteva pagini la o carte sau să scrieți un articol separat (cum fac acum) - dar nu. În acest articol, voi trece pe scurt prin instrumentele pe care le folosesc în munca mea și mai detaliat despre codul care este responsabil pentru crearea inițială a bazei de date, care din punctul meu de vedere pare mai lizibil și mai convenabil.


    Dacă aplicația noastră are mai mult de 5 tabele, atunci ar fi o idee bună să folosiți un instrument pentru proiectarea vizuală a arhitecturii bazei de date. Deoarece acesta este un hobby pentru mine, folosesc un instrument complet gratuit numit Oracle SQL Developer Data Modeler ( îl puteți descărca).

    Acest program vă permite să desenați vizual tabele și să construiți relații cu acestea. Multe greșeli de proiectare a arhitecturii bazei de date pot fi evitate cu această abordare de proiectare (vă spun deja asta ca programator profesionist de baze de date). Arata cam asa:

    După ce am proiectat arhitectura în sine, trecem la partea mai plictisitoare, care constă în crearea codului SQL pentru a crea tabele. Pentru a ajuta cu această problemă, folosesc deja un instrument numit SQLiteStudio (care, la rândul său, poate fi descărcat aici).

    Acest instrument este un analog al unor produse cunoscute precum SQL Naviagator, Toad etc. Dar, după cum sugerează și numele, este proiectat să funcționeze cu SQLite. Vă permite să creați vizual o bază de date și să obțineți codul DDL al tabelelor create. Apropo, vă permite și să creați Vizualizări, pe care le puteți utiliza și în aplicația dvs., dacă doriți. Nu știu cât de corectă este abordarea utilizării vizualizărilor în programele Android, dar le-am folosit într-una dintre aplicațiile mele.

    De fapt, nu mai folosesc instrumente terțe și atunci magia începe cu Android Studio. După cum am scris deja mai sus, dacă începem să implementăm codul SQL în codul Java, rezultatul pe care îl vom obține este puțin lizibil și, prin urmare, puțin extensibil, cod. Prin urmare, am pus toate instrucțiunile SQL în fișiere externe care se află în directorul meu active. În Android Studio arată cam așa:


    Despre directoarele db și date

    În interiorul directorului active Am creat două directoare db_01Și data_01. Numerele din numele directorului corespund cu numărul versiunii bazei mele de date cu care lucrez. În director db Stochez scripturile SQL pentru a crea tabele în sine. Și în director date Sunt stocate datele necesare pentru completarea inițială a tabelelor.


    Acum să ne uităm la codul din interiorul meu DBHelper pe care le folosesc în proiectele mele. În primul rând, variabilele de clasă și constructorul (fără surprize aici):

    Private static final String TAG = "RoadMap4.DBHelper"; String mDb = "db_"; String mData = "data_"; Context mContext; int mVersion; public DBHelper(Context context, String name, int version) ( super(context, nume, null, versiune); mContext = context; mVersion = versiune; )
    Acum metoda onCreateși aici devine mai interesant:

    @Override public void onCreate(SQLiteDatabase db) ( ArrayList tabele = getSQLTables(); pentru (String table: tables)( db.execSQL(table); ) ArrayList > dataSQL = getSQLDatas(); pentru (HashMap hm: dataSQL)( pentru (String table: hm.keySet())( Log.d(TAG, "inserat into " + table + " " + hm.get(table)); long rowId = db.insert(table, nul, hm.get(tabel)); ) ) )
    În mod logic este împărțit în două cicluri, în primul ciclu primesc o listă de instrucțiuni SQL pentru crearea unei baze de date și apoi le execut, în al doilea ciclu umplu deja tabelele create anterior cu date inițiale. Deci, pasul unu:

    Private ArrayList getSQLTables() (ArrayList tables = nou ArrayList<>(); ArrayList fișiere = noua ArrayList<>(); AssetManager assetManager = mContext.getAssets(); String dir = mDb + mVersion; încercați ( String listFiles = assetManager.list(dir); for (String fișier: listFiles)( files.add(file); ) Collections.sort(fișiere, nou QueryFilesComparator()); BufferedReader bufferedReader; String interogare; String line; pentru (Fișier șir: fișiere)( Log.d(TAG, „fișier db este „ + fișier); bufferedReader = nou BufferedReader (nou InputStreamReader(assetManager.open(dir + „/” + fișier))); interogare = „”; while ((linie = bufferedReader.readLine()) != null)( interogare = interogare + linie; ) bufferedReader.close(); tables.add(interogare); ) ) catch (IOException e) ( e.printStackTrace(); ) tabele de returnare; )
    Totul este destul de simplu aici, pur și simplu citim conținutul fișierelor și concatenăm conținutul fiecărui fișier într-un element de matrice. Vă rugăm să rețineți că sortez lista de fișiere, deoarece tabelele pot avea chei străine, ceea ce înseamnă că tabelele trebuie create într-o anumită ordine. Folosesc numerotarea în numele fișierelor și cu ajutorul ei sortez.

    Clasa privată QueryFilesComparator implementează Comparator ( @Override public int compară (Fișier șir1, șir fișier2) ( Întreg f2 = Integer.parseInt(file1.substring(0, 2)); Integer f1 = Integer.parseInt(file2.substring(0, 2)); return f2 .compareTo(f1); ) )
    Completarea tabelelor face să fie din ce în ce mai distractiv. Tabelele mele sunt umplute nu numai cu valori codificate, ci și cu valori din resurse și chei UUID (sper să ajung într-o zi la o versiune de rețea a programului meu, astfel încât utilizatorii mei să poată lucra cu date partajate). Structura fișierelor cu datele inițiale arată astfel:


    În ciuda faptului că fișierele mele au extensia sql, nu există niciun cod sql în interior, ci ceva de genul acesta:

    Priorități
    pri_id:UUID:UUID

    pri_name:string:normal
    pri_color:color:colorGreen
    pri_default:int:1
    priorități
    pri_id:UUID:UUID
    pri_object:string:object_task
    pri_name:string:hold
    pri_color:color:colorBlue
    pri_default:int:0
    priorități
    pri_id:UUID:UUID
    pri_object:string:object_task
    pri_name:string:important
    pri_color:color:colorRed
    pri_default:int:0
    priorități
    pri_id:UUID:UUID

    pri_name:string:normal
    pri_color:color:colorGreen
    pri_default:int:1
    priorități
    pri_id:UUID:UUID
    pri_object:string:obiect_proiect
    pri_name:string:hold
    pri_color:color:colorBlue
    pri_default:int:0
    priorități
    pri_id:UUID:UUID
    pri_object:string:obiect_proiect
    pri_name:string:important
    pri_color:color:colorRed
    pri_default:int:0

    Structura fișierului este astfel: fac un apel de funcție Despică(":")în raport cu o linie și dacă înțeleg că dimensiunea acesteia este 1, atunci aceasta înseamnă numele tabelului în care ar trebui să fie scrise datele. În caz contrar, sunt datele în sine. Primul câmp este numele câmpului din tabel. Al doilea câmp este tipul prin care determin ce trebuie să scriu chiar în acest domeniu. Dacă este un UUID, înseamnă că trebuie să generez o valoare UUID unică. Dacă șir înseamnă că trebuie să extrag o valoare șir din resurse. Dacă culoare, atunci din nou, trebuie să extrageți codul de culoare din resurse. Dacă int sau text, atunci pur și simplu convertesc această valoare în int sau String fără mișcări fizice. Codul în sine arată astfel:

    Private ArrayList > getSQLDatas() ( ArrayList > date = noua ArrayList<>(); ArrayList fișiere = noua ArrayList<>(); AssetManager assetManager = mContext.getAssets(); String dir = mData + mVersion; încercați ( String listFiles = assetManager.list(dir); for (String fișier: listFiles)( files.add(file); ) Collections.sort(files, new QueryFilesComparator()); BufferedReader bufferedReader; String line; int separator = 0 ; ContentValues ​​​​cv = null; Câmpuri șiruri de caractere; String nameTable = null; String packageName = mContext.getPackageName(); steag boolean = fals; HashMap hm; pentru (Fișier șir: fișiere)( Log.d(TAG, „fișierul db este „ + fișier); bufferedReader = nou BufferedReader(nou InputStreamReader(assetManager.open(dir + „/” + fișier))); while ((linie = bufferedReader.readLine()) != null)( câmpuri = line.trim().split(":"); if (fields.length == 1)( if (flag == true)( hm = new HashMap<>(); hm.put(nameTable, cv); date.add(hm); ) // nume tabel nameTable = line.trim(); cv = new ContentValues(); continua; ) else ( if (fields.equals("UUID"))( cv.put(fields, UUID.randomUUID().toString()); ) else if (fields.equals("culoare") || fields.equals( „șir”))( int resId = mContext.getResources().getIdentifier(câmpuri, câmpuri, pachetNume); Log.d(TAG, câmpuri + " " + resId); comutați (câmpuri) (case „culoare”: cv. put(câmpuri, resId); break; case „șir”: cv.put(fields, mContext.getString(resId)); break; implicit: break; ) ) else if (fields.equals(„text”))( cv .put(câmpuri, câmpuri); ) else if (fields.equals("int"))( cv.put(fields, Integer.parseInt(fields)); ) ) flag = adevărat; ) bufferedReader.close(); ) ) catch (IOException e) ( e.printStackTrace(); ) returnează date; )