2010-03-05 6 views
8

ich eine PHP-Anwendung machen wollen, dass die Menschen Fotos/Videos einreichen lassen/klingtWas ist das beste SQL-Schema für dieses Projekt?

nun alles hochgeladen ein Datensatz SQL-Datenbank mit Dateiinformationen auf diese Weise hinzugefügt werden:

Photos_table : File_Name | Picture_Type | Picture_Width | Picture_height 

Videos_table : File_Name | Duration | Codec 

Sounds_table : File_Name | Bitrate | Duration | Codec 

Die App zeigt alle aktuellen Gegenstände aller Art an. Ist es gut, wie das vorherige Schema zu tun, oder machen Sie alle Infos in einer Tabelle wie folgt aus:

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

Ich meine, was der schnellste Weg, um die Infos zu sammeln, ich denke nur, das erste Schema besser organisiert als die letzte ist ein.

Dank

Antwort

10

Definitiv nicht alles in einem. Wenn Sie Medien hochladen, würde ich eine Tabelle aller Medien erstellen:

Media_table: ID | Medienpfad | ETC

Fotos_Tabelle: MediaID | Picture_Type | Bildbreite | Picture_height

Videos_Tabelle: MediaID | Dauer | Codec

Sounds_Tabelle: MediaID | Bitrate | Dauer | Codec

Blick in database normalization.

+3

+1, was ich tun würde –

+0

Dies ist definitiv der beste Weg. Es ist auch so nah wie RDBMS zu Objekten mit Vererbung gelangen. –

+0

Danke durilai, Irgendeine Idee, wie die MySQL-Abfrage sein wird, um die Informationen aller aktuellen Medien zu erhalten, wenn ich dieses Schema verwende? & Vielen Dank – Ryan

1

das erste Schema verwenden - wie jede Tabelle eine andere Art mit unterschiedlichen Informationen darstellt.

Wenn Sie das zweite Schema hätten, würden Sie viele Nullen in Ihrer Tabelle haben.

Die meisten DB-Profis würden mit dem ersten gehen, da es mehr normalized ist.

3

Es wird keinen großen Leistungsunterschied geben. Wenn Sie jedoch Ihre zweite Methode verwenden, denormalisieren Sie Ihre Datenbank ein wenig, was als schlechte Praxis angesehen wird.

0

Obwohl die Antwort von durilai die beste ist, wenn man irgendwie damit nicht einverstanden sind können Sie auch die drei separaten Tabellen halten und ihre Ergebnisse in einer von zwei Möglichkeiten kombinieren:

  • 1 Abfrage mit einer UNION.
  • 3 Abfragen, anschließend mit PHP kombiniert.
Verwandte Themen