PRZESTRZENNE BAZY DANYCH WYKŁAD 2
Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie danych i utrzymanie związków między nimi (D. Borycki et al., 2014). W relacyjnych bazach danych dane zebrane są w tabelach składających się z kolumn (pól - 2) oraz wierszy (rekordów 1). Pola mają różne typy danych, takie jak tekst, liczby, daty i hiperłącza. Jedna baza danych najczęściej składa się z wielu połączonych ze sobą tabel. Przy projektowaniu bazy danych zawsze dążymy do redukcji nadmiarowych danych poprzez rozmieszczenie ich w osobnych tabelach. D. Borycki, J. Matulewski, M. Pakulski, M. Grabek, 2014: ASP.NET MWC. Kompletny przewodnik dla programistów interaktywnych aplikacji internetowych w Visual Studio, HELION Gliwice
Zalety relacyjnej bazy danych Prostota relacyjne bazy danych oparte są na tabelach (wierszach i kolumnach), dlatego są łatwe do zrozumienia. Szybki dostęp do danych. Wyszukiwanie danych spełniających zdefiniowane warunki. Niezależność danych tabele można w łatwy i szybki sposób modyfikować. Łatwe usuwanie błędów usuwanie i wycofywanie błędów jest proste jeśli pojawią się błędy z danym zapytaniem. Współbieżność - z bazy może korzystać równocześnie wielu użytkowników. Dla użytkowników można definiować uprawnienia. Zapewnia bezpieczne przechowywanie danych.
Tabele: W relacyjnych bazach danych: Tabela powinna mieć unikatową nazwę w całej bazie. Każda kolumna tabeli powinna posiadać nazwę unikatową w danej tabeli i mieć zdefiniowany typ danych. Każda komórka powinna zawierać wartość niepodzielną (atomową). Każda tabela powinna mieć zdefiniowany klucz. Wiersze w tabeli nie mogą się powtarzać. Kolejność wierszy i kolumn nie ma znaczenia. Tabela musi się składać z minimum jednej kolumny. Źródło: http://www.teacher.webd.pl/kurs_mysql
Relacja jest logicznym połączeniem między dwiema tabelami mającymi wspólne pole. Pola będące częścią relacji tabel są określane jako klucze. Klucz może składać się z jednego lub więcej pól. Istnieją dwa rodzaje kluczy: a) Klucz podstawowy (1) - tabela może mieć tylko jeden klucz podstawowy. Klucz podstawowy pozwala jednoznacznie zidentyfikować każdy rekord przechowywany w tabeli. b) Klucz obcy (2) - tabela może mieć jeden lub więcej kluczy obcych. Klucz obcy zawiera wartości odpowiadające wartościom w kluczu podstawowym innej tabeli.
Typy relacji: a) Relacja jeden-do-jednego - każdy rekord w tabeli A może mieć tylko jeden dopasowany rekord z tabeli B, i tak samo każdy rekord w tabeli B może mieć tylko jeden dopasowany rekord z tabeli A. a) Relacja jeden-do-wielu - rekord w tabeli A może mieć wiele dopasowanych do niego rekordów z tabeli B, ale rekord w tabeli B ma tylko jeden dopasowany rekord w tabeli A a) Relacja wiele-do-wielu - rekord w tabeli A może mieć wiele dopasowanych do niego rekordów z tabeli B i tak samo rekord w tabeli B może mieć wiele dopasowanych do niego rekordów z tabeli A. Jest to możliwe tylko przez zdefiniowanie trzeciej tabeli C (nazywanej tabelą łącza), której klucz podstawowy składa się z dwóch pól kluczy obcych z tabel A i B. Źródło rysunków: http://www.teacher.webd.pl/kurs_mysql/k_2_2_3.php
Przykładowa relacyjna baza danych
SQL (ang. Structured Query Language ) - strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych. SQL został opracowany w latach 70. w firmie IBM. W SQL: Konstrukcja zapytania jest zbliżona do języka naturalnego. Nie rozróżniamy małych i wielkich liter. Każde polecenie powinno być zakończone średnikiem. Ignorowane są znaki końca linii. Zapytania możemy zaliczyć to 3 kategorii: - DML (ang. Data Manipulation Language) - DDL (ang. Data Definition Language) - DCL (ang. Data Control Language)
Przykładowa relacyjna baza danych
Tworzenie (CREATE TABLE) i uzupełnianie (INSERT INTO) tabeli CREATE TABLE nazwa_tabeli (nazwa_pola1 typ_pola1, nazwa_pola2 typ_pola2,... nazwa_polan typ_polan, PRIMARY KEY(nazwa_polaX)); CREATE TABLE AUTORZY ( AuID INT(5) NOT NULL, Imię CHAR(20), Nazwisko CHAR(50) NOT NULL, Telefon CHAR, PRIMARY KEY (AuID) ); INSERT INTO AUTORZY (AuID, Imię, Nazwisko, Telefon) VALUES (1, 'Jane', Austen 111-11-11 ); Każda tabela musi posiadać co najmniej jedno pole, dodatkowo musi posiadać co najmniej jedno pole, które jednoznacznie identyfikuje wiersz w tabeli (PRIMARY KEY - klucz główny). Najpopularniejsze typy pól: char(x) - ciąg znaków o maksymalnej długości x, gdzie x nie może być większy od 255 text - tekstowy ciąg znaków o długości ograniczonej przez pamięć twojego serwera INT - liczba całkowita z przedziału -2147483647 do 2147483647 Real - Liczbowy typ danych ze zmienną dokładnością year - rok, jeśli zostanie podany zły, jego wartość zmieni się w 0000 decimal(x, y) - liczba dziesiętna, gdzie x oznacza maksymalną liczbę cyfr, a y maksymalną liczbę cyfr po przecinku
Usunięcie tabeli DROP TABLE nazwa_tabeli; Dodawanie / usuwanie / modyfikowanie kolumny (pola) ALTER TABLE nazwa_tabeli ADD nazwa_pola typ_pola; ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_pola; ALTER TABLE nazwa_tabeli ALTER COLUMN nazwa_pola typ_pola2;
Selekcja SELECT * FROM Autorzy;
Selekcja z ograniczeniem SELECT Tytuł FROM Książki WHERE Cena > 50;
Operatory logiczne
Operatory logiczne
Operatory logiczne
Operatory logiczne
Usunięcie wierszy w tabeli DELETE FROM nazwa_tabeli WHERE warunek; Usunięcie wszystkich wierszy: DELETE * FROM nazwa_tabeli; Usunięcie wybranych wierszy: DELETE FROM table WHERE value BETWEEN 20 AND 80;
Operator konkatenacji ciągów znaków
GROUP BY