我想把我的照片管理系统从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.xmlhoto3.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)。。。
因此,我的问题是:
在这种情况下,哪种表结构最适合进行最简单的处理(提取数据、移动、删除、编辑、添加、排序…)
我是否应该使用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 ??)
当您在将数组的内容存储到一列之前序列化数组时,实际上可以很容易地做到这一点。这是否是个好主意是另一回事。除了性能问题之外,您还放弃了进行更复杂的事情(如搜索单个属性)的任何机会。
你为什么坚持要一张单人桌?即使在使用多个表时,也可以通过一个查询从多个表条目中检索单个条目。这为进一步的扩展和用例提供了更大的灵活性。