Stiamo progettando di creare API REST che abbia oggetti principali come Utente e Articolo. L'oggetto dell'articolo ha i seguenti campi
- Titolo - una riga
- Descrizione: può espandersi fino a pochi paragrafi
- Immagine - una o più immagini sull'articolo
- Elenco di categorie - categorie di articoli (a partire da uno, ma in futuro possono essere più)
- Elenco di tag - tag relativi all'articolo
- Stato: stato dell'articolo in sospeso, revisionato, approvato ecc.
Techlogies / Frameworks che utilizziamo:
- Java
- Primavera
- SpringBoot
- MySQL
- API REST con tipo di carico utile JSON per la risposta alla richiesta
Abbiamo discusso di alcuni piani ma volevamo sapere quale sarebbe stato il miglior schema di database per archiviare articoli nel database MySQL.
- Una tabella per articolo, categoria, tag e quindi anoter due tabelle per la relazione molti-a-molti tra articolo-categoria e tag-articolo
- Una tabella per articolo e categoria (presupponendo che ogni articolo abbia una categoria) e memorizza ID_categoria nella tabella articoli e memorizza i tag come valori con virgola nella tabella dell'articolo In qualsiasi altro modo, possiamo archiviare questi dettagli nel database in modo efficiente?
Un altro dubbio che abbiamo è come memorizzare le immagini. Massimo può essere fino a 3-4 immagini per articolo.
-
Creiamo un'altra tabella per immagini e memorizziamo come CLOB / BLOB e poi in un'altra tabella memorizziamo la relazione tra articolo e immagine?
-
O invece di CLOB / BLOB, lo memorizziamo come stringa codificata base64 nel database e decifriamo sul lato client?
-
O carichiamo l'immagine reale su una soluzione di file hosting (ad esempio AWS S3 ..?) e quindi archiviamo l'URL dell'immagine nella tabella?
Quale dei precedenti sarà una soluzione efficiente per la memorizzazione e la reterivisione di immagini.