비슷한 질문이있을 수 있지만 실현하기에 충분히 근접한 것을 발견하지 못했습니다. 이 스펙을 감안할 때복합 키를 통한 외래 키로 대리 키
,
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)를 사용하는 것이 더 좋을까요? 본질적으로 그것은 시리즈 테이블에서 에피소드 테이블을 분리 할 것이고 그것은 나를 위해 앉아 있지 않습니다.
값을 더하면이 테이블을 채울 원시 입력 데이터에서 SeriesCode가 'ABCD-1'처럼 보이고 EpisodeCode가 'ABCD-1NMO9'와 같아서 변경 될 수 있습니다.
* : 이전에 높은 업에 의해 결정되었습니다 때문에 "가상"외래 키, 우리는 모두가 잘 보이는, 실제 외래 키
좋은 지적. 실제로 에피소드에 연결된 추가 테이블이있을 것입니다. 이것들은 전체 데이터베이스의 기본 테이블 일뿐입니다. –