gpt4 book ai didi

sql-server - 用于存储文件的数据库设计决策

转载 作者:行者123 更新时间:2023-12-01 08:31:39 25 4
gpt4 key购买 nike

您好,我正在开发一个个人应用程序,并且正面临一个数据库设计决策,我不知道该采取哪种行动。这是我想要完成的工作。

在我的应用程序中,我将存储大量的图像、视频和一些使用所见即所得编辑器构建的 html 文件。我已经决定不将文件存储在我的数据库中,而是只存储原始文件名和存储文件名(唯一标识符)。

为此,我决定为每种类型的文件设置 3 个单独的表是个好主意。

这是我开始遇到一些问题的地方。

目前,在我分析了我试图构建的内容之后,我意识到到目前为止我有 4 种类型的图像:头像、缩略图、描述、标题。这个列表可能会增长,直到我完成应用程序。视频和 html 文件也可以这样说,我还不确定。

到目前为止,我在设计我的数据库时看到了 2 个行动方案。

第一个是我有一个图像表,我将在其中包含这些属性:

OriginalFileName ,StorageFileName , IsAvatar , IsThumbnail , IsDescription , IsHeader

在这种情况下,每次我在我的应用程序中识别出一种新类型的图像时,我都必须修改数据库表,这对我来说听起来不合适。

第二个是我为每种类型的图像创建表格。

在这种情况下,我将有 4 个表,它们有一个 Primary 列、一个 OriginalFileName 列和一个 StorageFileName 列。

我再次识别出一种新类型的 Image 的每种类型都必须创建一个新表。

这种解决方案听起来不错,但我可能会通过这样做进入过度工程领域。

那么对于我当前的问题,最好的解决方案是什么?

如果有人有其他选择,我愿意听取其他选择。

最佳答案

您的建议(两个建议)称为非规范化;在关系数据库中,这可能是一件坏事。如果头像、缩略图、描述和标题具有相同的属性,即只有一个原始文件名和一个存储文件名,它们当然都应该放在一个表中,但您只需要一个列来识别哪个是哪个。然后你有第二个表来解码它。

例如:

你有一张 table ,有列

Files
OriginalFileName, StorageFileName, FileTypeID

FileTypeID 将成为第二个表的外键:

FileTypes
ID, Description
1 Avatar
2 Thumbnail
3 Description
4 Header

如果您想添加其他类型的文件,请向 FileTypes 添加另一行并开始填充表格文件。

如果您的文件具有不同的属性,那么您可能需要考虑 4 个单独的表,但要到那时才考虑。

关于sql-server - 用于存储文件的数据库设计决策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com