1

我想将我的照片管理系统从 XML 迁移到 MySQL 并扩展我当前系统的功能。

基本上,我在 MySQL 中的东西很少,在 xml 文件中也很少。现在的情况是这样的:

  • news.xml ” - 单个文件:
    存储了我网站上的所有新闻(新上传、投票和评论),xml 的结构是:

    <all_news>
        <photos>
            <image image_name="photo1.jpg" path="my_photos/" date="12.12.12" info="just Uploaded!" />
        </photos>
        <comments>
            <image image_name="photo1.jpg" path="my_photos/" date="12.12.12" info="just Commented!" />
        </comments>
        <votes>
            <image image_name="photo1.jpg" path="my_photos/" date="12.12.12" info="just Voted!" />
        </votes>
    </all_news>
    
  • photo1.xml ”、“ photo2.xml ”、“ photo3.xml ” ... - 多个文件:
    如果有人对我的照片发表评论,这些文件是动态创建的。例如,如果有人评论我的照片,php 脚本会自动创建“ photo_name.xml ”文件,格式为:

    <comments>
        <comment sender='John' text='nice photo!' who='user' date='22.12.12'/>
    </comments>
    
  • 投票” - MySQL 表:
    存储所有投票,表的结构:

    • id: "photo1.jpg"
    • vote: 5
    • uid: "IP voting person"

现在我想将所有这些东西合并到一个 mySQL 数据库表中,所以每次加载照片时 - 从单个 DB 表中提取这些照片信息(而不是同时加载几个 xml 和 DB)......

所以我的问题是:
在这种情况下,哪种表结构最适合最容易处理(提取数据、移动、删除、编辑、添加、排序......)?我应该使用唯一 id =“photo.jpg”和多维数组
将单个文件的所有内容保存在单行中吗?例如:

uid:            photo_name.jpg
path:           my_photos/
isNewPhoto:     array[true, array[info:"just uploaded!"][date:"12.12.12"]] (multi-dimensional array ??)
isNewComment:   array[true, array[info:"just commented!"][date:"12.12.12"]] (multi-dimensional array ??)
isNewVote:      array[true, array[info:"just Voted!"][date:"12.12.12"]] (multi-dimensional array ??)
votes:          1,5,3,2
votesIP:        123123123,123123123,123123123
comments:       array[array[sender][comment][date][who]]] (multi-dimensional array ??)
4

1 回答 1

3

好吧,当您在将数组的内容存储到单个列之前对数组进行序列化时,您实际上可以很容易地做到这一点。这是一个好主意是另一回事。除了性能问题之外,您还放弃了进行更复杂的事情(例如搜索单个属性)的机会。

你为什么坚持单桌?即使使用多个表,您也可以使用单个查询从多个表条目中检索单个条目。这为您进一步扩展和用例提供了更大的灵活性。

于 2012-07-13T15:40:19.093 回答