Do Baz Danych


Do Baz Danych

Zawsze byłem zdania, że najlepiej rozmawia się o rzeczach konkretnych,
a jeszcze lepiej o takich, które istnieją w rzeczywistości (więc może
dlatego zostałem inżynierem a nie filozofem).
Każdy z nas chodził lub chodzi do szkoły. A w szkole jak to w szkole,
dostajemy stopnie, z każdego przedmiotu po kilka podczas semestru.
Zabawmy się projektanta baz danych budującego bazę danych dla szkoły.
Ażeby za bardzo nie zagmatwać sprawy zrobimy sobie bazę dla jednej klasy
Nasza klasa składa się z kilku osób i tworzy tabelę
Uczniowie:

ID

Imię

Nazwisko

1

Jasio

Kowalski

2

Ania

Nowak

3

Zosia

Kowal

4

Tomek

Iksiński

5

Janek

Zetowski


Każdy uczeń identyfikowany jest w tabeli jednym numerem,
który nie powtarza się: Jasio to "1" Ania to "2" itd.. Kolumna"ID"
jest to tzw.
klucz podstawowy.

Oprócz uczniów są w szkole także przedmioty. A jeżeli są przedmioty
(mniej i bardziej lubiane w zależności od tego co dany osobnik lubi)
to jest i następna tabela. (Nie denerwujcie się!. Za parę minut będzie
wszystko wiadomo.). Aby łatwiej nam się uczyło, weźmiemy pod uwagę tylko
kilka przedmiotów i stwórzmy tabelę
Przedmioty

Przedmiot

OpiniaOPrzedmiocie

Matematyka

królowa nauk

Fizyka

bardzo praktyczna

Chemia

nie cierpię

Angielski

prosty

Niemiecki

praktyczny


Pierwsza kolumna to wspomniany wcześniej klucz podstawowych. W tej
kolumnie wartości muszą być unikatowe.
Druga kolumna tabeli to obraz prywatnej opinii autora tej strony.
Proszę więc nie przywiązywać do tego wagi. A kolumna "nr 2" przyda się nam
później - w zapytaniach

W szkole, jak to w szkole, uczniowie są oceniani za swoje postępy w nauce
Stworzymy więc kolejną tabelę
Ocena, w której będą wypisane rodzaje ocen

Ocena

OpisOceny

1

Pała

2

Mierny

3

Dostateczny

4

Dobry

5

Bardzo dobry

6

Celujący

Są uczniowie, są przedmioty, są oceny, więc musi być i jakieś połączenie między
nimi. W szkole są dzienniki ze stronami na odpowiednie przedmioty,
a w bazie jest tabela wiążąca uczniów z przedmiotami.Załóżmy, że jest
środek semestru. Na każdej lekcji różni uczniowie byli pytani na stopnie
z różną częstotliwością.Jasio ma np. 2 stopnie z matematyki, 1 z fizyki itd..
Nasza tabela
PrzedmiotUczeńOcena będzie wyglądać tak:

IDP

Przedmiot

Uczeń

Ocena

1

Matematyka

1

3

2

matematyka

1

5

3

Fizyka

3

2

4

Angielski

5

3

5

Chemia

5

4

6

Niemiecki

5

6

7

Niemiecki

4

1


Z tabeli tej można odczytać:
"Nr 1" - Jasio ma z matematyki 3(dostateczny) i 5(b. dobry)
"Nr 3" - Zosia nie ma głowy do fizy i ma tylko 2(mierny)
"Nr 5" - Janek ma z "anglika" 3(dostateczny), z chemii 4(dobry)
a z "niemca" 6(celujący), bo ma dziadka w Reich'u
"Nr 4" - Tomek uznaje tylko języki słowiańskie i z "niemca" ma 1(pałę)

Mam nadzieję, że jak dotąd wszystko było oczywiste.
Relacyjna baza danych to pewien program do przechowywania danych
A dane trzeba tak przechowywać, aby zajmowały jak najmniej miejsca
w pamięci komputera oraz aby możliwie najmniej razy wpisywać tę samą daną
co wiąże się także z możliwością powstania nieścisłości

0x08 graphic

Ażeby teraz jakoś zastosować te nasze tabele najlepiej będze jeżeli
zbudujemy formularze. Formularze są bardzo pomocne w procesie wypełniania tabel.
Zbudowanie prostego formularza dla jednej tabeli nie jest żadnym
problemem w znanych mi programach (Borland Delphi, Borland Builder C,
Microsoft Access). W programach tych istnieją kreatorzy, którzy
automatyzują cały proces tworzenia formularza. Jedynym problemem
jest fakt iż wygląd formuarza stworzonego przez taki kreator może odbiegać
od naszego wyobrażenia. Tworzenie formularza "na piechotę" jest powolniejsze, ale
jesteśmy w stanie ukształtować od razu nasz formularz takim, jaki nam się podoba.
W przypadku budowy formularza złożonego (tabela nadrzędna - tabela podrzędna)
istnieje tylko możliwość zawarcia w nim tylko jednej relacji używając kreatora.
W przypadku bardziej złożonych formularzy musimy wykonywać je "na piechotę".
W naszym konkretnym przypadku utworzylibyśmy następujące formularze:

  1. Formularz główny (Przedmiot-PrzedmiotUczeńOcena)

  2. Uczniowie

  3. Ocena


