INF.03 · Bazy danych i SQL

Sklep komputerowy, część 1: zaprojektuj i utwórz bazę

Prowadzisz sklep internetowy ze sprzętem komputerowym i potrzebujesz bazy do zarządzania ofertą i klientami. To pierwsze z serii zadań praktycznych: zbudujesz tę bazę od podstaw, a każde następne zadanie będzie na niej pracować i dokładać nową umiejętność. Tak wygląda praca nad prawdziwym projektem: krok po kroku.

  • około 40 minut
  • CREATE DATABASE · CREATE TABLE
  • projekt w pięciu częściach

Po tej lekcji: utworzysz bazę sklep_komputerowy z czterema powiązanymi tabelami, kluczami i podstawowymi więzami integralności.

1 · Sytuacja

Cztery tabele i dokładne nazwy

Zbuduj bazę dla sklepu internetowego. Trzymaj się podanych nazw tabel i kolumn, bo kolejne zadania i zapytania kontrolne opierają się na nich.

Na tym etapie nie wypełniasz tabel danymi. To zadanie na część 2. Planuj kolejność: tabela z kluczem obcym musi powstać po tabeli, na którą wskazuje.

Schemat tabel do utworzenia

TabelaKolumny i ograniczenia
Kategorieid_kategorii (klucz główny, numerowany automatycznie), nazwa (tekst do 60 znaków, obowiązkowy, unikalny)
Producenciid_producenta (klucz główny, automatyczny), nazwa (do 80 znaków, obowiązkowa), kraj (do 60 znaków, obowiązkowy)
Produktyid_produktu (klucz główny, automatyczny), nazwa (do 120 znaków, obowiązkowa), cena (DECIMAL(10,2), obowiązkowa, większa od 0), ilosc_magazyn (liczba całkowita, obowiązkowa, domyślnie 0), id_kategorii (obowiązkowy klucz obcy do Kategorie), id_producenta (obowiązkowy klucz obcy do Producenci)
Klienciid_klienta (klucz główny, automatyczny), imie (do 50 znaków, obowiązkowe), nazwisko (do 80, obowiązkowe), email (do 120, obowiązkowy, unikalny), telefon (do 20 znaków, opcjonalny)
Jedna tabela = jedna rzecz. Produkty wskazują kategorię i producenta, więc ich dane nie powtarzają się w każdym wierszu.

2 · Do wykonania

Zadania do wykonania

Wykonaj pierwsze cztery kroki jako skrypt w zakładce SQL, a potem zadania kontrolne. Przy każdym zobaczysz oczekiwany wynik.

  1. Utwórz bazę sklep_komputerowy z kodowaniem utf8mb4 i wybierz ją (USE).
    Oczekiwany wynikSHOW DATABASES; zawiera sklep_komputerowy
  2. Utwórz tabele Kategorie i Producenci (nie mają kluczy obcych, więc ich kolejność jest dowolna).
    Oczekiwany wynikdwie tabele bez błędu
  3. Utwórz tabelę Produkty z dwoma kluczami obcymi i ograniczeniem CHECK (cena > 0).Powstanie dopiero po tabelach, na które wskazuje.
    Oczekiwany wyniktabela powstała bez błędu
  4. Utwórz tabelę Klienci z unikalnym adresem e-mail.
    Oczekiwany wyniktabela powstała bez błędu
  5. Wykonaj SHOW TABLES;.
    Oczekiwany wynik4 wiersze
  6. Wykonaj SELECT * FROM Produkty;. Tabele są puste, ale zapytanie nie może zgłaszać błędu.
    Oczekiwany wynikpusty wynik (0 wierszy)
  7. Wykonaj DESCRIBE Produkty; i policz kolumny.
    Oczekiwany wynik6 wierszy
  8. Wykonaj DESCRIBE Klienci; i policz kolumny.
    Oczekiwany wynik5 wierszy

3 · Sprawdź się

Czy Twoje wyniki się zgadzają?

To szybka kontrola, a nie ocena. Liczba wierszy jest pierwszym sygnałem, że warunek albo złączenie działa tak, jak trzeba.

Ta interakcja wymaga włączonego JavaScriptu.

4 · Zanim się pomylisz

Trzy pomyłki przy tworzeniu bazy

Rozwiń każdą z nich.

Tabela z kluczem obcym utworzona za wcześnie
Tak nie
CREATE TABLE Produkty (
    ...,
    FOREIGN KEY (id_kategorii) REFERENCES Kategorie(id_kategorii)
);
-- Kategorie jeszcze nie istnieje

Błąd: baza nie może otworzyć tabeli, do której wskazuje klucz obcy (w MySQL ERROR 1824, w MariaDB ERROR 1005).

Tak
CREATE TABLE Kategorie (...);
CREATE TABLE Producenci (...);
CREATE TABLE Produkty (...);

Najpierw tabele nadrzędne, potem podrzędne.

Brak UNIQUE na adresie e-mail
Tak nie
email VARCHAR(120) NOT NULL

Baza pozwoli dodać dwóch klientów z tym samym adresem.

Tak
email VARCHAR(120) NOT NULL UNIQUE

UNIQUE dodasz przy kolumnie albo później przez ALTER TABLE.

Literówka w nazwie kolumny klucza obcego
Tak nie
FOREIGN KEY (id_kategoria) REFERENCES Kategorie(id_kategorii)

Błąd: nazwa kolumny w Produkty nie istnieje albo nie pasuje do tej, na którą wskazujesz.

Tak
FOREIGN KEY (id_kategorii) REFERENCES Kategorie(id_kategorii)

Sprawdź pisownię po obu stronach: id_kategorii, a nie id_kategoria.

5 · Sprawdź sam siebie

Zanim oddasz pracę

Ta lista odpowiada temu, co sprawdza komisja egzaminacyjna: poprawną bazę, poprawne wyniki i dokumentację.

Podsumowanie

Co warto zapamiętać

  1. Tabele nadrzędne tworzysz przed podrzędnymi.
  2. NOT NULL, UNIQUE, CHECK i klucze obce pilnują danych od pierwszego dnia.
  3. Trzymaj się ustalonych nazw: kolejne zadania na nich polegają.
  4. Po utworzeniu struktury sprawdź ją SHOW TABLES i DESCRIBE.

Dalej na swoim koncie

Rozgrzewki, quiz i zadania są w biurku ucznia.

Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.

Zaloguj się →
Źródła i dalsza nauka