|
1
3
从您的示例中,有两个表的参数,因为您有可以与两个不同事物关联的文件。
如果将这些放在一个表中(并且希望允许用户拥有多张照片或简历),则需要两个链接表来关联文件->用户和文件->cms_pages。可以说,这意味着HABTM关系是不正确的,并且允许数据不一致。 双表方法稍微干净一些,只允许文件与具有简单归属关系的正确类型的实体相关联。 但我认为这个问题没有任何“正确”的答案,除非你需要为不同的文件类型存储不同类型的元数据。 还要确保存储或能够计算每个文件的mimetype,以便使用正确的HTTP标头将其正确地提供给浏览器。 |
|
|
2
2
根据您所说的,我只会将具有随机(UUID或其他)文件名的文件存储在一个地方。然后,我会有一个“附件”表或包含对所有外部文件的引用的东西。此表还将包含该文件的元数据,因此它是什么类型的文件(图片、简历等)等等。 但是,根据您使用的FS,一个目录中的文件数量可能有硬性限制。 |
|
3
2
将不同文件存储在不同位置可能有各种原因。 首先,限制一个目录中的文件数量可能是一个考虑因素。 其次,安全性可能是一个问题——如果有些是公开可见的(例如个人资料照片),而另一些则不是(例如简历),那么将它们放在不同的目录中会更容易管理。 第三,如果文件被拆分,例如在文件资源管理器中浏览,或者管理备份,或者修改应用程序以在多个位置拆分文件存储,那么简单的管理任务可能会更容易。 还有文件名冲突的问题,但如果你重命名所有内容以匹配数据库id字段(例如),那么这就不是问题了。 但最终,这可能取决于交易量和你自己的偏好。 |
|
|
4
2
每种文件类型的不同表只有在为每种类型的文件存储其他元数据(并因此存储其他列)时才具有相关性。如果每种文件类型的表只包含相同的列(例如,文件名、文件类型、上传日期等),那么将它们全部放在一个表上是有意义的。 |
|
|
developer · 带外键的SQL表设计 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 2 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 8 年前 |