图像表的数据库设计

时间:2012-05-13 19:57:52

标签: sql-server database database-design

如果在数据库设计方面可以做得更好,我正在尝试锻炼。任何关于为什么它错了/正确的建议都会受到赞赏。

我有3张桌子

Person
Car
Image

汽车和人员都可以拥有图像所有对图像的引用都存储在图像表中。

Person has > Images
Car has > Images

图像表最终看起来像这样..

Image
ID   NAME    CAR_ID   PERSON_ ID
1    img1    10       NULL
2    img2    NUll     8

现在看来我的表中有很多NULL,但我需要知道图像是用于汽车还是人。

那么如果可以做得更好呢?

2 个答案:

答案 0 :(得分:3)

如果在Car和Person表中存储对图像的引用(如果存在一对一关系),则最终会有更少的空值。如果你有多个图像,你最好有一个只存储关系的表。

此表格如下所示:

DATATYPE    DATAID    IMAGEID
 1           10         1
 2            8         2

在第一列中,1表示汽车,2表示图像。

答案 1 :(得分:0)

你不需要图像表中的那两个字段。您可以查询人员和汽车表,以查看是否存在与图像ID匹配的条目。

但是,你可能会发现它们的存在是方便和高效的。