2010-03-05 17 views
8

voglio fare un'applicazione PHP che lasciare che la gente presentare foto/video/suoniQual è il miglior schema SQL per questo progetto?

Ora, tutto ciò che ha caricato un record sarà aggiunto al database SQL con informazioni di file in questo modo:

Photos_table : File_Name | Picture_Type | Picture_Width | Picture_height 

Videos_table : File_Name | Duration | Codec 

Sounds_table : File_Name | Bitrate | Duration | Codec 

L'App mostrerà tutti gli elementi recenti di tutti i tipi. E 'bene fare come il precedente regime, o fare tutte le informazioni in una tabella come questa:

File_Name | Picture_Type | Picture_Width | Picture_height | Duration | Codec | Bitrate 

voglio dire qual è il modo più veloce per raccogliere le informazioni, penso solo che il primo schema è più organizzato di quello precedente uno.

Grazie

risposta

10

Sicuramente non tutto in uno. Se stai caricando i file multimediali, creerei una tabella di tutti i supporti:

Media_table: ID | MediaPath | ETC

Photos_table: MediaID | Picture_Type | Picture_Width | Picture_height

Videoteca: MediaID | Durata | Codec

Soundstable: MediaID | Bitrate | Durata | Codec

Cerca su database normalization.

+3

+1, cosa farei –

+0

Questo è sicuramente il modo migliore. È anche vicino come gli RDBMS arrivano agli oggetti con l'ereditarietà. –

+0

Grazie durilai, Qualche idea su come sarà la query MySQL per ottenere le informazioni su tutti i media recenti se utilizzo questo schema? & Grazie mille – Ryan

1

Utilizzare il primo schema - come ogni tabella rappresenta un tipo diverso di informazioni differenti.

Se si avesse il secondo schema, si otterrebbe un sacco di null nella tabella.

La maggior parte dei professionisti DB andrebbe con il primo, poiché è più normalized.

3

Non ci sarà una grande differenza di prestazioni. Tuttavia, l'uso del secondo metodo denormalizza un po 'il database che è considerato una cattiva pratica.

0

Anche se la risposta dal durilai è il migliore, se in qualche modo non siete d'accordo con esso si può anche tenere le tre tabelle separate e combinare i loro risultati in uno dei due modi:

  • 1 query con un UNIONE.
  • 3 query, combinate in seguito con PHP.
Problemi correlati