我想将我的照片管理系统从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 ??)
如果您想使用单个表格,最好使用非关系系统(如mongodb)。 – 2012-07-13 15:38:56
为什么把所有东西放在一张桌子上?您目前正在使用单独的文件获取新闻,评论和投票,为何不复制该文件? – andrewsi 2012-07-13 15:40:39
数据库的关键特征是它本质上是关系型的,它们之间有多个关系。一张照片可以有很多评论,很多票(还有选民)。建立关系模型比把所有数据都放在一个表中更合理... – 2012-07-13 15:42:01