规划数据库结构时遇到一个小问题。
目前,我有这样的事情(图表:http://i61.tinypic.com/30xa1yp.png):
CREATE TABLE ProductionStage (Id int PRIMARY KEY)
CREATE TABLE ReportType (Id int PRIMARY KEY)
CREATE TABLE ProductionLine (Id int PRIMARY KEY)
CREATE TABLE PL_RT
(
IdProductionLine int FOREIGN KEY REFERENCES ProductionLine(Id),
IdReportType int FOREIGN KEY REFERENCES ReportType(Id),
primary key (IdProductionLine, IdReportType)
)
CREATE TABLE PS_RT
(
IdProductionStage int FOREIGN KEY REFERENCES ProductionStage(Id),
IdReportType int FOREIGN KEY REFERENCES ReportType(Id),
primary key (IdProductionStage, IdReportType)
)
CREATE TABLE Report
(
IdProductionStage int FOREIGN KEY REFERENCES PS_RT(Id),
IdReportType int , -- foreign key from PS_RT(Id) or PL_RT(Id)
IdProductionLine int FOREIGN KEY REFERENCES PL_RT(Id)
)
我想为生产监控准备一个数据库项目。主要概念看起来像这样。一名工人正在操作生产线,并且在每个完整的生产阶段,他正在准备一份报告。报告类型取决于生产阶段和生产线,但每条生产线的生产阶段是相同的。
我的问题:
这个外键链接(如Report - > PS_RT - > ProductionStage || ReportType)在SQL Server中是个好主意,是否会正确执行约束?
我也想听听你如何解决这类问题的想法,因为我真的没有比这更好的想法。