C# 将对文件的引用存储在DB表列中还是只检查文件是否存在更好

C# 将对文件的引用存储在DB表列中还是只检查文件是否存在更好,c#,sql,asp.net,sql-server,database,C#,Sql,Asp.net,Sql Server,Database,我正在构建一个.Net/Sql Server站点,该站点有一个用户配置文件页面,可以显示该用户的配置文件照片(如果存在)。我将照片存储在服务器上的本地文件夹中。每个用户都有自己的子文件夹,使用DB生成的用户ID命名。照片文件始终称为profile.jpg 在DB中,我有一个用户表来存储配置文件数据,我正在考虑添加一个名为profile_photo_exists的列,以指示是否存在配置文件照片 我的问题是,这个profile\u photo\u exists列是多余的吗?当我可以获取一些服务器端代

我正在构建一个.Net/Sql Server站点,该站点有一个用户配置文件页面,可以显示该用户的配置文件照片(如果存在)。我将照片存储在服务器上的本地文件夹中。每个用户都有自己的子文件夹,使用DB生成的用户ID命名。照片文件始终称为profile.jpg
在DB中,我有一个用户表来存储配置文件数据,我正在考虑添加一个名为profile_photo_exists的列,以指示是否存在配置文件照片

我的问题是,这个profile\u photo\u exists列是多余的吗?当我可以获取一些服务器端代码来检查用户的文件夹以查看是否有照片文件时。我在想,最好为此设置一个DB列,因为每次检查文件系统可能没有那么好的性能。但我的问题是,这似乎是数据的重复,我担心它会失去同步。例如,文件夹中缺少文件,但DB说有一个


还有什么好的理由保留这个专栏吗

使用System.IO检查文件是否存在对性能的影响非常小。正如您所提到的,存储标志“profile\u photo\u exists”的问题是必须使该标志与数据库保持同步,这似乎是一个不必要的复杂问题

我可能会使用用户id保存上传的个人资料图片。例如user-id.jpg“65d476eb-f52c-4faf-bec2-93073daad6ec.jpg”。这将有助于规范化配置文件图片的名称

然后用一些简单的逻辑检查自定义配置文件图片,如果它不存在,则加载“default.jpg”

我还会考虑是否需要在每个用户文件夹中存储一个default.jpg,这似乎是多余的?为什么不保存一个default.jpg,以防找不到用户的自定义配置文件图片?如果您想要更改默认的配置文件映像,那么使用一个default.jpg会更容易,并且在服务器上占用更少的空间


只有我的0.02美元。我希望这会有所帮助。

使用System.IO检查文件是否存在对性能的影响非常小。正如您所提到的,存储标志“profile\u photo\u exists”的问题是必须使该标志与数据库保持同步,这似乎是一个不必要的复杂问题

我可能会使用用户id保存上传的个人资料图片。例如user-id.jpg“65d476eb-f52c-4faf-bec2-93073daad6ec.jpg”。这将有助于规范化配置文件图片的名称

然后用一些简单的逻辑检查自定义配置文件图片,如果它不存在,则加载“default.jpg”

我还会考虑是否需要在每个用户文件夹中存储一个default.jpg,这似乎是多余的?为什么不保存一个default.jpg,以防找不到用户的自定义配置文件图片?如果您想要更改默认的配置文件映像,那么使用一个default.jpg会更容易,并且在服务器上占用更少的空间


只有我的0.02美元。我希望这会有所帮助。

如果图像存储在数据库中并通过ID绑定到用户帐户,会更好吗?我目前正在构建一个AJAX站点,我的计划是将所有内容存储在数据库中。我是通过调用asp web服务函数来实现的。这样做的问题是它无法扩展。如果要将图像传送到CDN,该怎么办?或者其他的外部存储器,我想你是对的。不过我想到了Azure数据库。我还在学习,所以别介意我。我喜欢被纠正。如果图像存储在数据库中并通过ID绑定到用户帐户会更好吗?我目前正在构建一个AJAX站点,我的计划是将所有内容存储在数据库中。我是通过调用asp web服务函数来实现的。这样做的问题是它无法扩展。如果要将图像传送到CDN,该怎么办?或者其他的外部存储器,我想你是对的。不过我想到了Azure数据库。我还在学习,所以别介意我。我喜欢被纠正。这正是我构建它的方式。使用userid作为文件名可以删除不必要的db调用以获取图像位置。这正是我构建它的方式。使用userid作为文件名将删除不必要的db调用,以获取图像位置。