Formularz główny może wyglądać np jak poniżej:

0x01 graphic

Tworzenie tabel i formularzy Ocena i Przedmioty jest działaniem
"na wyrost" w naszym przypadku (mamy tylko 6 ocen i 5 przedmiotów,
ale w przypadku baz danych gdzie tabele zawierałyby setki lub tysiące
danych, które powinny być zapisywane w bazie danych bez pomyłek
powyższe tabele byłyby bardzo uzadadnione.

Ażeby nasze dany były wiarygodne i przy wykreślaniu np. fizyki z listy
przedmiotów zniknęly z bazy danych wszystki rekordy z innych tabel zawierających
"fizykę" potrzebne jest określenie relacji pomiędzy tabelami (nie mogą przecież
w tabeli
PrzedmiotyUczeńOcena istnieć stopnie z fizyki).
Poniżej znajduje się rysunek obrazujący wzajemne relacje tabel w naszej bazie danych:

0x08 graphic
0x01 graphic

0x08 graphic

0x01 graphic

SELECT | FROM | WHERE | DISTINCT | AND | OR | IN | BETWEEN | LIKE | SUM( ) | AVG() | MIN( ) | MAX( ) | COUNT( ) | CREATE TABLE | DROP TABLE | DELETE | CREATE INDEX | DROP INDEX | INSERT | UPDATE | ALTER TABLE | GROUP BY | ORDER BY | HAVING | CREATE DATABASE | USE | SHOW DATABASES | SHOW TABLES | DESCRIBE | powrót | Przykładowa baza danych
Stworzenie bazy danych o poprawnej strukturze to jeden problem. Poprawnie
skonstruowane tabele i relacje między nimi ułatwiają wprowadzanie
danych oraz utrzymanie porządku w bazie. Stworzone przez nas formularz ułatwiają
nam wprowadzanie danych do poszczególnych tablic. Jednak, aby wybrać z bazy
to czego szukamy, potrzebujemy umiejętności posługiwania się językiem SQL
(tzn. Structured Query Language). Dopiero znając SQL jesteśmy w stanie wydobyć
z bazy dane, które nas interesują w danym momencie.
SQL jest bardzo elastycznym językiem pozwalającym operatorowi bazy danych
wybrać dane zgodne z założonymi wcześniej kryteriami.
W zależności, z jakiego programu korzystamy, istnieją pewne kosmetyczne
różnice w zapisie instrukcji SQL (należy wtedy przejrzeć dokumentację programu,
jednak podstawowy zapis instrukcji SQL jest podobny.

0x08 graphic

klucz podstawowy - jest to pole tabeli identyfikujące jednoznacznie
dany rekord. Innymi słowy, każde pole w kolumnie klucza podstawowego ma
inną niepowtarzalną wartość. W tabeli Uczniowie będzie to kolumna "ID"

SELECT - jest to podstawowa instrukcja języka SQL i zawsze występuje w parze
z klauzulą FROM. Najprostsza postać instrukcji może wyglądać jak poniżej:

SELECT * FROM Uczniowie

Wynikiem powyższej instrukcji będzie taka sama tabela danych, z której korzystaliśmy
jako ze źródła. Spytacie więc po co taka prosta instrukcja skoro nie daje nam nic.
Jeżeli zamiast * wstawimy nazwę jednego lub kilku pól oddzielonych przecinkami, to
otrzymamy jako wynik zawartość wyszczególnionych tylko pól.

Jeżeli chcemy pobrać dane z kilku tabel to należy:

*-symbol ten oznacza, że pobierane są wszystkie kolumny z tabeli

spis komend

FROM-klauzula ta wskazuje, o które tabele nam chodzi tzn. z których tabel
chcemy pobrać dane. W przypadku pobierania danych z kilku tabel, nazwy tabel oddzielamy
przecinkami (,).

spis komend

WHERE-klauzula ta pozwala ustalić warunek jaki muszą spełniać
rekordy tabeli, aby były wybrane przez zapytanie.
Najprostszy warunek może wyglądać tak:

SELECT * FROM Uczniowie WHERE Imię="Jasio"

Z tabeli Uczniowie zostaną wybrane tylko rekordy, w których pole "Imię" będzie
miało wartość "Jasio" (W naszym wypadku będzie to pierwszy rekord tabeli).
Klauzula WHERE może także służyć do prostego połączenia dwóch tabel, w których
istnieją te same pole. Jeżeli chcemy np.: wybrać uczniów, którzy mają z niemieckiego
jakieś stopnie, ale chcemy ponadto znać ich nazwiska i imiona zbudujemy następujące
zapytanie dla tabel
"Uczniowie" oraz "PrzedmiotUczeńOcena":

SELECT Uczniowie.Imię, Uczniowie.Nazwisko, PrzedmiotUczeńOcena.Przedmiot,
PrzedmiotUczeńOcena.Ocena

FROM Uczniowie, PrzedmiotUczeńOcena
WHERE PrzedmiotUczeńOcena.Uczeń=Uczniowie.ID
AND PrzedmiotUczeńOcena.Przedmiot='Niemiecki'

Zapytanie wybierze nam dane:

Imię

Nazwisko

Przedmiot

Ocena

Janek

Zetowski

Niemiecki

6

Tomek

Iksiński

Niemiecki

1

spis komend

DISTINCT - klauzula ta pozwala na wybranie różnych rekordów z zestawu przez nas
zaporponowaniego. Najlepiej wyjaśni to przykład:
Instrukcja:

SELECT DISTINCT * FROM PrzedmiotUczeńOcena

wybierze całą tabelę PrzedmiotUczeńOcena.
natomiast instrukcja:

SELECT DISTINCT Przedmiot, Uczeń FROM PrzedmiotUczeńOcena

zwróci dane:

Przedmiot

Uczeń

Matematyka

1

Fizyka

3

Angielski

5

Chemia

5

Niemiecki

5

Niemiecki

4

Wynika z tego, że klauzula DISTINCT "działa" tylko W WYBRANYM PRZEZ NAS ZAKRESIE
(tzn. porównuje wybrany przez nas zakres!)

spis komend

AND-jest to operator, dzięki któremu możemy tworzyć warunki złożone.
Jest on odpowiednikiem matematycznej koniunkcji.

spis komend

OR-jest to operator, dzięki któremu możemy tworzyć warunki złożone.
Jest odpowiednikiem matematycznej alternatywy. Przeciwieństwo "AND"

spis komend

IN-operator ten sprawdza czy dana wartość jest zawarta w określonym zbiorze
Elementy zbioru są zawarte w parze nawiasów i pooddzielane od siebie przecinkami.

spis komend

BETWEEN-operator ten sprawdza czy wartość zawiera się w przedziale
przez nas podanym.

spis komend

LIKE-operator ten jest bardzo przydatnym i elastycznym operatorem
Operator ten służy do odnajdywania tylko pól tekstowych. Możemy też zastosować
w nim maski na jeden lub kilka znaków (tak jak przy wyszukiwaniu plików w komputerze.
W zależności od odmiany SQL z jakiej korzystamy, znaki te mają różną postać
Poniższy przykład zobrazuje nam użycie 5 ostatnich operatorów:

SELECT * FROM PrzedmitUczeńOcena
WHERE
Przedmiot LIKE "%e%" AND (Uczeń BETWEEN 1 AND 4) AND (Ocena IN (1,2,3) OR Ocena=6)

Powyższe zapytanie wybrałoby: wszystkie kolumny tabeli PrzedmiotUczeńOcena
z rekordami, w których nazwa przedmiotu zawierać będzie w swojej nazwie "e",
uczniowie mają numery od "1" do "4" i posiadają oceny "1", "2", "3" lub "6"



Wyszukiwarka

Podobne podstrony:
bd cz 2 jezyki zapytan do baz danych
problematyka masoowego dostepu do baz danych mity i fakty mqsixoztwl26gv7afh6a6hsnoalkzz6a5q7na7a M
BD Wykad 1 Wprowadzenie do baz danych id 8 (2)
dostep uzytkownikow mobilnych do baz danych wap, pqa, mbts zkpjy2ly76foe7e2jm5bgz7ytxqqyaxaghe36ha
cz 3 Języki zapytań do baz danych
lab1Wstęp teoretyczny do baz danych, bazy danych
cz 2 Języki zapytań do baz danych
Wprowadzenie do baz danych, Bazy Danych
bd cz 2 jezyki zapytan do baz danych
problematyka masoowego dostepu do baz danych mity i fakty mqsixoztwl26gv7afh6a6hsnoalkzz6a5q7na7a M
Wprowadzenie do baz danych
Dostep uzytkownikow mobilnych do baz danych WAP, PQA, MBTS
Wprowadzenie do baz danych wpbada
Wprowadzenie do baz danych wpbada
BD Wykˆad 1 Wprowadzenie do baz danych
Wprowadzenie do baz danych 2
Wprowadzenie do baz danych wpbada 2

więcej podobnych podstron