Wymagania do projektu i realizacji baz danych:

Slides:



Advertisements
Podobne prezentacje
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Advertisements

Projektowanie bazy danych
Relacyjny model danych
SQL – Strukturalny język zapytań
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
BD-LAB4 Wojciech Pieprzyca
Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
WPROWADZENIE DO BAZ DANYCH
MS Access 2003 Kwerendy Paweł Górczyński.
Bazy danych II Instrukcja INSERT Piotr Górczyński 25/08/2001.
25/08/ Bazy danych II Piotr Górczyński Instrukcja UPDATE.
MS Access 2000 Normalizacja Paweł Górczyński 2005.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
POWTÓRZENIE Techniki zbierania informacji : Analiza dokumentacji
POWTÓRZENIE definicja danych; opcje definicji kolumn;
POWTÓRZENIE Normalizacja: Pojęcia: redundancja danych;
POWTÓRZENIE Główne elementy składni SQL: Zasady ogólne
POWTÓRZENIE Kontrola integralności danych; dane wymagane;
Procedury i funkcje Tworzenie: CREATE
POWTÓRZENIE Dane; Baza danych - BD;
POWTÓRZENIE Metodologia : Pojęcia:
Język SQL (Structured Query Language) DDL (Data Definition Language)
Zadania Bazy danych.
Teoria relacyjnych baz danych
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
SQL – Structured Query Language (3)
MySQL – ODBC - ACCESS.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
SQL – Structured Query Language (1)
Systemy baz danych Wykład 1
MySQL bazy danych dla witryny
SQL - Structured Query Language
Jak zacząć w MS SQL? USE master; GO IF DB_ID (Nbaza') IS NOT NULL DROP DATABASE baza; GO CREATE DATABASE baza; GO USE baza; GO.
Wybrane zagadnienia relacyjnych baz danych
WPROWADZENIE DO BAZ DANYCH
Komendy SQL do pracy z tabelami i bazami
SQL – część II.
Projektowanie bazy danych
Łódź 2008 Banki danych WYKŁAD 2 dr Łukasz Murowaniecki T-109.
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Systemy Baz Danych Wykład III
Michał Krawczykowski kl. IIIB
Definiowanie kluczy w tabelach RBD
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat.
Projektowanie postaci formularza:
1 Metodologia : to kompleksowe podejście wykorzystujące procedury, techniki, narzędzia oraz metody tworzenie dokumentacji służące realizacji i uproszczeniu.
Bazy Danych Wprowadzenie
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
1 SYSTEMY BAZ I HURTOWNI DANYCH Wstęp. 2 Literatura: 1.„Podstawowy wykład z systemów baz danych” – J.Ullman, J.Widom, WNT, „Systemy baz danych.
Oracle Data Modeler (4.1). Aplikacja Wymagania biznesowe Tworzenie systemu informacyjnego Procesy Informacje Analiza Projektowanie Browser: Hollywood.
1 Definicja danych: Do utworzenia tabeli służy instrukcja CREATE TABLE, wymagająca podania nazwy tworzonej tabeli, nazwy każdej kolumny w tej tabeli, typu.
Temat: Tworzenie bazy danych
1 Instrukcja SELECT : SELECT[DISTINCT  ALL] {*  [wyrażenie_kolumnowe [AS nowa_nazwa]],[…]} FROMNazwaTabeli [alias],[...] [WHEREwarunek_selekcji_wierszy]
Wybieranie wierszy: 1 Warunek WHERE Rodzaje warunków: - liczbowe - liczbowe z zakresu - znakowe.
Widoki (views) - Perspektywy:
SYSTEMY BAZ I HURTOWNI DANYCH
Technologie Informacyjne Bazy danych
Własności relacji: Baza danych jest zbiorem relacji, o następujących własnościach: każda relacja w bazie danych jest jednoznacznie określona przez swoją.
Zapis prezentacji:

Wymagania do projektu i realizacji baz danych:

Projekt logiczny bazy danych: Przykładowy diagram: Właściciel prywatny WłaścicielNr Wynajęcie WynajęcieNr Nieruchomość NieruchomośćNr Klient KlientNr Personel PersonelNr Biuro BiuroNr Ma Oferuje Posiada Wynajęty Przez Nadzoruje Ogląda Wynajmuje

Fragment słownika danych przedstawiający opis atrybutów: Nazwa zbioru encji Atrybuty Opis Typ danych i długość Wartości puste Wielowar-tościowy ... Biuro biuroNr miasto ulica kod Jednoznacznie identyfikuje biuro Nazwa miasta Nazwa ulicy z numerem domu Kod pocztowy lokalizacji łańcuch, długość maks. 4 łańcuch, długość maks. 15 łańcuch, długość maks. 6 Nie Tak Personel personelNr imięNazwisko imię nazwisko stanowisko płeć dataUr pensja Jednoznacznie identyfikuje pracownika   Imię pracownika Nazwisko pracownika Nazwa zajmowanego stanowiska Płeć pracownika Data urodzenia pracownika Zarobki pracownika Powiązanie z biurem w którym pracownik pracuje łańcuch, długość maks. 10 łańcuch, długość 1 (M lub K) data liczba, Integer bez znaku Nieruchomość nieruchomośćNr typ pokoje czynsz wlascicielNr Jednoznacznie identyfikuje nieruchomość do wynajęcia Typ nieruchomości Ilość pokoi w nieruchomości Wysokość czynszu za wynajęcie Powiązanie z właścicielem Powiązanie z biurem Powiązanie z pracownikiem

Klucze relacji: Klucz główny - to jedna lub więcej kolumn tabeli, w których wartości jednoznacznie identyfikują każdy wiersz w tabeli. Każda relacja musi mieć klucz główny. Dzięki temu możemy zapewnić, aby wiersze nie powtarzały się w relacji. Klucz kandydujący to kolumna lub zbiór kolumn, które mogą występować jako jednoznaczny identyfikator wierszy w tabeli. W każdej relacji może istnieć wiele kluczy kandydujących. Klucz główny jest wybierany ze zbioru kluczy kandydujących. Klucz obcy - jest kolumną lub grupą kolumn tabeli, która czerpie swoje wartości z tej samej dziedziny co klucz główny tabeli powiązanej z nią w bazie danych.

Więzy integralności: wymagana obecność danych (NOT NULL); więzy dziedzin atrybutów (dopuszczalny zbiór wartości atrybutu, dopuszczalny zakres długości i format atrybutu); integralność encji: każda tabela musi posiadać klucz główny, a wartości klucza głównego muszą być w ramach tabeli unikalne i nie równe NULL; integralność referencyjna: każda wartość klucza obcego może być albo równa jakiejś wartości klucza głównego występującej w tabeli powiązanej, lub (ewentualnie) NULL; więzy ogólne (dodatkowe warunki poprawności danych określone przez użytkowników lub administratorów bazy danych).

Integralność referencyjna pociąga za sobą konieczność określenia reguły postępowania w wypadku usuwania wiersza z tabeli powiązanej, co mogłoby unieważnić niektóre wartości kluczy obcych w tabelach do niej się odnoszących: Ograniczone usuwanie (Restricted). Podejście ostrożne – nie dopuszcza do usuwania rekordu nadrzędnego, jeśli istnieją rekordy podrzędne. Kaskadowe usuwanie (Cascades). Podejście ufne – przy usuwaniu rekordu nadrzędnego usuwa także rekordy podrzędne. Izolowane usuwanie (Isolated). Podejście wyważone – usuwa jedynie rekord nadrzędny, nieważne wartości kluczy obcych ulegają zastąpieniu przez NULL.

Schemat relacyjnej bazy danych (Biuro_nieruchomości): Relacyjna baza danych składa się z pewnej liczby znormalizowanych relacji, np.: Biuro (biuroNr, ulica, miasto, kod pocztowy) Personel (pracownikNr, imię, nazwisko, stanowisko, płeć, dataUr, pensja, biuroNr) Nieruchomość (nieruchomośćNr, ulica, miasto, kod pocztowy, typ, pokoje, czynsz, właścicielNr, pracownikNr, biuroNr) Klient (klientNr, imię, nazwisko, adres, telefon, preferencje, maksCzynsz) Właściciel (właścicielNr, imię, nazwisko, adres, telefon) Wizyta (klientNr, nieruchomośćNr, dataWizyty, uwagi) Rejestracja (klientNr, biuroNr, pracownikNr, dataRejestracji) Wynajęcie (umowaNr, nieruchomośćNr, klientNr, czynsz, formaPłatności, kaucja, zapłacona, od, do, okres)

mysql> CREATE DATABASE IF NOT EXISTS biuro DEFAULT CHARACTER SET cp1250 DEFAULT COLLATE cp1250_polish_ci; Query OK, 1 row affected (0.02 sec) mysql> SHOW DATABASES; +--------------------+ | Database | | information_schema | | biuro | | test | 4 rows in set (0.00 sec) mysql>

Wyświetlanie zapisu tworzenia bazy: mysql> SHOW CREATE DATABASE biuro; +----------+---------------------------------------------+ | Database | Create Database | | biuro | CREATE DATABASE `biuro` /*!40100 DEFAULT CHARACTER SET cp1250 COLLATE cp1250_polish_ci */ | 1 row in set (0.00 sec) Inny sposób prezentacji wyniku: mysql> SHOW CREATE DATABASE biuro\G ************************* 1. row ************************* Database: biuro Create Database: CREATE DATABASE `biuro` /*!40100 DEFAULT CHARACTER SET cp1250 COLLATE cp1250_polish_ci */ 1 row in set (0.01 sec) mysql>

Wprowadzanie poleceń z pliku : Plik z odpowiednimi poleceniami zapisujemy w katalogu bin naszego MySQL'a np. pod nazwą biuro.sql. Uruchamiamy komendą: SOURCE biuro.sql Jeżeli plik zapisaliśmy w innym miejscu niż katalog bin np. na pulpicie komenda wtedy wygląda np. tak: SOURCE c:\windows\pulpit\biuro.sql

Przykładowa zawartość: CREATE DATABASE IF NOT EXISTS Biuro DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_polish_ci; CONNECT biuro; CREATE TABLE IF NOT EXISTs biuro ( biuroNr varchar(4) NOT NULL, ulica varchar(25) NOT NULL, miasto varchar(25) NOT NULL, kod varchar(6) NOT NULL, PRIMARY KEY (biuroNr) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; INSERT INTO biuro (biuroNr,ulica,miasto,kod) VALUES ('B001','Piękna 46','Białystok','15-900'); INSERT INTO biuro VALUES ('B002','Cicha 56',‘Łomża', '18-400');

mysql> source biuro.sql Query OK, 1 row affected (0.02 sec) Connection id: 1 Current database: biuro Query OK, 0 rows affected (0.06 sec) Query OK, 1 row affected (0.03 sec) mysql>

Wyświetlenie zawartości tabeli: mysql> SELECT * FROM biuro; +---------+-----------+-----------+--------+ | biuroNr | ulica | miasto | kod | | B001 | Piękna 46 | Białystok | 15-900 | | B002 | Cicha 56 | Łomża | 18-400 | 2 rows in set (0.00 sec)

mysql> INSERT INTO biuro VALUES ('B003','Mała 63','Białystok','15-900'), ('B004','Miodowa 32','Grajewo','19-300'), ('B005','Dobra 22',‘Łomża','18-400'), ('B006','Słoneczna 55','Białystok','15-900'), ('B007','Akacjowa 16','Augustów','16-300'); Query OK, 1 row affected (0.05 sec)   mysql> SELECT * FROM biuro; +---------+---------------+------------+--------+ | biuroNr | ulica | miasto | kod | | B001 | Piękna 46 | Białystok | 15-900 | | B002 | Cicha 56 | Łomża | 18-400 | | B003 | Mała 63 | Białystok | 15-900 | | B004 | Miodowa 32 | Grajewo | 19-300 | | B005 | Dobra 22 | Łomża | 18-400 | | B006 | Słoneczna 55 | Białystok | 15-900 | | B007 | Akacjowa 16 | Augustów | 16-300 | 7 rows in set (0.00 sec)

Tworzymy drugą powiązaną kluczem obcym tabelę: mysql> CREATE TABLE IF NOT EXISTS personel ( -> personelNr varchar(4) NOT NULL, -> imie varchar(25) NOT NULL, -> nazwisko varchar(25) NOT NULL, -> stanowisko varchar(25) NOT NULL, -> plec enum('K','M') NOT NULL, -> dataUr date NOT NULL, -> pensja smallint(4) unsigned NOT NULL, -> biuroNr varchar(4) NOT NULL, -> PRIMARY KEY (personelNr), -> KEY biuroNr (biuroNr), -> CONSTRAINT biuroNr FOREIGN KEY (biuroNr) REFERENCES biuro (biuroNr) ON UPDATE CASCADE ON DELETE CASCADE -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; Query OK, 0 rows affected (0.08 sec) KEY `biuroNr` (`biuroNr`) – indeksy do kluczy obcych są tworzone w MySQL automatycznie

Wprowadzanie danych z pliku w MySQL: LOAD DATA INFILE 'plik' [ REPLACE | IGNORE ] INTO TABLE nazwa_tabeli [CHARACTER SET charset_name] [ FIELDS [ TERMINATED BY '\t'] [ [OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '\\']] [ LINES [STARTING BY ''] [TERMINATED BY '\n']] [ IGNORE number LINES ] [(pole1, pole2,...)] Domyślnie separatorem pól jest znak tabulacji (\t), a każdy rekord zakończony jest znakiem nowej linii (\n).

STARTING BY – od jakich znaków zaczyna się linia w naszym pliku (ignorujemy niektóre znaki na początku linii); IGNORE number LINES – ignorujemy kilka początkowych linii np. nagłówka; Opcje REPLACE i IGNORE dotyczą sposobu potraktowania rekordów z pliku, których wprowadzenie spowodowałoby duplikację wartości kluczy UNIQUE (w tym klucza głównego). Przy opcji REPLACE nowo wczytany rekord zastępuje wiersze o kolidujących wartościach kluczy, przy IGNORE - rekord taki zostanie zignorowany (pominięty).

W wypadku, gdy nie podano żadnej z tych opcji, kolizja wartości klucza wywoła błąd i spowoduje przerwanie wczytywania danych. Podanie nazw pól służy przyporządkowaniu kolejnych pól rekordów kolumnom tabeli. Zazwyczaj można pominąć wszystkie opcje dotyczące separatorów pól i rekordów, jeżeli plik wejściowy został właściwie przygotowany.

Np. dla pliku zlokalizowanego C:\MySQL5\data\biuro\personel Np. dla pliku zlokalizowanego C:\MySQL5\data\biuro\personel.txt o zawartości: SA8 Katarzyna Morawska kierownik K 1971-5-6 1700 B007 SA9 Maria Hojna asystent K 1970-2-19 900 B007 SB20 Sabina Bober dyrektor K 1940-6-3 2400 B003 SB21 Daniel Frankowski kierownik M 1958-3-24 1800 B003 SB22 Małgorzata Kowalska asystent K 1972-3-15 1000 B003 SB23 Anna Biały asystent K 1960-11-10 1200 B003 SB30 Katarzyna Michalska dyrektor K 1960-11-17 2500 B006 SB31 Dawid Piotrowski asystent M 1975-3-22 1100 B006 SB32 Małgorzata Plichta asystent K 1971-10-3 1200 B006 SG20 Karolina Mucha dyrektor K 1953-3-3 2200 B004 SG21 Piotr Cybulski asystent M 1974-12-6 1300 B004 SL20 Paweł Nowak kierownik M 1962-2-2 1500 B002 SL21 Paweł Kowalski asystent M 1969-5-5 1000 B002 SL22 Monika Munk asystent K 1977-7-26 1100 B002 SL30 Jan Wiśniewski dyrektor M 1945-10-1 3000 B005 SL31 Julia Lisicka asystent K 1965-7-13 900 B005 SL32 Michał Brzęczyk asystent M 1959-3-15 1000 B005

zapiszemy: mysql>LOAD DATA INFILE ‘personel.txt' INTO TABLE personel; lub w innej lokalizacji: mysql>LOAD DATA INFILE 'C:/MySQL5/bin/personel.txt‘ INTO TABLE personel; W MySQL jako znaku separacji w ścieżce dostępu używamy '/' lub '\\' mysql>LOAD DATA INFILE 'C:\\MySQL5\\bin\\ personel.txt' INTO TABLE personel;