Projekt podatkovne baze

Od informacijskega problema do delujočega sistema

Kino Aurora ni samo grafični prikaz. Vsaka rezervacija, sedež, projekcija in poročilo uporablja pravo relacijsko bazo Firebird. Ta stran združuje kratko poročilo, konceptualni ER-diagram, logični model in preverljive SQL primere.

01 · Informacijski problem

Zakaj kino potrebuje podatkovno bazo?

Ročno usklajevanje sporeda, sedežev in plačil hitro povzroči dvojne rezervacije in nepovezana poročila.

Prenesi kratko poročilo PDF
1

Problem

Filmi, termini, dvorane, kupci in plačila so povezani podatki. Preglednice težko zagotavljajo, da je isti sedež prodan samo enkrat.

2

Rešitev

Relacijski model enolično določi entitete in povezave. Omejitve, tuji ključi ter transakcije varujejo pravilnost podatkov.

3

Uporaba

Spletni vmesnik podpira rezervacije, CRUD filmskega kataloga, razporejanje, preklice, agregirana poročila in revizijsko sled.

Merljiva izvedba

Obseg podatkovnega sistema

13relacijskih tabel
2shranjeni proceduri
5aktivnih sprožilcev
2podatkovna pogleda
02 · Konceptualni model

ER-diagram: entitete in razmerja

Pravokotniki so entitete, rombi razmerja, oznake 1 in N pa prikazujejo kardinalnost.

Konceptualni ER-diagram Kina AuroraEntitete film, žanr, projekcija, dvorana, sedež, kupec, rezervacija, plačilo in zaposleni z njihovimi razmerji. ŽANR opisuje FILM ima PROJEKCIJA poteka v DVORANA vsebuje SEDEŽ KUPEC ustvari REZERVACIJA plačana z PLAČILO ZAPOSLENI rezervira razporejen NN1N N11N 1N1N NNNN ime žanra naslov dolžina začetek cena vrsta sedeža e-pošta status čas nastanka znesek vloga
Pretvorba M:N: razmerji FILM–ŽANR in PROJEKCIJA–ZAPOSLENI postaneta povezovalni tabeli FILM_GENRE in SCREENING_EMPLOYEE. Izbira sedeža postane BOOKING_SEAT z lastnim atributom PRICE_PAID.
03 · Logični relacijski model

Tabele, primarni in tuji ključi

Vsaka entiteta je enolično določena s primarnim ključem; tuji ključi izvajajo povezave iz konceptualnega modela.

FILM

  • PK film_id BIGINT
  • title VARCHAR(140)
  • director VARCHAR(100)
  • release_year SMALLINT
  • duration_minutes SMALLINT
  • status VARCHAR(12)

GENRE

  • PK genre_id INTEGER
  • name VARCHAR(50) UNIQUE

FILM_GENRE

  • PK/FK film_id → FILM
  • PK/FK genre_id → GENRE

HALL

  • PK hall_id INTEGER
  • name VARCHAR(70) UNIQUE
  • is_active BOOLEAN

SEAT

  • PK seat_id INTEGER
  • FK hall_id → HALL
  • row_label VARCHAR(3)
  • seat_number SMALLINT
  • seat_type VARCHAR(12)

SCREENING

  • PK screening_id BIGINT
  • FK film_id → FILM
  • FK hall_id → HALL
  • start_time TIMESTAMP
  • base_price D_MONEY

CUSTOMER

  • PK customer_id BIGINT
  • first_name, last_name
  • email D_EMAIL UNIQUE
  • created_at TIMESTAMP

BOOKING

  • PK booking_id BIGINT
  • FK customer_id → CUSTOMER
  • FK screening_id → SCREENING
  • booking_code UNIQUE
  • status, total_amount

BOOKING_SEAT

  • PK/FK booking_id → BOOKING
  • PK/FK seat_id → SEAT
  • FK screening_id → SCREENING
  • price_paid D_MONEY
  • UNIQUE(screening_id, seat_id)

PAYMENT

  • PK payment_id BIGINT
  • FK booking_id → BOOKING
  • amount D_MONEY
  • method, status, paid_at

EMPLOYEE

  • PK employee_id INTEGER
  • first_name, last_name
  • role_name, email

SCREENING_EMPLOYEE

  • PK/FK screening_id → SCREENING
  • PK/FK employee_id → EMPLOYEE
  • duty VARCHAR(50)

AUDIT_LOG

  • PK audit_id BIGINT
  • event_time TIMESTAMP
  • entity_name, entity_id
  • action_name, details
04 · Fizična izvedba

Posebnosti implementacije Firebird

Pravila niso samo v vmesniku; ključne omejitve so zapisane v sami bazi.

Zaženi primere poizvedb

Transakcije

Rezervacija kupca, sedežev in plačila se potrdi skupaj ali pa se vse spremembe razveljavijo.

Sprožilci

Izračunajo znesek, preverijo dvorano in samodejno zapišejo spremembe statusa ter sproščene sedeže.

Shranjene procedure

SP_CANCEL_BOOKING izvede kompleksen preklic; SP_SCREENING_SEAT_STATUS vrne razpoložljivost sedežev.

Sistemski katalog Firebird

Tabele, odkrite neposredno v metapodatkih

AUDIT_LOG BOOKING BOOKING_SEAT CUSTOMER EMPLOYEE FILM FILM_GENRE GENRE HALL PAYMENT SCREENING SCREENING_EMPLOYEE SEAT

Pred predstavitvijo: z enim klikom lahko obnovite prvotne filme, termine, stranke in rezervacije.