Skip to content
This repository has been archived by the owner on Jul 10, 2023. It is now read-only.

Specifikacija baze podataka

Luka Simić edited this page Apr 20, 2022 · 1 revision

Uvod

Namena

Baza podataka za projekat iz predmeta Principi softverskog inženjerstva predstavlja fleksibilan i pouzdan način čuvanja podataka i pristupa istim od strane veb servera radi serviranja zahteva klijenta.

U dokumentu je dat model podataka u IE (Information Engineering) notaciji, šema relacione baze podataka, kao i opis svih tabela u bazi podataka.

Ovaj dokument služi kao osnova za razvoj detaljne projektne specifikacije posmatranog podsistema, implementaciju i testiranje. Svi podaci koje je potrebno čuvati su dobijeni u fazi analize korisničkih zahteva.

Ciljne grupe

Dokument je namenjen vođi (tim lideru) projekta i članovima razvojnog tima.

Tim lideru ovaj dokument služi za planiranje razvojnih aktivnosti i specifikaciju imena tabela i imena polja u bazi, kako bi nezavisne celine, implementirane od strane različitih delova razvojnog tima, na kraju rada bile uspešno integrisane.

Razvojnom timu dokument služi kao osnova za dizajn i implementaciju.

Organizacija dokumenta

Ostatak dokumenta organizovan je u sledeća poglavlja:

  1. Model podataka: model podataka u bazi i šema baze, i
  2. Tabele: spisak tabela.

Otvorena pitanja

U ovoj sekciji navode se otvorena pitanja. Ona se numerišu i pozicioniraju u vremenu radi lakšeg referisanja. Kada se pitanje reši, potrebno je to uneti u odgovarajuću rubriku.

# Datum Problem Rešenje
1
2
3
4

Model podataka

Dijagram IE notacije

Dijagram IE notacije

Šema relacione baze podataka

  • USERS(id, username, real_name, created_at, password, profile_photo_uuid, is_admin)
  • FOLLOWS(follower_id, followee_id, created_at)
  • BLOCKS(blocker_id, blockee_id, created_at)
  • POSTS(id, post_url, file_uuid, description, user_id, created_at, password, reviewed, sponsored)
  • UNLOCKS(user_id, post_id, created_at)
  • POST_LIKES(user_id, post_id, created_at)
  • COMMENTS(id, comment_text, post_id, parent_comment_id, user_id, created_at)
  • COMMENT_LIKES(user_id, comment_id, created_at)
  • HASHTAGS(post_id, tag_name)

Tabele

USERS

Sadrži podatke o korisniku. Korisničko ime mora biti jedinstveno. Polje za šifru je heširano.

Naziv Tip PK FK U NN
id INTEGER
username VARCHAR(255)
real_name VARCHAR(255)
created_at TIMESTAMP
password VARCHAR(255)
profile_photo_uuid UUID
is_admin BOOLEAN

FOLLOWS

Sadrži podatke o praćenjima naloga. Korisnik može da zaprati nekog korisnika samo jednom.

Naziv Tip PK FK U NN
follower_id INTEGER
followee_id INTEGER
created_at TIMESTAMP

BLOCKS

Sadrži podatke o blokiranju naloga. Korinisk može da blokira korisnika samo jednom.

Naziv Tip PK FK U NN
blocker_id INTEGER
blockee_id INTEGER
created_at TIMESTAMP

POSTS

Sadrži podatke o objavi. Šifra objave je u izvornom obliku.

Naziv Tip PK FK U NN
id INTEGER
post_url VARCHAR(16)
file_uuid UUID
description VARCHAR(255)
user_id INTEGER
created_at TIMESTAMP
password VARCHAR(32)
reviewed BOOLEAN
sponsored BOOLEAN

UNLOCKS

Sadrži podatke o otključavanju objava. Korisnik može da otključa objavu samo jednom.

Naziv Tip PK FK U NN
user_id INTEGER
post_id INTEGER
created_at TIMESTAMP

POST_LIKES

Sadrži podatke o sviđanju objava. Korisnik može da označi da mu se objava sviđa samo jednom.

Naziv Tip PK FK U NN
user_id INTEGER
post_id INTEGER
created_at TIMESTAMP

COMMENTS

Sadrži podatke o komentarima.

Naziv Tip PK FK U NN
id INTEGER
comment_text VARCHAR(255)
post_id INTEGER
parent_comment_id INTEGER
user_id INTEGER
created_at TIMESTAMP

COMMENT_LIKES

Sadrži podatke o sviđanju komentara. Korisnik može da označi da mu se komentar sviđa samo jednom.

Naziv Tip PK FK U NN
user_id INTEGER
comment_id INTEGER
created_at TIMESTAMP

HASHTAGS

Sadrži podatke o heštegovima.

Naziv Tip PK FK U NN
post_id INTEGER
tag_name VARCHAR(32)
Clone this wiki locally