From 5ac0daaefb0987b15c0b3b08e044a29fcd6fb6b6 Mon Sep 17 00:00:00 2001 From: Piotr Maslanka <piotr.maslanka@henrietta.com.pl> Date: Thu, 4 May 2017 11:04:18 +0200 Subject: [PATCH] Build it! --- src/lab4.md | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/lab4.md b/src/lab4.md index cc0088e..a640d09 100644 --- a/src/lab4.md +++ b/src/lab4.md @@ -41,7 +41,7 @@ _primary keys_) mogÄ rĂłwnieĹź skĹadaÄ siÄ z kilku cech (lub lepiej **pĂłl** Wydaje siÄ po dĹuĹźszych deliberacjach Ĺźe dobrym kluczem podstawowym bÄdzie tu PESEL obywatela. Ryzyko pomyĹki z innym obywatelem jest minimalne (chyba Ĺźe aktualnie jesteĹmy komornikiem). DziÄki takiej _toĹźsamoĹci_ moĹźemy potem kazaÄ bazie chociaĹźby _zmieĹ nazwisko osobie legitymujÄ cej siÄ numerem PESEL 95101810106_ - bez ryzyka pomyĹki, w razie gdyby zmieniĹa nazwisko z racji wyjĹcia za mÄ Ĺź. Pole podstawowe przywiÄ zuje + bez ryzyka pomyĹki, w razie gdyby zmieniĹa nazwisko z racji wyjĹcia za mÄ Ĺź. Klucz podstawowy przywiÄ zuje nasz wiersz w bazie do konkretnego obiektu istniejÄ cego w rzeczywistoĹci. Takie rozwiÄ zanie od kilku lat @@ -65,6 +65,14 @@ Tak czy inaczej, wypiszmy kilka sensownych _pĂłl_ w takiej tabeli od obywateli: * Adres korespondencyjny: ulica i numer budynku oraz lokalu * PESEL * Data urodzin +* Numer telefonu + +I teraz parÄ kwestii nazewniczych. OdnoszÄ c siÄ do tego konkretnego przykĹadu: +* NazwÄ pola, wraz z jego typem i przeznaczeniem w konkretnej tabeli nazywamy **kolumnÄ ** +* ReprezentacjÄ obywatela w tej tabeli nazywamy **wierszem** +* KonkretnÄ cechÄ konkretnego obywatela nazywamy **polem** + +Numeru telefonu obywatel posiadaÄ nie musi. KaĹźdy bieszczadzki zakapior ma prawo do Od razu zauwaĹźyÄ moĹźemy, Ĺźe trzymanie dwĂłch _adresĂłw_. nie jest takim dobrym pomysĹem. Analityczny umysĹ zauwaĹźyÄ moĹźe, Ĺźe adres jest pewnym _bytem samym w sobie_. MoĹźemy wiÄc stworzyÄ osobnÄ tabelÄ do przechowywania adresĂłw. @@ -86,6 +94,7 @@ SprĂłbujmy wiÄc odseparowaÄ obywatela od adresu. Otrzymamy zapewne coĹ takieg * Adres korespondencyjny - ID adresu * PESEL (**klucz podstawowy**) * Data urodzin +* Numer telefonu (**moĹźe byÄ pusty**) **Adres**: @@ -105,14 +114,30 @@ a ktoĹ w piĹmie wspomniaĹ o dowodzie o okreĹlonym identyfikatorze, a w miÄd to teraz jego papier mĂłgĹby siÄ odwoĹywaÄ do *istniejÄ cego dowodu w innej sprawie*, a nie po prostu do *niczego*. ByĹoby to katastrofalne w skutkach, a bĹÄ d programisty mĂłgĹby kosztowaÄ kogoĹ pozbawienie wolnoĹci. +KolumnÄ, ktĂłra stanowi klucz podstawowy w innej tabeli - czyli odnosi siÄ do innej tabeli - nazywamy **kluczem obcym** +(ang. _foreign key_). W naszej tabeli _Obywatel_ mamy dwa klucze obce - oba odnoszÄ siÄ do tabeli +_Adres. PoniewaĹź wielu obywatelom przypisaÄ moĹźna jeden adres, istnieje wiÄc relacja **wiele-do-jednego** +miÄdzy tabelami *Obywatel* i *Adres*. +Po co stosuje siÄ takie wyróşnienia? Otóş moĹźemy bazÄ poinformowaÄ o istnieniu takiej relacji. Wtedy pilnowaÄ +ona bÄdzie spĂłjnoĹci, czyli jeĹli sprĂłbujemy skasowaÄ adres, pod ktĂłrym ktoĹ jednak zamieszkuje, baza +odmĂłwi wykonania takiego polecenia (i dobrze). +OpisujÄ c kolumny w tabeli musimy rĂłwnieĹź podaÄ typ tego, co bÄdziemy tam przechowywaÄ. Typy zaleĹźÄ juĹź +od konkretnego oprogramowania RDBMS z ktĂłrego korzystamy. Na WEiI PRz istnieje parcie na +[Oracle Database](https://docs.oracle.com/cd/E11882_01/server.112/e41085/sqlqr06002.htm#SQLQR959), tak +wiÄc tej typologii rekomendowaĹbym siÄ nauczyÄ na egzamin. +Na przyszĹych laboratoriach bÄdziemy korzystaÄ z [PostgreSQL](https://pl.wikipedia.org/wiki/PostgreSQL) +oraz jego typĂłw. PoniewaĹź istnieje [tabela konwersji typĂłw](http://www.sqlines.com/oracle-to-postgresql) miÄdzy tymi bazami, radzÄ +myĹleÄ w typach Oracle, a w locie dopasowywaÄ sobie to do PostgreSQL. O typach PostgreSQL moĹźna zapomnieÄ +po odesĹaniu ostatniej instrukcji. - - - - +ProjektujÄ c bazÄ danych, dobrze jest jÄ sobie narysowaÄ. SĹuĹźy do tego [diagram zwiÄ zkĂłw encji](https://pl.wikipedia.org/wiki/Diagram_zwi%C4%85zk%C3%B3w_encji) + lub inaczej ERD. Na egzaminie najpewniej bÄdzie (jeĹli bÄdzie) jej wariant w postaci [notacji kruczej stopki](https://pl.wikipedia.org/wiki/Diagram_zwi%C4%85zk%C3%B3w_encji). + + Narysuj diagram ERD dla tabel Obywatel i Adres. + -- GitLab