2010-03-05 28 views
8

tôi muốn thực hiện một ứng dụng php cho phép mọi người gửi ảnh/video/âm thanhLược đồ SQL tốt nhất cho dự án này là gì?

Bây giờ, tất cả mọi thứ được tải lên một kỷ lục sẽ được bổ sung vào cơ sở dữ liệu SQL với infos tập tin theo cách này:

Photos_table : File_Name | Picture_Type | Picture_Width | Picture_height 

Videos_table : File_Name | Duration | Codec 

Sounds_table : File_Name | Bitrate | Duration | Codec 

App sẽ hiển thị tất cả các mục gần đây của tất cả các loại. Là nó tốt để làm giống như các chương trình trước đó, hoặc làm cho tất cả infos trong ONE bảng như thế này:

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

Ý tôi là cách nhanh nhất để thu thập các infos là những gì, tôi chỉ nghĩ rằng chương trình đầu tiên là tổ chức hơn cuối cùng một.

Cảm ơn

Trả lời

10

Chắc chắn không phải tất cả trong một. Nếu bạn đang tải lên phương tiện thì tôi sẽ tạo một bảng gồm tất cả các phương tiện:

Media_table: ID | MediaPath | ETC

Photos_table: MediaID | Picture_Type | Picture_Width | Picture_height

Videos_table: MediaID | Thời lượng | Codec

Sounds_table: MediaID | Tốc độ bit | Thời lượng | Codec

Nhìn vào database normalization.

+3

+1, điều tôi muốn làm –

+0

Đây chắc chắn là cách tốt nhất. Nó cũng gần như RDBMS nhận được đối tượng với thừa kế. –

+0

Cảm ơn durilai, Bất kỳ ý tưởng nào về cách truy vấn MySQL sẽ nhận được infos tất cả các phương tiện gần đây nếu tôi sử dụng lược đồ này? & Cảm ơn rất nhiều – Ryan

1

Sử dụng lược đồ đầu tiên - vì mỗi bảng thể hiện một loại khác với thông tin khác.

Nếu bạn có sơ đồ thứ hai, bạn sẽ kết thúc bằng nhiều giá trị rỗng trong bảng của mình.

Hầu hết các chuyên gia DB sẽ đi kèm với chuyên gia đầu tiên, vì nó là nhiều hơn normalized.

3

Sẽ không có sự khác biệt lớn về hiệu suất. Tuy nhiên, bằng cách sử dụng phương pháp thứ hai của bạn không chuẩn hóa cơ sở dữ liệu của bạn một chút mà được coi là thực hành xấu.

0

Mặc dù câu trả lời bằng cách durilai là tốt nhất, nếu bạn nào đó không đồng ý với nó, bạn cũng có thể giữ cho ba bảng riêng biệt và kết hợp kết quả của họ theo một trong hai cách sau:

  • 1 truy vấn với một LIÊN HIỆP.
  • 3 truy vấn, kết hợp sau đó với PHP.
Các vấn đề liên quan