Read this post in: de_DEen_USes_ESfr_FRhi_INid_IDjapt_PTru_RUvizh_CNzh_TW

🍟 Kompleksny schemat ERD: System zintegrowanych operacji McDonald’s

(Skupiony na przetwarzaniu zamówień, doświadczeniu klienta i operacjach sklepu)


🔍 Kontekst biznesowy

Ten diagram relacji encji modeluje podstawowe operacje w sklepie McDonald’s, skupiając się na:

  • Przepływ zamówienia od klienta do płatności

  • Role pracowników i zarządzanie sklepem

  • Dostępność menu i ceny

  • Lojalność klientów i powtarzające się interakcje

  • Podstawowe śledzenie zapasów (dla produktów spożywczych)

Uwaga: Jest to nie pełna baza danych korporacyjna (np. łańcuch dostaw lub HR), ale realistyczna, skalowalna podstawa dla systemu kasowego w restauracji fast-food.


📚 Encje i atrybuty

Encja Atrybuty
Klient CustomerID (PK), Imię i nazwisko, Telefon, Email, Punkty lojalności, Poziom członkostwa (np. Brązowy, Srebrny)
Sklep StoreID (PK), Nazwa, Lokalizacja (Adres), ManagerID (FK → Employee), Godziny otwarcia, Przychód całkowity (miesięczny)
Pracownik EmployeeID (PK), Imię i nazwisko, Stanowisko (Kasjer, Kucharz, Menadżer, Nadzorca), StoreID (FK), Data zatrudnienia, Grafik pracy
Pozycja menu MenuItemID (PK), Nazwa, Opis, Cena, Kategoria (Burger, Napój, Dodatki, Deser), Aktywny, URL obrazu
Zamówienie OrderID (PK), Czas zamówienia, Status (Oczekujące → Przygotowywanie → Gotowe → Zakończone → Anulowane), Kwota całkowita, StoreID (FK), CustomerID (FK)
Pozycja zamówienia OrderItemID (PK), OrderID (FK), MenuItemID (FK), Ilość, Kwota linii (obliczana automatycznie)
Płatność PaymentID (PK), Kwota, Metoda (Gotówka, Karta kredytowa, MobilePay), ID transakcji, OrderID (FK), Czas
Promocja PromocjaID (PK), Kod (np. „WELCOME10”), TypZniżki (Procentowa, Stała), WartośćZniżki, DataAktywacji, DataWygaśnięcia, Dotyczy (np. Obiad, WszystkiePozycje)

🔗 Relacje (z kardynalnościami)

Relacja Kardynalność Opis
Klient → Zamówienie 1 → 0.. Klient składa wiele zamówień w czasie.
Zamówienie → PozycjaZamówienia 1 → 0.. Każde zamówienie zawiera zero lub więcej pozycji z menu.
Zamówienie → Płatność 1 → 1 Każde ukończona zamówienie ma dokładnie jedną płatność.
Zamówienie → Sklep 1 → 1 Każde zamówienie jest składane w jednym konkretnym sklepie.
Sklep → Pracownik 1 → 0.. Sklep zatrudnia wielu pracowników (kasy, kucharze, menedżerowie).
Sklep → Zamówienie 1 → 0.. Sklep otrzymuje wiele zamówień.
Pozycja menu → Pozycja zamówienia 1 → 0.. Pozycja menu może pojawić się w wielu zamówieniach.
Promocja → Zamówienie 0 → 1 Promocja może dotyczyć zamówienia (np. „Kup 1 Big Mac, drugi gratis”).
Pracownik → Sklep 1 → 1 Każdy pracownik pracuje w jednym sklepie.

✅ Opcjonalne: DodajProgram lojalnościowyencja, jeśli potrzebna jest głębsza logika lojalności (np. wymiana punktów, nagrody).


🔒 Ograniczenia i zasady biznesowe

  • Cena musi być > 0

  • Status zamówienia nie może być „Zakończone”, jeśli brakuje płatności

  • Ilość w pozycji zamówienia ≥ 1

  • Promocje można stosować tylko wtedy, gdy są aktywne i wchodzą w okno czasowe

  • Klient musi być powiązany z co najmniej jednym zamówieniem, aby zdobywać punkty lojalnościowe

  • Pozycje menu są oznaczane jako „Nieaktywne”, jeśli brakują lub zostały zakończone


