【发布时间】:2012-09-18 19:12:00
【问题描述】:
目前,我们有这样的设计来存储具有多个图像/视频 URL 的对象:
tblCompany:
pkCompanyId
tblPerson:
pkPersonId
tblImage:
pkImageId
ImageUrl
fkCompanyId
fkPersonId
虽然此设计处理:
- 一家拥有多张图片的公司
- 拥有多张图片的人
我不禁觉得这种设计存在问题,因为 tblImage 中的行对于外键列会有大量的 NULL 值。
有更好的设计吗?设计中的更多对象(一些与公司或个人无关,一些与公司或个人相关)将具有图像,因此当前设计的 tblImage 可能具有越来越多的外键。
【问题讨论】:
-
一张图片是否总是有公司和人,或者只有一个或混合?
-
一幅图像总是有一个外键引用(一个或另一个)。为了使用图像支持设计中的其他对象,我们将在图像表中添加一个新的外键 - 例如如果有一个不相关的“House”对象需要多个图像,我们会将 fkHouseId 添加到 tblImage。