• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

System encji i tabel w serwisie takim jak np. IMDB czy Filmweb

0 głosów
255 wizyt
pytanie zadane 7 października 2017 w Java przez Jonki Dyskutant (8,180 p.)
edycja 7 października 2017 przez Jonki

Piszę serwis podobny do IMDB lub Filmweb i obecnie próbuję zaprojektować bazę do filmów i kontrybucji. Może przedstawię sposób dodawania takiego filmu.

Najpierw dodany film musi trafić do "poczekalni" i czekać na weryfikację przez administratora

@Entity
@Table(name = "movies_lounge")
@Data
public class MovieLoungeEntity {}

jeśli film przejdzie pomyślnie weryfikację, jest dodawany do głównej tabeli

@Entity
@Table(name = "movies")
@Data
public class MovieEntity {}

Tu jest jeszcze w miarę OK.

Ale w takim serwisie musi być również możliwość edycji danych filmów.
Na przykład chcemy edytować opis, więc tworzę encję tylko z polami id_movie, id_author, description i edycja trafia do poczekalni

@Entity
@Table(name = "movies_descriptions_lounge")
@Data
public class MovieLoungeEntity {}

po weryfikacji również trafia do swojej głównej tabeli edycji opisów

@Entity
@Table(name = "movies_descriptions")
@Data
public class MovieDescriptionLoungeEntity {}

I taki sposób musi być stosowany dla wszystkich edytowanych pól, co daje kilkadziesiąt tabeli i encji. Po prostu masakra. Taki sposób jest stosowany, aby potem można było pobrać np. listę edytowanych opisów itd. W obecnej fazie pomijam punktacje za edycje konkretnych elementów, bo to wgl. system miałby z 200 tabel.

Ma ktoś jakiś pomysł, jak można to zaprojektować optymalniej?

 

EDIT: Rozkminiłem jak nie tworzyć dwóch tabel dla edycji czyli poczekalni i właściwej, a tylko jedną. Stworzę wartość enum STATUS i będą dostępne trzy statusy 'Czeka, Zaakceptowane, Odrzucone'.

1 odpowiedź

0 głosów
odpowiedź 7 października 2017 przez Ehlert Ekspert (215,010 p.)
Wywal tą poczekalnię. Dodajesz tabelę editions która zawiera id edycji, id filmu, enum z nazwą pola, nową wartość tego pola oraz timestamp.
komentarz 7 października 2017 przez Jonki Dyskutant (8,180 p.)

Chodzi Tobie o to, aby była tabele z polami

id      (np. 1)
id_filmu (np 100)
id_autora_edycji (np. 221)
nazwa_edytowanego_pola (np. OPIS)
opis     (np. Coś tam coś)
data     (np. 2017.10.07)
status     (np. czeka)

a skoro edytować można np. budżet to tabela powinna mieć wszystkie te same pola co film

id      (np. 1)
id_filmu (np 100)
id_autora_edycji (np. 221)
nazwa_edytowanego_pola (np. OPIS)
opis     (np. Coś tam coś)
budżet (np. null)
box_office (np. null)
fabuła (np. null)
ciekawostki (np. null)
data     (np. 2017.10.07)
status     (np. czeka)

i gdy np. edytuję tylko opis, to reszta ma być null. Tak?

A gdy edytuję np. budżet to ma wyglądać to tak

id      (np. 1)
id_filmu (np 100)
id_autora_edycji (np. 221)
nazwa_edytowanego_pola (np. BUDŻET)
opis     (np. null)
budżet (np. 100000)
box_office (np. null)
fabuła (np. null)
ciekawostki (np. null)
data     (np. 2017.10.07)
status     (np. czeka)

Podobne pytania

0 głosów
0 odpowiedzi 187 wizyt
+1 głos
1 odpowiedź 265 wizyt
pytanie zadane 11 listopada 2020 w Java przez siemasiema123.96 Początkujący (350 p.)

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...