📝 Przypadki użycia (dlaczego ten ERD ma znaczenie)

Przypadek użycia Zalety
Projekt systemu POS Zezwala na śledzenie zamówień w czasie rzeczywistym, płatności i generowanie paragonów
Alerty inventarzowe Gdy pozycja menu jest często zamówiona, monitoruj poziom zapasów
Programy lojalnościowe Śledź gromadzenie punktów, oferuj indywidualne zniżki
Analizy sklepu Identyfikuj najlepiej sprzedające się pozycje, godziny szczytu, popularne promocje
Zarządzanie personel Przypisz role, śledź zmiany, zarządzaj wydajnością

📂 Formaty wyjściowe

Możesz skopiować i wkleić dowolny z poniższych fragmentów do dokumentacji, prezentacji lub narzędzi projektowania bazy danych.


✅ 1. ERD opisane tekstowo (do dokumentacji)

Encje:

- Klient
  - CustomerID (PK)
  - Imię
  - Telefon
  - Email
  - Punkty lojalnościowe
  - Poziom członkostwa

- Sklep
  - StoreID (PK)
  - Nazwa
  - Lokalizacja
  - ManagerID (FK → Pracownik)
  - Godziny otwarcia
  - Przychód miesięczny

- Pracownik
  - EmployeeID (PK)
  - Imię
  - Stanowisko (Kasjer, Kucharz, Menadżer)
  - StoreID (FK)
  - Data zatrudnienia

- Pozycja menu
  - MenuItemID (PK)
  - Nazwa
  - Opis
  - Cena
  - Kategoria
  - IsActive

- Zamówienie
  - OrderID (PK)
  - Czas zamówienia
  - Status (Oczekujące, Przygotowywane, Gotowe, Zakończone, Anulowane)
  - CustomerID (FK)
  - StoreID (FK)
  - Całkowita kwota

- Pozycja zamówienia
  - OrderItemID (PK)
  - OrderID (FK)
  - MenuItemID (FK)
  - Ilość
  - Kwota linii

- Płatność
  - PaymentID (PK)
  - Kwota
  - Metoda (Gotówka, Karta kredytowa, MobilePay)
  - OrderID (FK)
  - Czas

- Promocja
  - PromotionID (PK)
  - Kod
  - Typ zniżki
  - Wartość zniżki
  - Data aktywacji
  - Data wygaśnięcia
  - Dotyczy

Relacje:
- Klient "1" -- "0..*" Zamówienie
- Zamówienie "1" -- "0..*" Pozycja zamówienia
- Zamówienie "1" -- "1" Płatność
- Zamówienie "1" -- "1" Sklep
- Sklep "1" -- "0..*" Pracownik
- Pozycja menu "1" -- "0..*" Pozycja zamówienia
- Promocja "0..*" -- "1" Zamówienie (warunkowo w zależności od statusu aktywności)

✅ 2. Wersja Mermaid.js (do Markdown, Notion, Obsidian)

erDiagram
    KLIENCI ||--o{ ZAMÓWIENIA : "umieszcza"
    SKLEPY ||--o{ ZAMÓWIENIA : "obsługuje"
    SKLEPY ||--o{ PRACOWNICY : "zatrudnia"
    SKLEPY ||--o{ POZYCJE_MENU : "sprzedaje"
    ZAMÓWIENIA ||--o{ POZYCJE_ZAMÓWIENIA : "zawiera"
    ZAMÓWIENIA ||--o{ PŁATNOŚCI : "ma"
    POZYCJE_MENU ||--o{ POZYCJE_ZAMÓWIENIA : "występuje w"
    PROMOCJE ||--o{ ZAMÓWIENIA : "dotyczy"

    KLIENCI {
        int CustomerID PK
        string Name
        string Phone
        string Email
        int LoyaltyPoints
        string MembershipTier
    }

    SKLEPY {
        int StoreID PK
        string Name
        string Location
        int ManagerID FK
        string OpenHours
        decimal MonthlySales
    }

    PRACOWNICY {
        int EmployeeID PK
        string Name
        string Role
        int StoreID FK
        date HireDate
    }

    POZYCJE_MENU {
        int MenuItemID PK
        string Name
        string Description
        decimal Price
        string Category
        boolean IsActive
    }

    ZAMÓWIENIA {
        int OrderID PK
        datetime OrderTime
        string Status
        int CustomerID FK
        int StoreID FK
        decimal TotalAmount
    }

    POZYCJE_ZAMÓWIENIA {
        int OrderItemID PK
        int OrderID FK
        int MenuItemID FK
        int Quantity
        decimal LineTotal
    }

    PŁATNOŚCI {
        int PaymentID PK
        decimal Amount
        string Method
        int OrderID FK
        datetime Timestamp
    }

    PROMOCJE {
        int PromotionID PK
        string Code
        string DiscountType
        decimal DiscountValue
        datetime ActiveDate
        datetime ExpireDate
        string AppliesTo
    }



✅ 3. Wersja PlantUML 

' ERD systemu zamówień McDonald's (PlantUML)

package "Operacje McDonald's" {
  entity "Klient" {
    - CustomerID (PK)
    - Imię i nazwisko
    - Telefon
    - Email
    - Punkty lojalnościowe
    - Poziom członkostwa
  }

  entity "Sklep" {
    - StoreID (PK)
    - Nazwa
    - Lokalizacja
    - ManagerID (FK → Pracownik)
    - Godziny otwarcia
    - Przychód miesięczny
  }

  entity "Pracownik" {
    - EmployeeID (PK)
    - Imię i nazwisko
    - Stanowisko (Kasjer, Kucharz, Menadżer)
    - StoreID (FK → Sklep)
    - Data zatrudnienia
  }

  entity "Pozycja menu" {
    - MenuItemID (PK)
    - Nazwa
    - Opis
    - Cena
    - Kategoria (Burger, Napój, Dodatek)
    - Aktywny
  }

  entity "Zamówienie" {
    - OrderID (PK)
    - Czas zamówienia
    - Status (Oczekujące, Przygotowywane, Gotowe, Zakończone)
    - CustomerID (FK → Klient)
    - StoreID (FK → Sklep)
    - Całkowita kwota
  }

  entity "Pozycja zamówienia" {
    - OrderItemID (PK)
    - OrderID (FK → Zamówienie)
    - MenuItemID (FK → Pozycja menu)
    - Ilość
    - Kwota częściowa
  }

  entity "Płatność" {
    - PaymentID (PK)
    - Kwota
    - Metoda (Gotówka, Karta kredytowa)
    - OrderID (FK → Zamówienie)
    - Czas
  }

  entity "Promocja" {
    - PromotionID (PK)
    - Kod (np. WELCOME10)
    - Typ zniżki (Procentowa, Stała)
    - Wartość zniżki
    - Data aktywacji
    - Data wygaśnięcia
    - Dotyczy
  }

  Klient "1" -- "0..*" Zamówienie : "zamawia"
  Zamówienie "1" -- "0..*" Pozycja zamówienia : "zawiera"
  Zamówienie "1" -- "1" Płatność : "ma"
  Zamówienie "1" -- "1" Sklep : "zostaje złożone w"
  Sklep "1" -- "0..*" Pracownik : "zatrudnia"
  Pozycja menu "1" -- "0..*" Pozycja zamówienia : "występuje w"
  Promocja "0..*" -- "1" Zamówienie : "ma zastosowanie do"
}

 


🔍 Przyszłe rozszerzenia (opcjonalne)

Jeśli chcesz rozszerzyć ten ERD, rozważ dodanie:

  • Inwentarz → Śledzi poziomy zapasów, punkty ponownego zlecania, informacje o dostawcach

  • Harmonogram zmian → Dzienne zmiany, przerwy, przyporządkowania do zmian

  • Dostawca → Kto dostarcza składniki (np. „Dostawca sera”)

  • Menu sezonowe → Specjalne promocje (np. „Menu BBQ letnie”)

  • Geolokalizacja → Do śledzenia dostawy lub odbioru


🚀 Ostateczne rozważania

Ten ERD to realistyczny, skalowalny i zgodny z operacjami McDonald’s — odzwierciedla rzeczywiste przepływy pracy systemu POS, role pracowników i zachowania klientów.

✅ Teraz masz kompletny, gotowy do użycia ERD dla systemu McDonald’s — niezależnie czy do projektu szkolnego, analizy biznesowej czy projektu technicznego.

Sidebar Search
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...