0

我正在设计我的数据库结构,我需要一些建议:我有可以从类别中选择的图像,并且可以上传其他图像,我应该为每个好友保存选择的图像......

我有几个选择:

  1. 我可以将上传的图像和预定义的图像放在同一个表中,并放置一个标志来区分它们,我知道使用标志可能有风险..

  2. 我可以将上传的图像和预定义的图像放入 2 个不同的表中,但在这种情况下,如果我需要将所选图像的 id 放入好友表中,我将无法知道该 id 是从哪个表中给出的(因为图像 id 是一个递增的整数)

那么我该如何设计呢?哪种方法更好,为什么?

4

1 回答 1

0

我会做出这些假设:

  • 您有一个包含预定义图像的表格。每个图像都有一个 id。
  • 用户可以上传自己的图像。上传的图片只能由该用户使用。
  • 每个用户只能上传一张图片。

在这种情况下,您应该在好友表中定义两列imageimageID。为这些列定义默认值,为image定义 NULL ,为imageID定义 1 。在imageID和predefined_images 表之间定义一个参照完整性约束。

如果图像列为NULL ,您的程序应该加载imageID中指定的图像。

例如:

SELECT COALESCE( b.image, p.imagedata )
FROM buddy b, predefined_images p 
WHERE b.imageID = p.ID
于 2013-10-17T09:12:15.423 回答