Advertisement
dzocesrce

[BNP] Video records

Dec 8th, 2024 (edited)
658
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.73 KB | None | 0 0
  1. /*
  2. Релационата база е дефинирана преку следните релации:
  3. Korisnik(k_ime, ime, prezime, tip, pretplata, datum_reg, tel_broj, email)
  4. Premium_korisnik(k_ime*, datum, procent_popust)
  5. Profil(k_ime*, ime, datum)
  6. Video_zapis(naslov, jazik, vremetraenje, datum_d, datum_p)
  7. Video_zapis_zanr(naslov*, zanr)
  8. Lista_zelbi(naslov*, k_ime*, ime*)
  9. Preporaka(ID, k_ime_od*, k_ime_na*, naslov*, datum, komentar, ocena)
  10.  
  11. 1) Доколку јазикот на видео записот не е наведен, треба да се пополни со
  12. предефинирана вредност ‘English’
  13. 2) Доколку процентот на попуст на премиум корисниците не е наведен,
  14. треба да се пополни со предефинирана вредност од 20 проценти
  15. 3) Полето за чување на телефонскиот број на корисникот потребно е да
  16. биде со максимална големина од 12 карактери
  17. 4) Коментар при препорака мора да биде внесен при што не смее да
  18. надмине големина од 250 карактери
  19. 5) Датумот на достапност на видео запис не може да биде пред датумот на
  20. премиера
  21. 6) Оцената на препораката мора да биде од 1 до 5
  22. 7) Доколку некој видео запис се избрише од системот, препораките за тој
  23. запис треба да останат зачувани во базата на податови со
  24. предефинирана вредност за наслов на записот 'Deleted'
  25. 8) При промена или бришење на корисникот, промената треба да се
  26. проследи и до табелата со премиум корисници.
  27. 9) Валидни препораки кои се внесуваат во базата мора да се по
  28. започнување на системот за стриминг на 7ми декември 2022 година
  29. 10) Регистрацијата на корисници во системот е дозволена од почеток на
  30. 2023 година до крајот на 2024 година
  31. */
  32. CREATE TABLE Korisnik(
  33.     k_ime TEXT PRIMARY KEY,
  34.     ime TEXT,
  35.     prezime TEXT,
  36.     tip TEXT,
  37.     pretplata TEXT,
  38.     datum_reg DATE,
  39.     tel_broj VARCHAR(12),
  40.     email TEXT,
  41.     CONSTRAINT datum_reg_check CHECK (datum_reg>='2023-01-01' AND datum_reg<='2024-12-31'),
  42.     --CONSTRAINT tel_broj_max CHECK (tel_broj != '____________%')
  43. );
  44. CREATE TABLE Premium_korisnik(
  45.     k_ime TEXT PRIMARY KEY,
  46.     datum DATE,
  47.     procent_popust INT DEFAULT 20,
  48.     FOREIGN KEY (k_ime) REFERENCES Korisnik (k_ime) ON DELETE SET NULL ON UPDATE SET NULL
  49. );
  50. CREATE TABLE Profil(
  51.     k_ime TEXT,
  52.     ime TEXT,
  53.     datum DATE,
  54.     PRIMARY KEY (k_ime,ime),
  55.     FOREIGN KEY (k_ime) REFERENCES Korisnik (k_ime) ON DELETE CASCADE ON UPDATE CASCADE
  56. );
  57. CREATE TABLE Video_zapis(
  58.     naslov TEXT PRIMARY KEY DEFAULT 'Deleted',
  59.     jazik TEXT DEFAULT 'English',
  60.     vremetraenje INT,
  61.     datum_d DATE,
  62.     datum_p DATE,
  63.     CONSTRAINT datum_check CHECK (datum_d>=datum_p)
  64. );
  65. CREATE TABLE Video_zapis_zanr(
  66.     naslov TEXT,
  67.     zanr TEXT,
  68.     PRIMARY KEY (naslov,zanr),
  69.     FOREIGN KEY (naslov) REFERENCES Video_zapis (naslov) ON DELETE CASCADE ON UPDATE CASCADE
  70. );
  71. CREATE TABLE Lista_zelbi(
  72.     --ID TEXT PRIMARY KEY,
  73.     naslov TEXT,
  74.     k_ime TEXT,
  75.     ime TEXT,
  76.     PRIMARY KEY(naslov,k_ime,ime),
  77.     FOREIGN KEY (k_ime,ime) REFERENCES Profil (k_ime,ime) ON DELETE CASCADE ON UPDATE CASCADE,
  78.     FOREIGN KEY (naslov) REFERENCES Video_zapis (naslov) ON DELETE CASCADE ON UPDATE CASCADE
  79. );
  80. CREATE TABLE Preporaka(
  81.     ID TEXT PRIMARY KEY,
  82.     k_ime_od TEXT,
  83.     k_ime_na TEXT,
  84.     naslov TEXT,
  85.     datum DATE,
  86.     komentar VARCHAR(250),
  87.     ocena INT,
  88.     FOREIGN KEY (k_ime_od) REFERENCES Korisnik (k_ime) ON DELETE CASCADE ON UPDATE CASCADE,
  89.     FOREIGN KEY (k_ime_na) REFERENCES Korisnik (k_ime) ON DELETE CASCADE ON UPDATE CASCADE,
  90.     FOREIGN KEY (naslov) REFERENCES Video_zapis (naslov) ON DELETE SET DEFAULT ON UPDATE CASCADE,
  91.     CONSTRAINT ocena_values (ocena IN (1,2,3,4,5)),
  92.     CONSTRAINT datum_preporaka_check CHECK (datum>'2022-12-07'),
  93.     --CONSTRAINT komentar_vnes CHECK (komentar!='')
  94.     --CONSTRAINT komentar_length CHECK (komentar!='__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________%')
  95. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement