Progettazione di database e classi per la pubblicazione di dati utente in un sito Web

-2

Sto creando un piccolo sito di social media, e mi trovo di fronte a un dilemma. Ci sono 2 modi in cui posso progettare le mie classi e il database che attualmente conosco.

  1. Gli utenti possono creare post sul sito caricando immagini, video e testo normale Il mio pensiero iniziale era di creare una classe per ogni tipo di post e ereditano da una classe post genitore, quindi scriverò tutti i post attributi della classe post a una tabella di database chiamata post.

  2. Invece dell'utilizzo dell'ereditarietà, creo una tabella per ogni tipo di post (immagine, video, testo), quindi scrivo ogni tipo di post dell'utente nelle proprie tabelle separate. Successivamente vorrei creare una quarta tabella che seleziona tutte le informazioni dalle altre tre tabelle e crea un oggetto per ogni post. Quindi ogni post può essere visualizzato sul sito web. Questo database si troverebbe in una terza forma normale.

posta Benyamin Jeizan 11.08.2017 - 07:21
fonte

1 risposta

1

Preferisco la seconda opzione in questo scenario. Ciò comporterebbe maggiore flessibilità e, infine, più funzionalità per il tuo sito web di social media.

Non sono sicuro di cosa stai pianificando esattamente. Ma quando penso a siti di social media, voglio postare testo e allegare video e / o foto a quel post. Quindi potrebbe essere sensato consentire sia al testo che a una foto di appartenere a un post. Questo non è possibile e non sarà mai possibile se andrai per l'approccio dell'ereditarietà.

In termini più generali potresti anche prendere in considerazione il principio della composizione su eredità . Anche se i linguaggi orientati agli oggetti sembrano essere centrati sull'ereditarietà e spesso si impara l'ereditarietà come una delle caratteristiche fondamentali di OOP, è spesso consigliabile preferire la composizione di oggetti invece di ereditarli. Il tuo secondo approccio è esattamente questo: tu componi il post con un altro (o molti altri) oggetti, che sono testo / foto / video.

    
risposta data 11.08.2017 - 09:58
fonte

Leggi altre domande sui tag