Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Relacyjne Bazy Danych Wykład 02 Wojciech St. Mościbrodzki

Podobne prezentacje


Prezentacja na temat: "Relacyjne Bazy Danych Wykład 02 Wojciech St. Mościbrodzki"— Zapis prezentacji:

1 Relacyjne Bazy Danych Wykład 02 Wojciech St. Mościbrodzki wojmos@wojmos.com

2 Encje - przypomnienie Encja i encja-typ Przykłady:
każda unikalna (identyfikowalna) rzecz posiada atrybuty (cechy) przyjmujące określone wartości zbiór wartości atrybutu, nazywamy dziedziną encja (ściślej: encja-typ) to zbiór wszystkich encji identyfikowalnych przez ten sam zbiór atrybutów Przykłady: Jan Kowalski = encja cechy (atrybuty) Jana Kowalskiego = {wzrost, kolor oczu, imię, nazwisko} wartości atrybutów Jana Kowalskiego = {174, zielony, Jan, Kowalski} student (np. Jan Kowalski) = encja (ściślej: encja-typ) atrybut encji student: kolor oczu wartości atrybutu kolor oczu (dziedzina atrybutu) = {zielony, piwny, niebieski}

3 Encja - identyfikowalność
klucz kandydujący nieformalnie: atrybuty, których wartości identyfikują encje formalnie: to każdy zbiór atrybutów, który posiada dwie własności: wartości atrybutów są różne dla każdej encji usunięcie dowolnego atrybutu ze zbioru, sprawia, że warunek powyżej nie jest spełniony klucz główny wybrany (arbitralnie) jeden z kluczy kandydujących Klucze kandydujące: {imię}, {semestr, miasto}, {semestr, wiek} itd.

4 Diagram Związków Encji (ERD)
ERD służy do modelowania danych i związków pomiędzy nimi klucz zew. ENCJA atrybut klucz wyliczony Formalnie – na diagramach ER NIE OZNACZAMY TYPÓW DANYCH encja klucz główny atrybut

5 Diagram Związków Encji (ERD) - RELACJE
ERD służy do modelowania danych i związków pomiędzy nimi różne notacje (różni autorzy) struktura pól krotność relacji Klasyczna Krucza Stopka Notacja Chena 1 1 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 1 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 N 1 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 N N ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 Notacja J. Martina Notacja Barkera ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2

6 Diagram Związków Encji (ERD) – przypadki szczególne
Encja słaba encja słaba to taka encja, która nie jest rozróżnialna (identyfikowalna) przez własne atrybuty (wymaga klucza zewnętrznego) nagłówek faktury linia faktury numer data towar ilość Asocjacja (encja asocjacyjna, relacja wiele-do-wiele) asocjacja to relacja wiele-do-wiele (posiada cechy encji, może mieć atrybuty) w bazie danych odpowiada jej osobna tabela, zwana tabelą pośredniczącą) ENCJA 1 ENCJA2 ENCJA 1 ENCJA2 ENCJA 1 ENCJA2

7 Klasyfikacja relacji Kryterium krotności (dla relacji binarnych):
jeden-do-jeden jeden-do-wiele wiele-do-wiele Kryterium "-narności" unarne binarne trynarne większe

8 Model logiczny danych (ERD) a model fizyczny
zawiera informacje o encjach i relacjach nie zawiera informacji o typach danych (np. na poziomie SQL) jest niezależny od bazy danych Model fizyczny: zawiera informacje o encjach, relacjach i typach określa typy danych jest związany z implementacją

9 Podstawy SQL

10 Programowanie w SQL SQL nie jest językiem programowania – jest językiem zapytań SEQEL System R (IBM) RDMS (MIT) quel Ingres (Berkley) '70s SQL Oracle (Oracle) SQL-86 (standard ANSI): w kierunku wieloplatformowości '87 SQL-92: kursory, ALTER, DATA, TIMESTAMP, VARCHAR... '90s SQL-1999 (SQL3): triggery, BOOLEAN, control-flow (IF...) ... SQL-2003: funkcje okien danych, XML, MERGE SQL-2006: rozbudowa XML, funkcje WWW SQL-2008: INSTEAD, TRUNCATE... '00s

11 Programowanie z użyciem SQL
Metody na "uprogramowienie" SQL: Embedded SQL (SQL osadzony): konieczny odpowiedni kompilator wartości przenoszone przez uwspólnione zmienne (widziane w SQL i w języku programowania) Modular SQL (moduły SQL dla języków programowania) konieczne są odpowiednie moduły dołączane przekazywanie wartości zależne od języka Dynamic SQL (część "programistyczna" w innym języku – np. PHP) wymaga odpowiednich konstrukcji językowych Programming Extensions for SQL (rozbudowa składni SQL – poza standardem ANSI) wymaga serwera SQL rozumiejące "rozbudowaną" składnię np. PL/SQL (Oracle), PSM (MySQL), PL PSM (PostgreSQL)

