0

我正在为一个简单的CMS(如网络应用程序)开发数据库。基本上,它由属于内容组的内容位组成。就像是页面一部分的文本一样。为此,我正在考虑一张page桌子和一张text具有 1:n 关系的桌子。

事情是我还希望资产链接到页面文本。因此,一段文本可以有一个链接到它的缩略图,但一个页面也可以有一个链接到它的缩略图。不知何故,我只是无法弄清楚如何很好地做到这一点。我应该assets用柱子制作一个表格,pageIdtextId确保每行只使用其中一个吗?我觉得有点奇怪。或者我只需要制作两个不同的资产表?

希望你们能帮我解决这个问题!

4

2 回答 2

1

这种情况一般有两种处理方式:

  1. 要么制作独家 FK(正如您已经发现的那样),
  2. 或者使用继承和一个FK,像这样......

在此处输入图像描述

...然而,这可能是一个只有两个子表的矫枉过正。OTOH,随着关系两侧表的数量增加,这种方案可以避免“关系乘法”,例如:

在此处输入图像描述

有关如何在关系数据库中实现继承的一些提示,请查看这篇文章

于 2013-06-10T01:35:12.890 回答
1

资产是独立的,并且可能具有完全不在任何页面上使用的生命。例如,考虑一个已上传到您的服务器的图形。

同样,您可能拥有在多个页面上重复使用的资产。肯定会想到图形,​​还有一些样板文本、广告或任何数量的其他常见元素。

因此,您的问题是您的资产表上没有互斥外键。您的问题是资产表上有任何外键。

相反,您应该有一个映射assetspages. 如果您有多个可以使用资产的事物,请为每个使用资产的事物创建一个交叉表。

于 2013-06-10T01:29:50.563 回答