- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在开发一个个人应用程序,并且正面临一个数据库设计决策,我不知道该采取哪种行动。这是我想要完成的工作。
在我的应用程序中,我将存储大量的图像、视频和一些使用所见即所得编辑器构建的 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/
是否有显示测试用例数量以提供决策/条件覆盖率的工具? 例如: if(x>0) if(x0) 3 个案例足以覆盖决策/条件。 if(x>0) if(x0) 4 个案例足以覆盖决策/条件。 这是真的吗?
我正在尝试找到一种优雅的方式来实现易于维护的决策算法,因为决策的条件可能经常变化。 我将尝试更具体地举一个例子: 假设我正在尝试管理一家餐厅厨房的 cooking 厨师团队。 每个厨师都知道如何 co
我需要一个 Android Activity ,它应该显示一个字段,如带有图像的标题和其下方的几个动态生成的项目(我认为是 1 到 100)。如果我不想让 headsection 滚动,我会使用 Li
我正在编写函数以从值列表中提供最大值(value)。我的问题是如果所有值都相同怎么办?例如, 30,29,34,45 简单。最大值为 45。现在, 20,20,20,20 这里的最大值是20吗?或者没
我需要知道哪个检索事件日志的速度更快,但我在比较中找不到:假设需要查找的所有列都有btree索引,需要查找的json对象中的所有键都有GIN索引。 case 1: ActivityID (in
我需要在我的 iPhone 应用程序中显示一个表格: neither the number of cells nor the contents are known at compile time, b
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
这是针对在 MinGW/Windows 上使用 SDL 的小型游戏项目。 我正在研究一个物理引擎,我的想法是拥有一个Physics::Object,所有物理对象都应该派生自它,并且它会在全局 Phys
我有一个小的 LINQ 查询来填充下拉控件(WinForms Telerik 应用程序),其中的数据行显示两个值(ITNBR 和描述): var query = from i in db.ItemMa
我正在尝试使用 antlr 3 为我的语法生成词法分析器和解析器。有人可以解释这个错误是什么意思吗? error(211): T.g:14:6: [fatal] rule stmt has non-L
partykit包很好地表示了决策树。我遇到的唯一问题是标签很长然后它们重叠。是否可以移动这些标签以防止它(见下图中的蓝色箭头)? library("rpart") library("partykit
所以我环顾四周,似乎找不到合适的解决方案来解决我的问题。 问题 在我的布局中,我希望能够根据数据库中的内容选择在运行时是否存在导航项: 当前布局(导航栏) @Html.Acti
我目前正在创建一个机器学习 jupyter 笔记本作为一个小项目,并希望显示我的决策树。但是,我能找到的所有选项都是导出图形然后加载图片,这相当复杂。 所以想问问有没有办法不用导出加载图形,直接显示我
grammar AdifyMapReducePredicate; PREDICATE : PREDICATE_BRANCH | EXPRESSION ; PREDICA
我是一名优秀的程序员,十分优秀!