【问题标题】:Database Design For Image Table图像表的数据库设计
【发布时间】:2018-01-25 03:41:48
【问题描述】:

如果在数据库设计方面可以做得更好,我正在尝试锻炼。任何关于为什么它是错误/正确的建议将不胜感激。

我有 3 张桌子

Person
Car
Image

Cars 和 Persons 都可以有图像,所有对图像的引用都存储在图像表中。

Person has > Images
Car has > Images

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

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

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

如果有的话,如何才能做得更好?

【问题讨论】:

  • 是的,汽车和人都可以有很多图像。如果我添加一个类别表会更好吗?我可以按猫车或汽车人分类吗?这会更好吗?
  • 我想,类别表也会使您的系统更具可扩展性。您是否有机会将更多表格链接到 Image ?即——除了人和汽车之外,你还会链接——比如:摩托车。但是,也许您会想在下面考虑 chris 的回答 - 以避免完全使用类别表。

标签: sql-server database database-design


【解决方案1】:

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

此表如下所示:

DATATYPE    DATAID    IMAGEID
 1           10         1
 2            8         2

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

【讨论】:

  • 所以这就像一个类别表?
  • 是的。 DataType 列可以包含类别表中项目的索引。上面提到的表将是一个关系表,它捕获了类别、汽车、人员和图像表之间的关系。
【解决方案2】:

您不需要图像表中的这两个字段。您可以查询 person 和 car 表以查看是否存在与图像 ID 匹配的条目。

但是,您可能会发现它们的存在既方便又高效。

【讨论】:

  • @carlpett,有趣:)。但我不关心言论是否是官方的。
  • ;) 这个词出现的频率很有趣,尽管它并不“真正存在”。
猜你喜欢
  • 2013-10-21
  • 2017-02-02
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多