1. WSTĘP Baza danych (komputerowa) składa się z danych oraz programu komputerowego wyspecjalizowanego do gromadzenia i przetwarzania tych danych. (nw. formalnie systemem zarządzania bazą danych) Bazy danych operują głównie na danych tekstowych i liczbowych, ale również danych binarnych typu: grafika, muzyka itp. Podział ze wzgędu na struktury danych: 1. bazy proste - każda tablica danych jest samodzielnym dokumentem i nie może współpracować z innymi tablicami. Do baz tego typu należą liczne programy typu - książka telefoniczna, książka kucharska, spis książek, kaset lub płyt 2. bazy relacyjne dane są w postaci relacji (czyli przedstawienie tabelaryczne) 3. bazy obiektowe - OBD pozwalaja na przechowywanie danych o dowolnej strukturze zdefiniowanej przez użytkownika (klasy obiektow) 4. mieszane 5. strumieniowe bazy danych - w której dane są przedstawione w postaci zbioru strumieni danych
Główne idee i założenia modelu relacyjnego - Edgar F. Codd, lata 70-80 model relacyjny oparty jest na jednej podstawowej strukturze danych - relacji. (tabela, zbudowana z wierszy i kolumn) każda relacja w bazie danych jest jednoznacznie określona przez swoją nazwę. każda kolumna w relacji ma jednoznaczną nazwę (w ramach tej relacji). kolumny relacji tworzą zbiór nieuporządkowany. Kolumny nazywane bywają również atrybutami. wszystkie wartości w danej kolumnie muszą być tego samego typu. Zbiór możliwych wartości nazywamy domeną (dziedziną) również wiersze relacji tworzą nieuporządkowany zbiór; w szczególności, nie ma powtarzających się wierszy. Wiersz relacji nazywa się też krotką (w modelu matematycznym) lub rekordem. każde pole (przecięcie wiersza z kolumną) zawiera wartość atomową z dziedziny określonej przez kolumnę. Brakowi wartosci odpowiada wartość specjalna NULL każda relacja zawiera klucz główny - kolumnę (lub kolumny), której wartości jednoznacznie identyfikują wiersz (a więc w szczególności nie powtarzają się). Wartością klucza głównego nie może być NULL. W teoretycznym opisie modelu operacje na danych definiuje się w terminach tzw. algebry relacyjnej. Operatory algebry relacyjnej mają za argumenty jedną lub więcej relacji, a wynikiem ich działania zawsze jest też relacja. (Operacje to: selekcja, rzut, iloczyn kartezjański, złączenie, suma, przecięcie, różnica.)
2. SQL (Structured Query Language) - strukturalny język zapytań pierwotnie zaaprojektowany jako język do formułowania zapytań, oparty na rachunku relacyjnym obecnie jest uniwersalnym interfejsem do większości systemów zarządzania bazami danych, tj. do wszelkich operacji dotyczących definicji danych, dostępu do i ich modyfikacji, jak również czynności administracyjnych istnieje szereg standardów normujących postać języka SQL, m. in. rok 1986: SQL-86 pierwszy standard ANSI rok 1992: SQL-92 (tzw SQL2) uściślenie standardu 2003: SQL-2003 wprowadzenie m.in. obsługi XML-a 2011: SQL:2011 aktualny standard ANSI. żadna z implementacji nie trzyma się ściśle żadnej z tych norm, zarazem pomijając pewne elementy specyfikacji, jak i oferując niestandardowe rozszerzenia. Podział języka SQL: - wybieranie i manipulowanie danymi (DML Data Manipulation Language) używany w celu pobierania i modyfikacji danych (dodawania, usuwania i zmian); polecenia SELECT, INSERT, DELETE, UPDATE,... - definiowanie danych (DDL - Data Definition Language) używany w celu tworzenia i utrzymania struktury bazy danych tzn. do tworzenia, usuwania i modyfikowania tabel, perspektyw oraz innych obiektów bazy danych; CREATE, ALTER, DROP,... - zapewnienie bezpieczeństwa dostępu do danych (DCL Data Control Language) - używany do nadania odpowiednich uprawnień użytkownikom bazy danych; GRANT, REVOKE,...
Przykładowa baza danych EMPLOYEE C USTO MER C UST_NO INTEGER C USTO MER VAR C HAR (25) C O NTAC T_FIR ST VAR C HAR (15) C O NTAC T_LAST VAR C HAR (20) PHO NE_NO VAR C HAR (20) ADD R ESS_LINE1 VAR C HAR (30) ADD R ESS_LINE2 VAR C HAR (30) C ITY VAR C HAR (25) STATE_PROVINCE VARCHAR (15) C O UNTR Y VAR C HAR (15) PO STAL_CO D E VAR C HAR (12) O N_HO LD C HAR (1) C OU N TR Y = C OU N TRY C OU N TR Y = JOB_C OU N TR Y C O UNTR Y CO UNTRY VAR CHAR (15) CURRENCY VARCHAR (10) JO B JO B_CO D E VAR C HAR (5) JO B_GR AD E SMALLINT JO B_CO UNTRY VAR C HAR (15) JO B_TITLE VAR C HAR (25) MIN_SALAR Y NUMER IC(15,2) MAX_SALAR Y NUMER IC(15,2) JO B_REQ UIREMENT BLO B LANGUAGE_REQ VAR C HAR (15)[] JOB_CODE = JOB _ CODE JOB_GRADE = JOB _ GRADE JOB _ C OUN TR Y = JOB _ C OU NTR Y CUST_ NO = CUST_ NO SALES PO _NUMBER C HAR (8) C UST_NO INTEGER SALES_R EP SMALLINT EMP _ NO = SALES_REP DEPT_ NO = DEPT_ NO ORDER _STATUS VARCHAR (7) O R DER _DATE TIMESTAMP SHIP_D ATE TIMESTAMP D ATE_NEED ED TIMESTAMP PAID C HAR (1) Q TY_O R D ER ED INTEGER EMP _ NO = MNGR _ NO TO TAL_VALUE D EC IMAL(9,2) D ISC O UNT FLO AT ITEM_TYPE VAR C HAR (12) AGED C O MPUTED DEPARTMENT D EPT_NO CHAR (3) DEPARTMENT VARCHAR (25) HEAD _D EPT CHAR (3) DEPT_ NO = HEAD _ DEPT MNGR_NO SMALLINT BUDGET NUMERIC (15,2) LO CATIO N VAR C HAR (15) PHO NE_NO VAR C HAR (20) DEPT_ NO = DEPT_ NO EMPLO YEE EMP_NO SMALLINT FIR ST_NAME VARC HAR (15) LAST_NAME VARC HAR (20) PHO NE_EXT VARC HAR (4) HIR E_D ATE TIMESTAMP D EPT_NO C HAR (3) JO B_CO D E VARC HAR (5) JO B_GR AD E SMALLINT JOB_COUNTRY VARCHAR (15) SALAR Y NUMER IC (15,2) FULL_NAME C O MPUTED EMP _ NO = EMP _ NO SALAR Y_HISTO R Y EMP_NO SMALLINT C HANGE_D ATE TIMESTAMP EMP _ NO = EMP_ NO UPD ATER _ID VAR C HAR (20) O LD _SALAR Y NUMER IC(15,2) PERCENT_CHANGE DOUBLE PRECISION NEW _SALARY COMPUTED EMP _ NO = TEAM_ LEADER EMPLO YEE_PR O JEC T EMP_NO SMALLINT PRO J_ID C HAR(5) PROJ_ ID = PROJ_ ID PR O J_D EPT_BUDGET FISC AL_YEAR INTEGER PR O J_ID C HAR (5) D EPT_NO C HAR (3) Q UART_HEAD _C NT INTEGER [] PR O JEC TED_BUD GETNUMERIC (15,2) PROJ_ ID = PROJ_ ID PR O JEC T PR O J_ID CHAR (5) PR O J_NAME VAR C HAR (20) PR O J_D ESC BLO B TEAM_LEAD ER SMALLINT PR O DUC T VAR C HAR (12)
EMPLOYEE DEPARTMENT PROJECT