Klasa 4 · rozdział 3
Encja, atrybut, krotka, tabela
Serwer już działa. Zanim wstawisz dane, musisz nazwać rzeczy po imieniu. Encja, atrybut, krotka to język projektu. Tabela, kolumna, wiersz to to samo — już w MySQL. Na INF.03 pojawiają się oba zestawy.
Po tym rozdziale powinieneś umieć
- podać definicję encji, atrybutu i krotki oraz odróżnić typ encji od egzemplarza;
- zestawić: encja → tabela, atrybut → kolumna, krotka → wiersz;
- określić dziedzinę atrybutu (dopuszczalne wartości);
- wskazać atomowość, unikalność wierszy i brak znaczenia kolejności;
- wyodrębnić encję i atrybuty z krótkiego opisu (biblioteka, hurtownia, uczeń).
1. Od świata rzeczywistego do tabeli
Projekt bazy to trzy warstwy — nie skaczesz od razu do CREATE TABLE.
1. Świat
Obiekty, które obserwujesz: czytelnicy, książki, wizyty, faktury.
2. Model logiczny
Typ encji Czytelnik, atrybuty (imię, PESEL), dziedziny tych cech.
3. Model fizyczny
Tabela w MySQL, kolumny z typami, wiersze z konkretnymi danymi.
2. Encja, atrybut, krotka — definicje
Te trzy pojęcia są z poziomu koncepcyjnego (projektu). Zanim zobaczysz tabelę w phpMyAdmin, musisz umieć je wypowiedzieć własnymi słowami i nie pomylić kategorii z jednym wpisem.
Słowo „encja” bywa używane na dwa sposoby. Na kartkówce i na INF.03 rozróżniaj je świadomie:
Typ encji (entity type)
Kategoria obiektów o jednakowym zestawie cech. Definiujesz ją raz: nazwą i listą atrybutów. Przykłady: Uczeń, Książka, Faktura, Samochód. W MySQL typ encji staje się tabelą.
Egzemplarz encji (entity instance)
Jeden konkretny obiekt należący do typu. Przykłady: uczeń Jan Kowalski z klasy 4 TI; książka „Lalka” Bolesława Prusa; auto KR 12345. W tabeli egzemplarz zapisujesz jako krotkę (wiersz).
Żeby coś uznać za encję (a nie za luźną cechę), sprawdź trzy pytania:
- Czy da się wskazać wiele takich obiektów i odróżnić jeden od drugiego?
- Czy obiekt ma własne cechy, które chcemy zapisać?
- Czy jest ważny sam w sobie, a nie tylko jako wartość przy kimś innym? (PESEL to atrybut ucznia, nie encja.)
Na tym etapie zapamiętaj jeszcze trzy ograniczenia atrybutu:
- Należy do encji, nie jest encją. Nazwisko nie istnieje samodzielnie w modelu — istnieje przy uczniu. Gdy cecha sama zaczyna mieć historię i wiele wartości (np. kolejne numery telefonu), często wydzielasz osobną encję.
- Wartość powinna być atomowa — jedna informacja w jednej komórce, nie lista „Laptop, myszka, torba”.
-
Ten sam atrybut, ta sama dziedzina dla wszystkich krotek tabeli.
Nie trzymasz w kolumnie
RokWydaniaraz roku, a raz nazwiska autora.
Atrybuty bywają opisowe (tytuł, kolor) albo identyfikujące (ISBN, PESEL, numer faktury) — te drugie pozwalają odróżnić egzemplarze. Klucz główny poznasz wkrótce; dziś wystarczy, że wiesz, po co taka cecha jest.
(9788328300000, Czysty Kod, 2017, 69.00).
W tabeli krotka to wiersz (rekord). Relacja to zbiór takich krotek.
Egzemplarz to obiekt w świecie. Krotka to jego zapis w modelu: same wartości, ułożone według atrybutów typu. Bez kompletu atrybutów nie ma krotki — jest tylko luźna cecha.
- Dwie identyczne krotki w relacji są zabronione (stąd później klucz główny).
- Kolejność krotek w tabeli nie zmienia znaczenia danych — to zbiór, nie lista „od góry”.
- Kolejność atrybutów też nie jest istotna logicznie: krotkę rozpoznajesz po nazwach cech, nie po „trzeciej kolumnie”.
- Encja — rozróżnialny obiekt dziedziny, o którym przechowujemy dane. Typ encji = kategoria; egzemplarz = konkret.
- Atrybut — nazwana cecha typu encji; wartość z dziedziny; w tabeli = kolumna.
- Krotka — zestaw wartości atrybutów jednego egzemplarza; w tabeli = wiersz.
- „Encja to Jan Kowalski” — to egzemplarz (i krotka), nie typ.
- „Atrybut to tabela” — atrybut to cecha, tabela to cały typ encji.
- „Krotka to kolumna” — krotka idzie w poprzek tabeli (wiersz), nie w dół (kolumna).
3. Słownik: poziom koncepcyjny vs fizyczny
| Teoria (projekt) | MySQL (wdrożenie) | Przykład |
|---|---|---|
| Typ encji (entity type) | Tabela (table) | Tabela Pracownicy |
| Egzemplarz / krotka (tuple) | Wiersz / rekord (row, record) | Wiersz Jana Nowaka |
| Atrybut (attribute) | Kolumna / pole (column, field) | Kolumna DataUrodzenia |
| Dziedzina (domain) | Typ + ograniczenia | INT, VARCHAR(50), DATE, NOT NULL |
| Relacja (relation) | Zawartość tabeli (zbiór wierszy) | Wszystkie krotki o tej samej strukturze |
Typ encji ≠ egzemplarz
Typ encji
Kategoria: SAMOCHÓD — wszystkie auta, które chcemy opisać tymi samymi cechami.
Egzemplarz
Konkret: Toyota Corolla, nr rej. KR 12345, rok 2021. To jedna krotka.
Dopasuj pojęcia
Sprawdź, czy mapowanie siedzi. Potem wróć do tabeli, jeśli coś zgrzyta.
4. Dziedzina atrybutu i typy danych
Dziedzina to zbiór wartości, które atrybut ma prawo przyjąć.
W MySQL przybliżasz ją typem i ograniczeniami. Na razie bez składni CHECK —
ważne, żebyś umiał dziedzinę nazwać.
| Atrybut | Dziedzina (logika) | Typ w MySQL (orientacyjnie) |
|---|---|---|
MiesiacUrodzenia |
Liczby całkowite 1–12 | TINYINT + reguła zakresu |
PESEL |
Dokładnie 11 cyfr (plus suma kontrolna w życiu) | CHAR(11), nie „liczba” — zero wiodące |
StatusKonta |
{Aktywne, Zablokowane} | ENUM albo krótki VARCHAR |
CenaNetto |
Liczba ≥ 0, dwa miejsca po przecinku | DECIMAL(10,2), nie FLOAT do pieniędzy |
DataZapisu |
Prawidłowa data kalendarzowa | DATE |
INT zgubi zero z przodu i nie pilnuje 11 znaków.
5. Reguły poprawnej tabeli relacyjnej
Model E.F. Codda (1970): tabela jest relacją, gdy spełnia kilka zasad. Na ocenę 6 możesz wspomnieć zbiór i iloczyn kartezjański dziedzin — bez wykładu akademickiego.
-
Atomowość. W komórce jedna wartość, nie lista.
Źle:
Jan Kowalski, tel. 500-600-700, 600-700-800. Dobrze: osobne kolumny imię / nazwisko; telefony w osobnej tabeli (wielowartościowość). - Unikalność krotek. Żadnych identycznych wierszy. Do tego służy klucz główny — poznasz go wkrótce, ale zasadę znasz już dziś.
-
Kolejność wierszy nie ma znaczenia. Relacja to zbiór, nie „wiersz 3 od góry”.
Sortowanie robisz zapytaniem (
ORDER BY), nie układem na dysku. - Kolejność kolumn nie ma znaczenia. Kolumnę wołasz po nazwie, nie po numerze pozycji.
6. Studium przypadku: encja KSIĄŻKA
Katalog biblioteczny. Typ encji KSIAZKA staje się tabelą.
| ISBN tekst, 13 znaków |
Tytul tekst do 100 |
RokWydania liczba całkowita > 0 |
CenaNetto liczba ≥ 0, 2 miejsca |
|
|---|---|---|---|---|
| 9788328300000 | Czysty Kod | 2017 | 69.00 | krotka 1 |
| 9788301140000 | Algorytmy i struktury | 2019 | 85.50 | krotka 2 |
| 9788324631000 | Relacyjne bazy danych | 2021 | 54.00 | krotka 3 |
ISBN— kandydat na identyfikator (dziedzina: 13 cyfr).Tytul— opisowy, nieunikalny (dwa wydania mogą mieć ten sam tytuł).RokWydania— np. 1500–rok bieżący, nie „dwa tysiące dziewiętnaście” jako tekst.CenaNetto— pieniądze: nieujemne, dwa miejsca.
7. Przykładowa baza do importu
Tę samą strukturę masz w pliku SQL. Importujesz go w phpMyAdmin i na lekcji wskazujesz palcem: tabela = typ encji, kolumna = atrybut, wiersz = krotka.
Plik: sql/bd_rozdzial03.sql
(prawy przycisk → zapisz, jeśli przeglądarka otworzy go jako tekst).
- Włącz Apache i MySQL.
- Wejdź na
http://localhost/phpmyadmin. - Zostań na poziomie serwera — nie klikaj żadnej bazy po lewej (plik sam zrobi
CREATE DATABASE). - Karta Import → Wybierz plik →
bd_rozdzial03.sql→ Wykonaj. - W drzewie po lewej odśwież listę. Powinna pojawić się baza
bd_rozdzial03.
W bazie są trzy tabele:
| Tabela | Typ encji | Po co na lekcji |
|---|---|---|
ksiazki |
Książka | Ten sam przykład co w studium wyżej. Karta Przeglądaj = krotki; Struktura = atrybuty i dziedziny (typy). |
czytelnicy |
Czytelnik | Druga kategoria obiektów. Baza to zwykle więcej niż jedna encja. Związków (FK) jeszcze nie ma. |
przyklad_bledny |
— | Celowo zła tabela: listy w komórkach. Do ćwiczenia o atomowości. |
- Drzewo: baza
bd_rozdzial03to zbiór typów encji, nie „jeden plik Excel”. ksiazki→ Struktura: cztery atrybuty i ich typy (CHAR(13),VARCHAR,SMALLINT,DECIMAL).ksiazki→ Przeglądaj: każdy wiersz to jedna krotka. Wskaż „Czysty Kod” jako egzemplarz encji Książka.- Karta SQL:
SELECT * FROM ksiazki;— zestaw wynikowy to znowu krotki, tylko jako odpowiedź serwera. przyklad_bledny: „gdzie złamano atomowość?”.
SELECT * FROM ksiazki;
SELECT isbn, tytul FROM ksiazki;
SELECT * FROM czytelnicy;
bd_rozdzial03 już jest — dopisze tabele w niej.
Ćwiczenia do samodzielnego wykonania
Ćwiczenie 0. Baza na serwerze łatwe
Zaimportuj bd_rozdzial03.sql.
Otwórz ksiazki i w zeszycie zapisz: typ encji, cztery atrybuty,
wartości drugiej krotki (wiersz „Algorytmy i struktury”).
Potem kartą SQL wykonaj SELECT * FROM czytelnicy; i policz krotki.
Ćwiczenie 1. Identyfikacja w zdaniu łatwe
„Samochód osobowy marki Skoda Octavia, rok produkcji 2021, o numerze VIN TMBA… i przebiegu 45 000 km, został zarejestrowany w wydziale komunikacji.”
Wskaż: typ encji, atrybuty, wartości jednej krotki.
Ćwiczenie 2. Encja UCZEN średnie
- Wypisz co najmniej 5 atrybutów ucznia w dzienniku.
- Dla każdego podaj dziedzinę (tekst, data, liczba, ograniczenia).
- Podaj 2 przykładowe krotki.
- Który atrybut najlepiej odróżnia uczniów i dlaczego? (PESEL vs numer w dzienniku vs imię i nazwisko)
Ćwiczenie 3. Złamane reguły średnie
Które zasady relacji łamie ta tabela?
| ID | Klient | Telefony | Zakupy |
|---|---|---|---|
| 1 | Piotr Nowak | 501-200-300, 22-800-90-00 | Laptop, Myszka, Torba |
| 2 | Anna Lis | brak | Klawiatura |
Napisz, jak byś to rozdzielił (osobne kolumny / osobna encja).
Ćwiczenie 4. Hurtownia komputerowa trudne
„O produkcie musimy wiedzieć: unikalny kod EAN (13 cyfr), pełną nazwę, cenę netto, stan magazynowy w sztukach oraz czy jest gwarancja producenta (tak/nie).”
- Typ encji.
- Atrybuty i dziedziny.
- Trzy przykładowe krotki w tabelce.
Ćwiczenie 5. Granica modelu celujący
Czy lista telefonów klienta może zostać kolumną, czy powinna stać się osobną encją? Uzasadnij atomowością i tym, co się stanie, gdy klient zmieni numer. Jednym zdaniem: relacja jako podzbiór iloczynu kartezjańskiego dziedzin — własnymi słowami.
Sprawdź się
Wymagania na ocenę
Rozdział 3 otwiera dział 2 (pojęcia i model relacyjny). Dziś oceniamy opanowanie czterech pojęć i mapowania na tabelę.
| Ocena | Uczeń |
|---|---|
| 2 | Wskazuje w tabeli kolumnę i wiersz. Z pomocą podaje przykład encji i atrybutu (uczeń — nazwisko). |
| 3 | Poprawnie używa: encja, atrybut, krotka, tabela. Tworzy prostą tabelę z trzema atrybutami. Określa dziedzinę (liczba, tekst, data). |
| 4 | Mapuje encja → tabela, krotka → wiersz, atrybut → kolumna. Wyodrębnia encje i atrybuty z krótkiego tekstu. Rozróżnia typ encji i egzemplarz. |
| 5 | Projektuje zestaw atrybutów ze dziedziną, unikalnością i atomowością. Uzasadnia atrybut identyfikujący. |
| 6 | Analizuje przypadek graniczny (atrybut wielowartościowy → osobna encja). Wykazuje zrozumienie relacji jako zbioru krotek (idea iloczynu dziedzin). |