【问题标题】:Database Schema, pointer to file数据库模式,指向文件的指针
【发布时间】:2012-10-04 03:53:31
【问题描述】:

这可能是一个非常简单的问题,但只是确保。我正在设计一个数据库架构,一些表应该链接到文件系统上的文件(PDF、PPT 等)。

这应该怎么做?

我最初的想法是 varchar(255) 与文件的绝对/相对路径。有一个更好的方法吗?我在网上搜索并找到了 varbinary(max),但不确定这是否是我真正想要的;我不希望实际将任何二进制文件加载到数据库中,只是为了有一个指向文件的指针。

【问题讨论】:

  • 听起来是一种合理的方法,但您使用的是哪个 DBMS?

标签: sql database schema


【解决方案1】:

这取决于操作系统和有效路径的最大长度。您所说的“指针”只是一个带有文件路径的文本字段,因此与其他字符数据没有什么不同。

我通常会存储相对路径,并在我的应用程序中指定根文件夹。例如,通过这种方式,您可以将文件移动到不同的驱动器,而不必更新数据库中的行。

您选择的实际数据类型取决于您使用的 dbms。一些数据库还为您可能想要探索的文件提供特定的数据类型,例如 SQL Server 2008 中引入的FileStream 数据类型。

【讨论】:

    【解决方案2】:

    你需要在数据库中存储文件的名称,以及它的路径,对吗?然后您应该使用 varchar(255) 创建一个字段。我一直这样使用,从来没有遇到过问题。 希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      如果您不想将文件的二进制数据存储在数据库中,那么存储路径是唯一的方法。存储绝对路径还是相对路径取决于您。

      【讨论】:

        【解决方案4】:

        是的,基本上就是这样。 在 Db 中配置为参数的某个位置的相对路径是它的常用方式。 除了获得回合长度限制。

        如果您说 C:MySystem\MyData 作为基本路径。然后你可以做 Images\MyImageFile.jpg、Docs\MyDopc.pdf 等。

        请注意对备份和恢复的影响。你必须做数据库和文件系统。

        另一个可能的考虑因素是文件名必须是唯一的。所以你如果 Fred 和 Wilma 都上传 Picture1.jpg,db 没问题,但文件系统会被塞满。 通常的解决方法是拥有一个用户文件名和一个实际文件名。

        所以 Fred 的 Picture1.jpg 实际上是 p000004566.jpg

        不要忘记添加代码来处理您认为应该存在的文件已被某些 twit 删除。

        在极不可能发生编码错误的情况下,整理孤立文件的某种管理任务也可能是有序的。 :)

        此外,如果文件的路径可由软件配置,请确保检查将执行该工作的帐户是否具有读写访问权限,可能还希望使用 UNC 路径,但不要让自己陷入困境映射驱动器。

        【讨论】:

          猜你喜欢
          • 2010-12-05
          • 1970-01-01
          • 1970-01-01
          • 2021-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-26
          相关资源
          最近更新 更多