3 úrovně návrhu DB
- Konceptuální model: Řeší, co chceme ukládat. Kreslíme si objekty a vztahy z reálného světa (např. škola má studenty). Vůbec nás tady nezajímá, jak přesně to bude v databázi naprogramované.
- Logický model: Překlápí koncept do podoby tabulek. Tady už definuješ, jaké konkrétní tabulky vzniknou, jaké budou mít primární a cizí klíče a jak se přes ně tabulky propojí.
- Fyzický model: Dodává technické detaily pro konkrétní databázový systém (např. MySQL, Oracle). Řeší datové typy (zda je číslo
INT nebo text VARCHAR), přidává indexy pro rychlejší vyhledávání…
ER modelování (Entity-Relationship)
vytvoření konceptuálního modelu
výsledkem je ER diagram (obvykle kreslený pomocí UML), kde jsou obdélníky propojené čarami
- Entita: Představuje typ objektu z reálného světa, který chceme evidovat (podstatné jméno –
Student, Kniha, Auto). Je to "šablona", ne konkrétní záznam (nekreslíš studenta Nováka, ale obecnou entitu Student).
- Atributy: Vlastnosti dané entity (u studenta to bude Jméno, Věk). Píšou se dovnitř entity.
- Relace (čára): Vztah, který spojuje entity a říká, jak spolu souvisí.
Změna názvosloví (přechod do logického modelu):
Jakmile přejdeš od kreslení k návrhu samotné databáze, mění se pojmy:
- Entita ⇒ Tabulka
- Atribut ⇒ Sloupeček (Column)
- Relace ⇒ Propojení přes klíče
klíče v DB
slouží k tomu, abychom každý záznam (řádek) v tabulce jednoznačně identifikovali
- Kandidátní klíč: Jakýkoliv sloupeček (nebo kombinace sloupečků), který dokáže stoprocentně a unikátně určit jeden řádek. Příklad: Rodné číslo, e-mail.
- Problém přirozených identifikátorů: Rodné číslo se nabízí, ale je to citlivý údaj a navíc ne každý ho má validní (např. cizinci). Není to dobrý primární klíč.
- Primární klíč (PK - Primary Key): Jeden vybraný kandidátní klíč, který budeme reálně používat pro identifikaci řádku a tvorbu vazeb. Dnes se skoro výhradně používají umělé klíče – obyčejné číselné počítadlo (1, 2, 3...) nebo unikátní řetězec (GUID/CUID).
- Cizí klíč (FK - Foreign Key): Sloupeček, který odkazuje na primární klíč v jiné tabulce. Tím se fyzicky tvoří relace mezi tabulkami.