首页 新闻 会员 周边

求助:使用ef core的导航属性,数据库设计问题

0
悬赏园豆:10 [待解决问题]

假设我在做一个后台管理,我现在有个医院列表,而每个医院可以添加多个医生。所以首先我会添加两个表:医院表(Hospital)和 医生表(Doctor),这两个表的导航属性我知道应该怎么设置,我疑惑的是下面的需求:
1、添加医院时可以上传多张图片
2、添加医生时可以上传多张图片
我目前想到的方法是添加一个医院图片表(HospitalImage)和一个医生图片表(DoctorImage),并且分别与Hospital表和Doctor表关联。
但是总觉得这么做有点奇怪,因为想到如果还有类似的需求,是不是又要增加一个图片表?比如现在需要添加商品(Goods),那么商品的图片又要增加一个商品图片表(GoodsImage),那么整个系统会有很多图片表。。。
这个问题困扰了一段时间了,希望有人可以一起讨论一下。

菜鸟门的主页 菜鸟门 | 初学一级 | 园豆:192
提问于:2021-10-10 00:26
< >
分享
所有回答(4)
0

你就创建一个图片表,然后添加一个Type(类别)字段,可以设置Type = 1时是医院图片,为2时是医生图片,以此类推

ufo233- | 园豆:92 (初学一级) | 2021-10-11 10:44
1

对的,图片最好单独做个表,跟楼上的思路一样,
其实对于导航属性,我不倾向用,随着表的结构复杂,导航属性存在性能问题
因为导航属性肯定是主外键关联的,你做删除,修改操作,还要检查从表
如果是简单的表结构设计,写代码比较方便

不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2021-10-11 11:44
0

用ef了就用codefirst吧,不用费脑筋建表了

猝不及防 | 园豆:2781 (老鸟四级) | 2021-10-11 15:35
0

最简单的做法应该是用标识符将多个图片分隔,然后存在一个字段里面
比如 image1|image2|image3|image4|... 这种感觉
优点就是简单,不需要改动表结构,把存图片的字段放长点就行
缺点就是你也不知道到底存了多少图片,后面管理起来可能比较费劲,大概率会浪费很多空间

好点的方法就像上面说的,直接搞个图片表存一下
优点就是管理方便,一拉表就能知道有多少图片,可以灵活地自定义表字段,比如楼上说的type什么的
后面可以做个定时任务定期处理不用的图片,释放点空间
缺点就是性能,毕竟需要联表查,然后针对多出来的表大概还要写不少代码

再好点直接单独搞个文件服务
前端通过token或者其他什么东西批量获取文件

崩坏的领航员 | 园豆:438 (菜鸟二级) | 2021-10-14 10:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册