oop - 建筑建议

时间:2016-05-23 07:24:27

标签: php oop

在一个网站中,我有四个部分:活动,地点,新闻和格式

所有这些都有4种图像:

  • 小主图
  • 大图片
  • 图库图片
  • 描述图像(文字描述中的图像,通过ckeditor使用)

您将如何设计数据库,类和文件系统?

在我的想法之下:

FILESYSTEM

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

数据库和课程

大图像和小图像将作为位置,事件,新闻和格式表中的字段

1)所有画廊图片的一张大表:

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

然后是四个表:

locations_gallery:
    location_id
    gallery_id

等...

通过这种方法,我创建了一个IGalleryDAO,如:

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

然后四个类的位置,事件,新闻和格式会将路径附加到文件名并使用它们

2)四个表,每个位置一个,事件,新闻和格式如:

locations_gallery:
    location_id
    filename

etc...

通过这种方法,我创造了这个:

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[]){};
}

同样适用于描述图像

你有什么建议?

提前感谢您的建议

1 个答案:

答案 0 :(得分:0)

我会在数据库中包含图像路径(而不是图像)。是的,很多数据库都有图像选项,但有很好的理由不使用这些功能。其中之一是有非常好的框架可用于组织图像,如果您决定将来使用其中任何一种,您的双手将被束缚在背后。

为此目的,您可以在数据库中拥有的表的示例是:

表: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   |

路径将被提取,然后在您的html中使用:<img src='{$path}'>。当您想要查询某些图像时,类型列很有用,如果您将来特别需要其他类型的查询,则可以相应地添加列。

id将是您的PRIMARY KEY,但有些人更喜欢使用日期作为主键,但这完全取决于您。如果您要使用日期,则可以在特定图像存储在数据库中时进行记录。