数据库模型来管理文档

问题描述 投票:1回答:3

我需要使用sql server 2008构建与管理文档(如jpg,doc,msg,pdf)相关的表。

因为我知道sql server支持.jpg图像,所以我的问题是,是否可以将其他类型的文件上传到数据库中。

这是该表的一个示例(如果需要,可以重新定义)。

Document : document_id int(10)
           name        varchar(10)
           type        image (doesnt know how it might works)

这些是表的初始值,但我不知道如何使它对任何类型都有用。

pd:我需要分配一个目录来将这些文件保存到服务器中吗?

sql sql-server database data-modeling
3个回答
3
投票

你几乎可以在sql server表中存储任何文件类型...如果你这样做,你几乎肯定会后悔。

而是将数据的元数据/指针存储在数据库中,并将文件本身存储在磁盘所在的位置。

您的数据库大小 - 以及运行它所需的硬件 - 将会非常迅速地增长,因此您将承担不需要承担的大量成本。


1
投票

使用Filestream

https://docs.microsoft.com/en-us/sql/relational-databases/blob/filestream-sql-server

我知道只有链接的答案不是答案,但我无法相信没人提到它


1
投票

正确的数据库设计模式不是将文件保存到DBMS中。您应该开发一种文件管理器子系统来管理所有项目的文件。

文件管理器子系统 此子系统应该是可重用,可扩展,安全等。所有想要保存文件的项目都可以使用此子系统。 文件可以保存在本地硬盘,网络驱动器,外部驱动器,云端等所有位置。因此,该子系统应设计为支持所有类型的请求。

(您可以通过向其添加许多功能来改进上述子系统。例如,检查重复文件,...)

该子系统应为每个文件生成唯一键。上传并保存文件后,子系统应生成该密钥。

现在,您可以使用此唯一键来保存在数据库(而不是文件)中。每次如果要获取文件,都可以从数据库中获取唯一键,并请求通过唯一键从子系统获取文件。

© www.soinside.com 2019 - 2024. All rights reserved.