2012-07-13 42 views
1

我想将我的照片管理系统从XML迁移到MySQL并扩展我当前系统的功能。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
    • :表

现在我想所有这些事情合并成一个单一的MySQL数据库表,所以每次当照片被加载时间 - 拉从一个数据库表中的这些照片信息(而不是加载一些XML的和DB在同一时间)...

所以我的问题是:
什么表结构是最好的在这种情况下最简单的工作(拉数据,移动,删除,编辑,添加,排序...)?
我应该使用unique 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 ??) 
+3

如果您想使用单个表格,最好使用非关系系统(如mongodb)。 – 2012-07-13 15:38:56

+0

为什么把所有东西放在一张桌子上?您目前正在使用单独的文件获取新闻,评论和投票,为何不复制该文件? – andrewsi 2012-07-13 15:40:39

+2

数据库的关键特征是它本质上是关系型的,它们之间有多个关系。一张照片可以有很多评论,很多票(还有选民)。建立关系模型比把所有数据都放在一个表中更合理... – 2012-07-13 15:42:01

回答

3

那么你实际上可以做到这一点很容易,当你它们的内容存储到一个列之前序列化阵列。这是一个好主意是另一回事。除了性能问题外,您还有机会制作更复杂的内容,例如搜索单个属性。

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

+0

是的好点,你是对的,这将是非常困难的(可能不高效)使用我的场景实现搜索功能...所以,我会留在多个表(或前面提到的mongodb)。谢谢。 – 2012-07-13 16:38:57