Domanda

Mi chiedo solo quale di questi sarebbe meglio utilizzare in un'applicazione web. Ho una web app che lascia il posto utente al sito. Ci sono tre diversi tipi di messaggi, ma abbastanza simili che ho potuto mettere sotto un tavolo. È che va bene per fare?

ho potuto normalizzare le tabelle in questo modo? (Mettendo tipo sotto o)

Tabella 1

UserPost
post_id 
user_id
type

Tabella 2

Post
post_id 
datetime
text

O sarebbe utilizzando una tabella di meglio?

Tabella

Post
user_id
post_id 
datetime
type
text

Sono appoggiato verso la terza via, a meno che qualcuno può indicare svantaggi.

È stato utile?

Soluzione

Nel primo approccio, si avrà sempre a creare una riga in entrambe le tabelle per ogni post utente. Quindi non c'è nessun inconveniente solo avere un tavolo, user_id dovrebbe quindi essere una chiave esterna per la tabella degli utenti, post_id la chiave primaria e le altre colonne contengono i dati. Non c'è alcuna ragione per la creazione di due tabelle.

Se i tre diversi tipi di messaggi sono descrivibili da un campo comune, un discriminatore come type va bene.

Altri suggerimenti

Unire le tabelle, in realtà non c'è vantaggio per rompere loro fuori come avete in Table1 e Table2. Ora, se Tabella 1 dispone di una chiave separata rispetto post_id, si potrebbe eliminare qualche ridondanza. Esempio:

Table 1

UserPost
user_post_id 
user_id
type

Table 2

Post
post_id 
user_post_id 
datetime
text

In base al più recente commento la mia comprensione è che post_id sarebbe una chiave candidata in tutte e tre le tabelle di esempio. Se questo è corretto, allora vi consiglio di creare una tabella per ogni serie unica di attributi (ogni tipo di post). Quindi, se tutti i messaggi hanno gli stessi attributi in comune, allora ha senso averli tutti in un tavolo, ma se ci sono due o tre tipi poi due o tre tavoli sarebbe più appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top