Null
Transkrypt
Null
E-BIZNES • E-biznes :działalność gospodarcza oparta na rozwiązaniach teleinformatycznych • pojęcie wprowadzone w 1995 przez IBM • obejmuje m.in. wymianę informacji między producentami, dystrybutorami i odbiorcami • określony nadawca komunikatu • Bill Gates: “ Zarządzanie informacją przesądza o tym, czy wygrasz czy stracisz.” obszary zastosowań • • • • • • • finanse i bankowość komunikacja zarządzanie kontaktami z klientami dystrybucja i logistyka marketing i promocje szkolenie zdalne handel elektroniczny. modele e-biznesu • B2B (ang. Business to Business) - giełdy, wielkie koncerny • B2C (ang. Business to Customer) -sklepy internetowe • C2C (ang. Customer to Customer) -handel indywidualny (np. aukcje) • C2B (ang. Customer to Business) -raczej niespotykany. korzyści • • • • finansowe przewaga pomysłu nad kapitałem tworzenie nowych branż tworzenie „mechanizmów pochodnych” (np. serwis snip). środki realizacji • • • • • • serwer wirtualny serwer domena łącze internetowe wiedza – „jak to zrobić” umiejętności - „jak to zrobić żeby się dobrze sprzedało” - „jak to zrobić, żeby dobrze wyglądało” architektura klient-serwer architektura typu „pure” (np. P2P) architektura klient-serwer + baza danych możliwe rozwiązanie • • • • • serwer: dowolny system linux'owy serwer WWW (np. Apache) PHP baza danych (np. MySQL) Możliwe jest podobne rozwiązanie pod Windows – ale jest kosztowne. bazy danych - cechy • trwałość • zgod ność z rzeczywistością • cechy brane pod uwagę przy projektowaniu kontrolowanie replikacji (unikanie redundancji) zapewnienie ochrony niezależność danych i procesów. bazy danych - projektowanie • model przyrostowy – Nie polecany, lecz czasem trudny do uniknięcia, tworzone są fragmenty bazy osobno dla różnych działów, wady : redundancja, brak obrazu całościowego, błędy • model zintegrowany – Unika błedow powyższych, ale w praktyce trudny do osiągnięcia bazy danych – elementy systemu • model danych – model logiczny – np. relacyjny – model fizyczny – np. system plików • system zarządzania - zbiór narzędzi umożliwiających operacje na danych • operacje na danych • uprawnienia • mechanizmy kontroli bazy danych – modelowanie • poziom koncepcyjny – specyfikacja wymagań użytkowników • poziom logiczny – użycie odpowiedniego modelu danych • poziom fizyczny – wybór konkretnej aplikacji i sprzętu Model "płaski" - jednotabelowy nadmiarowość nazwisko imie Dąbek Małgorzata Dziubiński Leszek Partyka Elżbieta Gajewski Marek Rekord (wiersz tabeli) miasto ulica rok ur. płeć ID 1 Kraków Styczniowa 1967 k 2 Kraków Długa 1957 m 3 Bielsko Gertrudy 1960 k 4 Tarnów Kijowska 1952 m Klucz główny (unikatowa wartość) Pole rekordu (wartość atomowa) Model relacyjny -wielotabelowy • twórca modelu : E.F.Codd , rok 1970 • cechy tabeli w modelu relacyjnym – – – – – liczba kolumn z góry ustalona kolumna związana z nazwą i dziedziną danych wiersze (rekordy) nie powtarzają się kolejność wierszy nieistotna wiersze nie powiązane ze sobą ( są elementami zbioru) • KLUCZ GŁÓWNY TABELI operacje logiczne • Null – dodatkowa wartość o którą jest rozszerzona dziedzina danych • każda operacja logiczna na Null daje Null (jest to trzecia wartość logiczna) • nie należy mylić Null z pustym wpisem! • istnieją jednoargumentowe predykaty: – is Null ( Null is Null daje True !! – wyjątek) – is not Null operacje logiczne - tabele OR True False Null True True True True False True False Null Null True Null Null operacje logiczne - tabele AND True False Null True True False True False False False Null Null Null False Null operacje logiczne - tabele OR True False Null True True True True False True False Null Null True Null Null AND True False Null True True False Null False False False False Null Null False Null NOT True False Null False True Null Model relacyjny -wielotabelowy Linia obrazuje relację między kolumną klucza głównego w tabeli MIASTA z kolumną Idmiasta w tabeli OSOBY Konstrukcja tabeli • Każdy fakt przechowywany w bazie danych powinien być wyrażalny w niej tylko na jeden sposób. • Informacja o przedmiocie powinna być zapisana tylko w jednym miejscu, a nie przy każdym obiekcie, którego dotyczy • należy dążyć do postaci atomowej danych • Niektóre schematy tabel są złe! Tożsamość danych • wiersze tabel nie mają numerów ani adresów • rozróżnienia wierszy dokonuje się poprzez analizę ich zawartości – konieczność wprowadzenia klucza • Klucz – zbiór kolumn o niepowtarzalnych wartościach • Klucz właściwy – po usunięciu dowolnej kolumny przestaje być kluczem • Klucz główny – klucz właściwy, najlepiej jednokolumnowy, łatwy do wyznaczenia, krótki Związki między tabelami • jak powiązać dane w dwóch tabelach – wiersze nie mają numerów i nie można zastosować wskaźników • klucze obce – – – – kolumny dodane do tabel w celu realizacji związków zawierają one wartości kluczy głównych z powiązanych tabel muszą mieć typy zgodne z powiązanymi danymi mogą mieć inne nazwy ale wygoda nakazuje aby były takie same Związki między tabelami - cd • związek jeden-do-wiele (1-∞)/(1-n) – klucz obcy w naturalny sposób realizuje związek 1-n , klucz obcy jest w tabeli po stronie wiele • związek jeden-do-jeden (1-1) – w poprawnych strukturach występują wyjątkowo – świadczą o niepotrzebnym podziale tabeli na dwie mniejsze – realizacja – klucz obcy niepowtarzalny Związki między tabelami - cd • związek wiele-do-wiele (m-n)/(∞-∞) – przykładem rzeczywistego związku m-n jest sytuacja : student uczestniczy w wielu kursach/w jednym kursie uczestniczy wielu studentów • ponieważ należy unikać związków m-n należy wprowadzić dodatkową tabelę UCZESTNICTWA – student X uczestniczy w kursie Y (tabela intersekcji) Operacje na tabelach • selekcja – polega na wybraniu z tabeli wierszy spełniających kryteria – wynikowa tabela ma identyczną strukturę jak w zapytaniu • projekcja – polega na wybraniu z tabeli niektórych kolumn – tabela wynikowa ma strukturę podzbioru tabeli z zapytania • operacje logiczne – suma – przecięcie – różnica podstawy SQL (1) – podział zapytań • SQL DDL (ang. Data Definition Language, czyli Język Definicji Danych - struktur) • • • CREATE (np. CREATE TABLE, CREATE DATABASE, ...) DROP (np. DROP TABLE, DROP DATABASE, ...) ALTER (np. ALTER TABLE ADD COLUMN ...) • SQL DML (ang. Data Manipulation Language, czyli Język Manipulacji Danymi) • • • • SELECT - pobranie z bazy danych, INSERT - umieszczenie danych w bazie, UPDATE - zmiana danych, DELETE - usunięcie danych z bazy. MySQL –konto uzytkownika • z poziomu administratora MySQL (root) należy stworzyć bazę u żytkownika: >create database naszabaza; • oraz nadać uzytkownikowi prawa do niej : >GRANT ALL PRIVILEGES ON naszabaza.* TO • • user@localhost IDENTIFIED BY 'haslo'; oznacza to nadanie wszystkich praw do wszystkich tabel w ‘naszabaza’ użytkownikowi ‘user’ podającemu ‘haslo’ i łączącemu się z lokalnego serwera przywileje mogą być ograniczone do poszczególnych poleceń (SELECT, INSERT, UPDATE ….) oraz do wybranych tabel : >grant SELECT on naszabaza.klienci to user@localhost IDENTIFIED BY 'haslo'; MySQL –nawiązanie połączenia • • • • nawiązanie połączenia terminalowego wymaga: posiadania konta na serwerze posiadania dostępu do bazy MySQL (konta MySQL) To są dwa INNE konta (często nazywają się tak samo dla ułatwienia) • po zalogowaniu na serwer wpisujemy z konsoli: • mysql –u uzytkownik_bazy –p password : ***** • Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 32359 to server version: 3.23.49-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> MySQL –nawigacja • przegląd baz : show databases; • wybranie bazy ( konieczne uprawnienia) >use naszabaza; database changed • przegląd tabel : show tables; • struktura tabeli: >describe nazwa; / >explain nazwa; MySQL –TYPY DANYCH • liczbowe (całkowite i zmiennopozycyjne) • tekstowe • daty i czasu MySQL – LICZBY CAŁKOWITE • BIT[(M)] - Pole bitowe. M wskazuje ilość bitów w zakresie od 1 do 64. Jeżeli wartość M nie jest podana, wartością domyślną jest 1. • TINYINT[(M)] [UNSIGNED] [ZEROFILL] - Bardzo małe liczby całkowite. Wartości dla zakresu oznakowanego: -128 ÷ 127, wartości dla zakresu nieoznakowanego wartości: 0 ÷ 255. • SMALLINT[(M)] [UNSIGNED] [ZEROFILL] - Małe liczby całkowite. Wartości dla zakresu oznakowanego: -32768 ÷ 32767, wartości dla zakresu nieoznakowanego: 0 ÷ 65535. • MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] - Średnie liczby całkowite. Wartości dla zakresu oznakowanego: -8388608 ÷ 8388607, wartości dla zakresu nieoznakowanego: 0 ÷ 16777215. • INT[(M)] [UNSIGNED] [ZEROFILL] - Normalne liczby całkowite. Wartości dla zakresu oznakowanego: -2147483648 ÷ 2147483647, wartości dla zakresu nieoznakowanego: 0 ÷ 4294967295. • BIGINT[(M)] [UNSIGNED] [ZEROFILL] - Duże liczby całkowite. Wartości dla zakresu oznakowanego: -9223372036854775808 ÷ 9223372036854775807, wartości dla zakresu nieoznakowanego: 0 ÷ 18446744073709551615. MySQL – liczby zmiennopozycyjne • FLOAT(M,D) – pojedyncza precyzja , zakres +/1.175494351E-38 - 3.402823466E+38 M- całkowita ilość cyfr D- ilość cyfr po przecinku dokładność ok. 7 cyfr znaczących • DOUBLE(M,N) – double precision 2.2250738585072014E-308 do 1.7976931348623157E+308 dokładność ok. 15 cyfr znaczących MySQL –data i czas DATE zakres : '1000-01-01' do '9999-12-31' DATETIME zakres: '1000-01-01 00:00:00' to '9999-12-31 23:59:59' TIME zakres: -838:59:59' to '838:59:59' YEAR zakres 1901 - 2155 MySQL –typy tekstowe • CHAR (synonim CHAR(1)) – jednoznakowy • VARCHAR(M) – łańcuch o zmiennej długości maksymalnie m-znaków • BLOB - 65,535 (2^16 – 1) bytes • MEDIUMBLOB 16,777,215 (2^24 – 1) • LONGBLOB 4294967295 (4GB) (2^32 – 1) • TEXT – to samo co BLOB • SET('value1','value2',...) jawnie wyspecyfikowane, max 64 elementy MySQL –specyfikacja pól • not NULL – zabroniony wpis null • auto_increment – jeśli w takie pole nie wpiszemy nic, lub wpiszemy 0, MySQL uzupełnia wpisem o 1 większym od ostatniego • primary key / primary key(nazwa) wyspecyfikowanie klucza • częste łączenie : ID int not null auto_increment primary key, MySQL –tworzenie tabeli • • • • • create table elementy( ID int not null auto_increment primary key, element varchar(20), cena float ) MySQL –wybieranie rekordów • • • • SELECT nazwy_kolumn FROM nazwy_tabel WHERE warunek_logiczny; wybranie wszystkich: select * from elementy; • wybranie niektórych kolumn z warunkiem: select nazwa,cena from elementy where cena < 100; • SELECT DISTINC … - usuwanie duplikatów • … ORDER BY nazwa –sortowanie (na końcu) MySQL –funkcje agregujące • count(*) – zliczanie select count(*) from elementy; • max,min select max(zarobki) from pracownicy; • avg select avg(cena) from samochody; MySQL –zapytania łączące tabele ► Przykład :dane o markach i modelach samochodów: ► create table marki( IDmarki int not null auto_increment primary key, marka varchar (20)); create table modele ( IDmodelu int not null auto_increment primary key, IDmarki int, model varchar(20)); Związek między tabelemi jest typu 1-n (jedna marka występuje w wielu modelach, lecz jeden model odpowiada konkretnej marce. Np. Ford Focus, Ford Fiesta itp. W tabeli modele IDmarki stanowi klucz obcy, który jest jednocześnie kluczem głównym tabeli marki ► ► ► MySQL –zapytania łączące tabele ► ► select * from marki; select * from modele; IDmarki marka 1 fiat 2 ford IDmodelu IDmarki model 1 1 125P 2 1 Croma 3 1 Bravo 4 2 Fiesta 5 2 Focus 6 2 Mondeo MySQL –zapytania łączące tabele ► ► Zapytania SQL pracują na zbiorach więc odpowiedzią są iloczyny kartezjańskie odpowiednich kolumn : select model,marka from modele,marki; model marka 125P fiat Croma fiat Bravo fiat Fiesta fiat Focus fiat Mondeo fiat 125P ford Croma ford Bravo ford Fiesta ford Focus ford Mondeo ford MySQL –zapytania łączące tabele ► ► W poprzednim zapytaniu nie uwzględniono łączenia kluczami select model,marka from modele,marki where marki.IDmarki=modele.IDmarki; model marka 125P fiat Croma fiat Bravo fiat Fiesta ford Focus ford Mondeo ford MySQL –zapytania łączące tabele ► złączenie kluczy w relacji 1-n jest tzw. złączeniem naturalnym i dla tego równoważne są dwie instrukcje : ► select model,marka from modele,marki where marki.IDmarki=modele.IDmarki; select model,marka from modele natural join marki;