12 Podstawy SQL i pracy z klientem MySQL
Polecenia klienta MySQL: są specyficzne dla dialektu MySQL - NIE NALEŻĄ do standardu SQL w rzeczywistości są poleceniami, które klient "tłumaczy" na zwykłe zapytania SELECT i kieruje do systemowej bazy danych mysql> show databases; | Database | | information_schema | | gcs | | kardio | | mysql | | wojmos | mysql> show tables; | Tables_in_wojmos | | czlowiek | | faktura | mysql> explain czlowiek; | Field | Type | Null | Key | Default | Extra | | imie | char(30) | YES | | NULL | | | nazwisko | char(50) | YES | | NULL | |

13 Podstawowe typy zapytań
Zapytania wyszukujące dane: SELECT Zapytania modyfikujące dane: INSERT DELETE UPDATE Zapytania modyfikujące bazę danych i jej struktury: CREATE DROP ALTER GRANT / REVOKE Pseudozapytania MySQL: SHOW, EXPLAIN, DESCRIBE

14 CREATE DATABASE Polecenie CREATE służy do tworzenia baz:
CREATE {DATABASE} [IF NOT EXISTS] db_name[create_specification] create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name W dokumentacji obowiązują następujące konwencje: {xxx} – xxx musi wystąpić xxx | yyy – musi wystąpić xxx ALBO yyy [xxx] – xxx może wystąpić (albo i nie) zzz: - wyjaśnienie symbolu zzz [ xxx | yyy ] – może wystąpić xxx ALBO yyy albo nic { xxx | yyy } – musi wystąpić xxx ALBO yyy

15 CREATE TABLE Polecenie CREATE TABLE służy do tworzenia tablic:
CREATE TABLE {tablica} [IF NOT EXISTS] (specyfikacja) [opcje] specyfikacja: nazwa_kolumny, definicja_kolumny definicja_kolumny: typ [NULL|NOT NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [reference_definition] CREATE TABLE player ( ID int auto_increment primary key, name char(50) NOT NULL, dex int, str int, cha int );

16 Podstawowe typy danych SQL
Typy danych języka SQL: numeryczne: całkowite: INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT rzeczywiste: FLOAT(M,D), DOUBLE(M,D), DECIMAL(M,D) logiczne: BOOL, znakowe: łańcuchy krótkie: CHAR, VARCHAR obiekty tekstowe: TEXT daty i czasu: czasowe: DATE, TIME, DATETIME, YEAR specjalne: znacznik czasowy: TIMESTAMP obiekt binarny: BLOB wyliczeniowy: ENUM

17 Zapytania typu SELECT Typowy SELECT składa się z: wskazania kolumn
mysql> select distinct imie from czlowiek where imie like 'jan%'; | imie | | Jan | | Janusz | Typowy SELECT składa się z: wskazania kolumn wskazania tabeli FROM filtru rekordów WHERE warunek żądania sortowania ORDER BY select imie from czlowiek; | imie | | Roman | mysql> select * from czlowiek; | imie | nazwisko | | Roman | Pipokucki | | Roman | Popopizacki | mysql> select * from czlowiek order by imie DESC, nazwisko ASC; | imie | nazwisko | | Roman | Kukurocki | | Roman | Kupikucki |

18 Zapytania typu INSERT Zapytania typu INSERT dodają do tablicy dane
[LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... insert into player (name, dex, str, cha) values ('Raven',18,8,10); Query OK, 1 row affected (0.02 sec) insert into czlowiek values ('Jan','Nowak'); Query OK, 1 row affected (0.02 sec) Specjalna forma INSERT (SELECT AS INSERT): insert into player (name) select imie from czlowiek;

19 Zapytania typu UPDATE UPDATE służy do aktualizacji (modyfikacji) rekordów UWAGA1: WHERE nie jest konieczne do działania UPDATE UWAGA2: brak WHERE może przynieść opłakane skutki UPDATE table SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] update player set dex=20 where name like 'Raven'; update pracownik set placa=placa+200 where name like 'Kowalski'; update pracownik set placa=placa+200 where ID=23445; update pracownik set placa=placa+200;

20 Polecenie ALTER służy do zarządzania strukturą
ALTER TABLE tbl_name alter_specification [, alter_specification] ... alter_specification: ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ] | ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_type] | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition | CHANGE [COLUMN] old_col_name new_col_name column_definition | MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name] | DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP {INDEX|KEY} | RENAME [TO] new_tbl_name | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]

21 Relacje a tabele relacja 1-do-1 relacja 1-do-

22 Relacja jeden-do-wiele – realizacja w bazie danych


Pobierz ppt "Relacyjne Bazy Danych Wykład 02 Wojciech St. Mościbrodzki"

Podobne prezentacje


Reklamy Google