Notatki z kursu Programming Foundations: Databases (2015)

Wyróżniamy kilka typów relacji pomiędzy tabelami

  1. one to one
  2. one to many
  3. many to many

Operacje bazodanowe przebiegają na zasadzie transakcji. Transakcja w DB to jednostka pracy o konkretnych cechach:

Atomic - albo cała transakcja się wykona, albo rollback

Consistency - przechodzimy z jednego funkcjonalnego stanu do drugiego - transakcja nie może wyjść poza zasady, zdefiniowane np. przy tworzeniu relacji

Isolated - zasoby, z których w danym momencie korzysta transakcja są dla niej zarezerwowane

Durable - jeśli wypłaciłem pieniądze z bankomatu i sekundę później bankomat przestał działać, to nie mam co liczyć na niezaksięgowanie zmiany na koncie. Rezultat transakcji jest już w pamięci nieulotnej

SQL to język w paradygmacie deklaratywnym. Operuje na wyższym poziomie abstrakcji niż języki imperatywne. Wyraża się to w fakcie, że pisząc query, deklaruję CO chcę zrobić, ale nie definiuję JAK ma to być zrobione.

Baza danych to fundament dalszej pracy. Podejście Agile w tworzeniu DB się nie sprawdza. Dobrze myśleć o projektowaniu bazy jak o zrobieniu sobie tatuażu. Zmiany są możliwe, ale bolesne.

1NF atomicity wartości - na poziomie wiersza i na poziomie komórki 2NF wszystkie non-key wartości są funkcjonalnie zależne od key wartości np dla tabeli: employee_id name surname department building jest np. cechą departmentu a