MySql数据库设计 - 哪种表结构会更好?

时间:2014-05-15 21:00:36

标签: php mysql database

我正在开发一个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

2 个答案:

答案 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现在是否支持索引视图)。

如有疑问,请填写样本表和基准。