我正在开发一个mysql数据库,想知道这两个表结构中的哪一个在性能方面更好。
结构1;两个有很多共同字段的表
table1(file) : id, userid, parentid, name, desc, tags, public, dateadded, datemodified, linkid, domain, url, snapshot
table2(folder): id, userid, parentid, name, desc, tags, public, dateadded, datemodified, hasSubFolders, noOfItems, noOfViews
结构2;将所有公共字段放在不同表中的三个表
table1(main) : id, userid, parentid, objectid, objecttype(file or folder), name, desc, tags, public, dateadded, datemodified
table2(file) : id (objectid), linkid, domain, url, snapshot
table3(folder) : id (objectid), hasSubFolders, noOfItems, noOfViews
答案 0 :(得分:0)
我不会使用它们,而是使用类似于第一个示例的内容。这两个表中有很多常见的列。因此,必须仅为列表命令访问两个表(在UNIX中为ls
ind Windows)dir
。
此外,列名中的数据类型有提示,这是不好的做法:
而是使用一个表:fsys_entries:
id, is_directory, parentid, name, desc, tags, public, added, modified, linkid, url, snapshot
使用这种结构,可以在文件中创建文件和目录,但是代码中的正确限制不是问题。
编辑:在真实的文件系统中,目录 是一个带有目录标志的文件。因此从这个角度来看它并不太糟糕,与真实的文件系统相比,它允许更类似的处理。
P.S。:作为一项高级功能,我会将共享信息(文件/目录是公共的?链接是指什么?)存储在另一个表中(这只是最佳实践)。
答案 1 :(得分:0)
如果它与平面结构1的表现相当,那么在重命名" main"之后我会选择Structure2。到" FileSystemObject"或更多的电报。
缺点是你需要连接来访问任何给定FSO的完整信息,这使得索引更加困难(不确定mysql现在是否支持索引视图)。
如有疑问,请填写样本表和基准。