我正在设计我的数据库结构,我需要一些建议:我有可以从类别中选择的图像,并且可以上传其他图像,我应该为每个好友保存选择的图像......
我有几个选择:
我可以将上传的图像和预定义的图像放在同一个表中,并放置一个标志来区分它们,我知道使用标志可能有风险..
我可以将上传的图像和预定义的图像放入 2 个不同的表中,但在这种情况下,如果我需要将所选图像的 id 放入好友表中,我将无法知道该 id 是从哪个表中给出的(因为图像 id 是一个递增的整数)
那么我该如何设计呢?哪种方法更好,为什么?
我正在设计我的数据库结构,我需要一些建议:我有可以从类别中选择的图像,并且可以上传其他图像,我应该为每个好友保存选择的图像......
我有几个选择:
我可以将上传的图像和预定义的图像放在同一个表中,并放置一个标志来区分它们,我知道使用标志可能有风险..
我可以将上传的图像和预定义的图像放入 2 个不同的表中,但在这种情况下,如果我需要将所选图像的 id 放入好友表中,我将无法知道该 id 是从哪个表中给出的(因为图像 id 是一个递增的整数)
那么我该如何设计呢?哪种方法更好,为什么?
我会做出这些假设:
在这种情况下,您应该在好友表中定义两列image和imageID。为这些列定义默认值,为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