2016-05-23 8 views
-4

OOP - アーキテクチャの提案私は、4つのセクション持っているウェブサイトで

  • 小型メイン画像
  • ビッグメイン画像:イベント、場所、ニュースと形式

    をそれらのすべてが画像の4種類があります

  • ギャラリー画像
  • 説明イメージ(CKEditorバージョンを介して使用されるテキストの説明では画像)

どのようにデータベース、クラス、ファイルシステムを設計しますか?

私の考えの下

FILESYSTEM

img/ 
    locations/ 
     25(location id from db)/ 
      big/ 
      small/ 
      gallery/ 
      descripton/ 
    events/ 
    news/ 
    formats/ 

DATABASEとクラス

大小の画像は、場所、イベント、ニュースおよびフォーマットテーブル

1のフィールドとして行くだろう)すべてのギャラリー画像のための1つの大きなテーブル:

gallery: 
    id 
    type_id (location, events, news and formats) 
    filename 

、その後、4つの表のように:私はのようなIGalleryDAOを作成したいこの方法で

locations_gallery: 
    location_id 
    gallery_id 

など....

interface IGalleryDAO 
{ 
    GetImages (typeId, id); 
    SaveImages (images[], typeId, id); 
} 

そして、4つのクラスの場所、イベント、ニュース、およびフォーマットは、ファイル名にパスを追加して使用します。

2)各loカチオン、イベント、ニュースなどの形式:

interface IGalleryDAO 
{ 
    GetImages (typeId, id); 
    SaveImages (images[], typeId, id); 
} 

abstract class GalleryDAO implements IGalleryDAO 
{ 
    abstract getFilePath(); // to ensure the filepath variable 

    abstract GetImages (id); 
    abstract SaveImages (id, images[]); 
} 

class LocationGalleryDAO extends GalleryDAO 
{ 
    function GetFilePath(){}; 
    function GetImages (id){}; 
    function SaveImages (id, images[]){}; 
} 

同じあなたは何

にも説明画像に適用されます:この方法で

locations_gallery: 
    location_id 
    filename 

etc... 

、私はこれを作成したいです提案する?ご提案

+0

なぜこの質問は4つの投票を得るが、1つのコメントではないのですか? – dbf

+0

私は分かりません...私は何か間違って書いたとは思わない...またはもし私がした場合、コメントは将来同じエラーをコミットしないと便利です – Luca

答えて

0

を事前に

おかげで私は、データベース内の画像・パス(とない画像)が含まれます。はい、多くのデータベースには画像用のオプションがありますが、これらの機能を使用しない理由は非常にあります。そのうちの1つは、画像を整理するのに利用できる非常に良いフレームワークがあることです。将来的にそれらを使用したいと思うなら、あなたの手はあなたの背後に縛られます。

あなたがその目的のために、あなたのデータベースを持っている可能性がテーブルの例は次のようになります。

表:<img src='{$path}'>:パスを抽出して、あなたのHTMLで使用されるimages

__________________________ 
| id | path | type | 
|------+----------+--------| 
| 1 | /img/s/1 | s | 
|------+----------+--------| 
| 2 | /img/b/2 | b | 
|------+----------+--------| 
| 3 | /img/g/3 | g | 
|------+----------+--------| 
| 4 | /img/s/4 | s | 
|------+----------+--------| 
| 5 | /img/d/5 | d | 

。タイプの列は、特定のイメージを照会する場合や、将来他のタイプの照会が必要な場合には、それに応じて列を追加することができます。

idは、PRIMARY KEYですが、一部の人は、完全にあなた次第ですが、主キーとして日付を使用する方が好きです。日付を使用する場合は、特定のイメージがデータベースに格納されたときにログを記録する目的に役立ちます。

+0

はい、私はそれを書くことを忘れてしまったポストが、私はパスを保存するだろうが、DBで。だから、あなたは4つのミニテーブルの代わりに大きなテーブルを提案します...大きなテーブルに対するクエリは、ミニテーブルのクエリよりも高価ではありませんか? – Luca

+0

@ルーカ列のインデックスを作成している間は、何百万行ものクエリでもすぐにクエリが実行されます。 – Webeng

関連する問題