我意识到可能会有类似的问题,但我找不到足够接近指导的问题。
鉴于此规范,
Site
---------------------------
SiteID int identity
Name varchar(50)
Series
---------------------
SiteID int
SeriesCode varchar(6)
...
--SeriesCode will be unique for every unique SiteID
Episode
----------------------
SiteID int
SeriesCode varchar(6)
EpisodeCode varchar(10)
...
我提议的设计/实现是
Site
----------------------------
SiteID int identity
Name varchar(50)
Series
-------------------------------------------
SeriesID int identity, surrogate key
SiteID int natural key
SeriesCode varchar(6) natural key
UNIQUE(SiteID, SeriesCode)
...
Episode
-------------------------------------------
EpisodeID int identity, surrogate key
SeriesID int foreign key
EpisodeCode varchar(6) natural key
...
这有什么问题吗?在这里可以将 SeriesID 代理作为外键吗?我不确定我是否遗漏了任何可能出现的明显问题。还是使用复合自然键(SiteID+SeriesCode / SiteID+EpisodeCode)会更好?从本质上讲,这会将 Episode 表与 Series 表分离,这不适合我。
值得补充的是,在将填充这些表的原始输入数据中,SeriesCode 看起来像“ABCD-1”,而 EpisodeCode 看起来像“ABCD-1NMO9”,所以我想这是可以改变的另一件事。
*:“虚拟”外键,因为之前上级已经决定我们不应该使用实际的外键