SQL 对多个表的约束
SQL constraint over multiple tables
我有一小组表正在与 SQL 服务器连接。
这是一个基本图表:
注意:为了简洁起见,我删除了一些表格中的其他列。
所有这些都可以正常工作,但设计并不像 could/should 那样紧凑。
PageParams
与 PageVariant
相关,而 PageVariant
与 Page
相关
RouteParams
与 Route
相关,而 Route
与 Page
相关
问题是:
PageParam
也连接到 RouteParam
,这会导致完整性问题。
PageParam
最终与 Page
相关。 RouteParam
.
也是
但是,根据当前的设计,Page
在每种情况下可能会有所不同 - 没有任何限制可以确保它相同,但必须如此。我知道可能需要额外的 table/columns,但我正在努力了解如何使这项工作发挥作用的逻辑。
感谢任何建议。
将PageID
添加到RouteParam
并制作FK(PageID,RouteID)。还将 PageID
传播到 PageParam
。 PageParam
然后会有两个 FK:FK (PageID, PageVarianID), FK (PageID, RouteParamId)。
由于外键必须与主键或唯一索引相关,因此还需要创建复合主键或添加复合唯一索引。
PageParam PageVariant
┌────────────────────────┐ ┌───────────────────────┐
│ PageParamID PK │ PageID, PageVariantID │ PageVariantID PK, UX│
│ PageID FK1, FK2├───────────────────────────► │ PageID FK, UX│
│ PageVariantID FK1 │ └─────────┬─────────────┘
│ RouteParamID FK2 │ │
└─────────────┬──────────┘ │
│ │PageID
│PageID, RouteParamID │
│ │
RouteParam ▼ Route Page ▼
┌──────────────────────┐ ┌──────────────────┐ ┌──────────────┐
│ RouteParamID PK, UX │ │ RouteID PK, UX │ │ PageID PK │
│ PageID FK, UX ├─────►│ PageID FK, UX ├────►│ │
│ RouteID FK │ └──────────────────┘ └──────────────┘
└──────────────────────┘ PageID PageID
RouteID
我有一小组表正在与 SQL 服务器连接。
这是一个基本图表:
注意:为了简洁起见,我删除了一些表格中的其他列。
所有这些都可以正常工作,但设计并不像 could/should 那样紧凑。
PageParams
与PageVariant
相关,而PageVariant
与Page
相关
RouteParams
与Route
相关,而Route
与Page
相关
问题是:
PageParam
也连接到 RouteParam
,这会导致完整性问题。
PageParam
最终与 Page
相关。 RouteParam
.
但是,根据当前的设计,Page
在每种情况下可能会有所不同 - 没有任何限制可以确保它相同,但必须如此。我知道可能需要额外的 table/columns,但我正在努力了解如何使这项工作发挥作用的逻辑。
感谢任何建议。
将PageID
添加到RouteParam
并制作FK(PageID,RouteID)。还将 PageID
传播到 PageParam
。 PageParam
然后会有两个 FK:FK (PageID, PageVarianID), FK (PageID, RouteParamId)。
由于外键必须与主键或唯一索引相关,因此还需要创建复合主键或添加复合唯一索引。
PageParam PageVariant
┌────────────────────────┐ ┌───────────────────────┐
│ PageParamID PK │ PageID, PageVariantID │ PageVariantID PK, UX│
│ PageID FK1, FK2├───────────────────────────► │ PageID FK, UX│
│ PageVariantID FK1 │ └─────────┬─────────────┘
│ RouteParamID FK2 │ │
└─────────────┬──────────┘ │
│ │PageID
│PageID, RouteParamID │
│ │
RouteParam ▼ Route Page ▼
┌──────────────────────┐ ┌──────────────────┐ ┌──────────────┐
│ RouteParamID PK, UX │ │ RouteID PK, UX │ │ PageID PK │
│ PageID FK, UX ├─────►│ PageID FK, UX ├────►│ │
│ RouteID FK │ └──────────────────┘ └──────────────┘
└──────────────────────┘ PageID PageID
RouteID