我想询问有经验的软件开发人员和架构师关于以下问题的最佳架构实践。
假设我们有两个实体:学生和教师,这两个实体都有一个图像。如何对数据库建模?一个包含两个可空外键的“图像”表(用于引用学生或教师表),或者您更喜欢每个实体一个表(StudentImage和TeacherImage)
发布于 2020-03-19 10:29:21
最终的解决方案将取决于一些额外的因素,比如文件存储是否可用,图像有多大,以及图像将如何被使用。
我将从一个image表开始,该表至少包含一个唯一的键和图像数据或图像的文件名。然后,教师表和学生表都将包含引用Image表的外键。如果教师和/或学生可以有多个映像,那么我会根据需要为每个映像添加单独的映射表。这些映射表还可以保存其他信息,如ImageType (概要图片、封面等)。
如果Image表最后只有这两列,我将考虑删除该表,并将图像路径/数据直接放置在教师和学生表中(如果可能出现多个图像,则放置映射表),但这也取决于我是否预见到在稍后阶段会向image表添加更多列。
发布于 2020-03-19 10:40:30
我建议将图像数据放在所有对象的中央表中,并在学生和教师表中使用forein键引用它们。如果您不将图片直接作为二进制数据保存到数据库中,并将其放入文件系统中,那么最好不要保存文件的完整路径。因为当您某一天不得不将文件从一个目录移动到另一个目录时,您必须编辑新路径的所有数据库条目。我更喜欢将图片保存在应用程序的中央配置文件中的绝对路径。
https://softwareengineering.stackexchange.com/questions/406738
复制相似问题