2010-03-05 40 views
8

我想打一個PHP應用程序,允許用戶提交的照片/視頻/聲音這個項目最好的SQL方案是什麼?

現在,一切都上傳記錄將通過這種方式被添加到SQL數據庫文件的相關信息:

Photos_table : File_Name | Picture_Type | Picture_Width | Picture_height 

Videos_table : File_Name | Duration | Codec 

Sounds_table : File_Name | Bitrate | Duration | Codec 

應用程序將顯示所有最近的所有項目。這是好做像以前的方案,或使所有的相關信息在一個表是這樣的:

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

我的意思是,以收集相關信息以最快的方式,我只是覺得第一個方案比過去更有組織一。

謝謝

回答

10

絕對不是全部。如果你正在上傳媒體,那麼我會創建一個所有媒體的表格:

Media_table:ID | MediaPath | ETC

Photos_table:MediaID | Picture_Type | Picture_Width | Picture_height

Videos_table:MediaID |持續時間| 編解碼器

Sounds_table:MediaID |比特率| 持續時間|編解碼器

調查database normalization

+3

+1,我會做 –

+0

這絕對是最好的方式。它也和RDBMSs接近帶有繼承的對象一樣接近。 –

+0

謝謝durilai,如果我使用這個方案,想知道MySQL查詢如何獲取所有最近的媒體信息? &非常感謝 – Ryan

1

使用第一個方案 - 因爲每個表代表具有不同信息的不同類型。

如果你有第二個方案,你最終會得到很多空值在表格中。

大多數DB專業人士將與第一個去,因爲它是更normalized

3

不會有很大的性能差異。但是,使用第二種方法會使數據庫非規範化,這被認爲是不好的做法。

0

雖然durilai的回答是最好的,如果你有點不同意它也可以保持三個獨立的表和以下兩種方式之一結合自己的結果:

  • 1查詢與聯盟。
  • 3個查詢,隨後與PHP結合。
相關問題