数据库模型来管理文档

时间:2017-12-29 12:42:36

标签: sql sql-server database data-modeling

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

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

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

$('.push').each(function(){


      if($(':first-child',this).hasClass( "activex" )){
          $(this).off().off('click').on('click',function(){
        var a = $(this).attr('id');
                $.ajax({

    type: "POST",
    url: "includes/rcart.php",
    data:{'pid': a},
    success: function(data){


     var a= parseInt($('.cart').text());

     if((data.indexOf("2")) >= 0){
          console.log(data);
         console.log('not removed'); 
     }
     else {
     a--;
     console.log('removed');
     $(this).removeClass('activex');
     $('.cart').text(a);
     }
    }

    });

        console.log(a); 
    });

      }

      else {

    $(this).on('click',function(){
        var a = $(this).attr('id');
                $.ajax({

    type: "POST",
    url: "includes/cart.php",
    data:{'pid': a},
    success: function(data){

    console.log(data);
     var a= parseInt($('.cart').text());

     if((data.indexOf("2")) >= 0){
         console.log('done'); 
     }
     else {
     a++;
     $('.cart').text(a);
     $(this).addClass('activex');
     }
    }

    });

        console.log(a); 
    });
      }

});

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

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

3 个答案:

答案 0 :(得分:3)

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

将数据的元数据/指针存储在数据库中,并将文件本身存储在磁盘上,直接存放在磁盘上。

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

答案 1 :(得分:1)

使用文件流

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

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

答案 2 :(得分:1)

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

文件管理器子系统
此子系统应该是可重用,可扩展,安全等。您想要保存文件的所有项目都可以使用此子系统。
文件可以保存在每个地方,例如本地硬盘网络云端硬盘外置硬盘等等。所以这个子系统应该设计成支持所有类型的请求。

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

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

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