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;