我需要使用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 server表中存储任何文件类型...如果你这样做,你几乎肯定会后悔。
而是将数据的元数据/指针存储在数据库中,并将文件本身存储在磁盘所在的位置。
您的数据库大小 - 以及运行它所需的硬件 - 将会非常迅速地增长,因此您将承担不需要承担的大量成本。
使用Filestream
https://docs.microsoft.com/en-us/sql/relational-databases/blob/filestream-sql-server
我知道只有链接的答案不是答案,但我无法相信没人提到它
正确的数据库设计模式不是将文件保存到DBMS中。您应该开发一种文件管理器子系统来管理所有项目的文件。
文件管理器子系统 此子系统应该是可重用,可扩展,安全等。所有想要保存文件的项目都可以使用此子系统。 文件可以保存在本地硬盘,网络驱动器,外部驱动器,云端等所有位置。因此,该子系统应设计为支持所有类型的请求。
(您可以通过向其添加许多功能来改进上述子系统。例如,检查重复文件,...)
该子系统应为每个文件生成唯一键。上传并保存文件后,子系统应生成该密钥。
现在,您可以使用此唯一键来保存在数据库(而不是文件)中。每次如果要获取文件,都可以从数据库中获取唯一键,并请求通过唯一键从子系统获取文件。