---------------------------------------------------
-- 기초코드관리
---------------------------------------------------

--CREATE TABLE BlcoGroup
CREATE TABLE FmsDrawingCodeGroup
(
	SiteId				int  NOT NULL ,				-- 현장 고유번호
	DrawingGroupId      int  identity(1,1) NOT NULL ,	-- 도면 그룹 고유번호
	Name				nvarchar(50)  NOT NULL ,	-- 도면 그룹 이름

	IsUse				bit  NULL ,					-- 사용 유무

	PRIMARY KEY (SiteId ASC , DrawingGroupId ASC)
);
DBCC CHECKIDENT( FmsDrawingCodeGroup, RESEED, 1 )


--CREATE TABLE BlcoType
CREATE TABLE FmsDrawingCodeType
(
	SiteId				int  NOT NULL ,				-- 현장 고유번호
	DrawingTypeId		int  identity(1,1) NOT NULL ,	-- 도면 타입 고유번호
	Name				nvarchar(50)  NOT NULL ,	-- 도면 타입 이름

	IsUse				bit  NULL ,					-- 사용 유무
	
	PRIMARY KEY (SiteId ASC , DrawingTypeId ASC)
);
DBCC CHECKIDENT( FmsDrawingCodeType, RESEED, 1 )

---------------------------------------------------
-- 도면관리
---------------------------------------------------

--CREATE TABLE BlblBlueprint
CREATE TABLE FmsDrawing
(
	SiteId				int  NOT NULL ,				-- 현장 고유번호
	DrawingId			int  identity(1,1) NOT NULL ,	-- 도면 고유번호
	DrawingNo			nvarchar(20)  NOT NULL ,	-- 도면 번호

	DrawingGroupId		int  NOT NULL ,				-- 도면 그룹 번호
	DrawingTypeId		int  NOT NULL ,				-- 도면 유형 번호

	Name				nvarchar(255)  NOT NULL ,	-- 도면 이름
	[Description]		nvarchar(2000)  NULL ,		-- 도면 설명
	
	PRIMARY KEY (SiteId ASC , DrawingId ASC)
);
DBCC CHECKIDENT( FmsDrawing, RESEED, 1 )

--CREATE TABLE BlblHistory
CREATE TABLE FmsDrawingHistory
(
	SiteId				int NOT NULL ,			-- 현장 고유번호
	DrawingId			int NOT NULL ,			-- 설비 도면 고유번호
	HistoryId			int identity(1,1) NOT NULL ,	-- 설비 도면 수정 고유번호
	RevisionNo			int NOT NULL ,			-- 설비 도면 번호
	FileId				int NOT NULL ,			-- 파일 고유번호
	[Description]		nvarchar(2000)  NULL ,	-- 설비 도면 수정 상세설명

	UpdatedDate         datetime  NULL ,		-- 데이터 변경일
	UpdatedUserId       nvarchar(24)  NULL ,	-- 데이터 변경자 고유번호

	PRIMARY KEY (SiteId ASC , DrawingId ASC , HistoryId ASC)
);
DBCC CHECKIDENT( FmsDrawingHistory, RESEED, 1 )


-- CmFile로 통합
----CREATE TABLE BlblFile
--CREATE TABLE FmsDrawingFile
--(
--	SiteId				int  NOT NULL ,
--	DrawingId			int  NOT NULL ,
--	HistoryId			int  NOT NULL ,
--	FileId				int  identity(1,1) NOT NULL ,
--	FileName			nvarchar(100)  NOT NULL ,
--	FilePath			nvarchar(200)  NOT NULL ,
--	FileSize			numeric(10,0)  NOT NULL ,
--	FileType			nvarchar(100)  NULL ,
	
--	InsertedDate		datetime  NULL ,
--	InsertedUserId		nvarchar(24)  NULL ,
--	UpdatedDate			datetime  NULL ,
--	UpdatedUserId		nvarchar(24)  NULL ,

--	PRIMARY KEY (SiteId ASC , DrawingId ASC , HistoryId ASC , FileId ASC)
--);
--DBCC CHECKIDENT( FmsDrawingFile, RESEED, 1 )


---------------------------------------------------
-- 도면관리
---------------------------------------------------

ALTER TABLE FmsDrawingCodeGroup
	ADD CONSTRAINT FK__FmsDrawingCodeGroup__CmSite
		FOREIGN KEY (SiteId) REFERENCES CmSite(SiteId)
;

ALTER TABLE FmsDrawingCodeType
	ADD CONSTRAINT FK__FmsDrawingCodeType__CmSite
		FOREIGN KEY (SiteId) REFERENCES CmSite(SiteId)
;

ALTER TABLE FmsDrawing
	ADD CONSTRAINT FK__FmsDrawing__CmSite
		FOREIGN KEY (SiteId) REFERENCES CmSite(SiteId)
;

ALTER TABLE FmsDrawing
	ADD CONSTRAINT FK__FmsDrawing__FmsDrawingCodeGroup
		FOREIGN KEY (SiteId , DrawingGroupId) REFERENCES FmsDrawingCodeGroup(SiteId , DrawingGroupId)
;

ALTER TABLE FmsDrawing
	ADD CONSTRAINT FK__FmsDrawing__FmsDrawingCodeType
		FOREIGN KEY (SiteId , DrawingTypeId) REFERENCES FmsDrawingCodeType(SiteId , DrawingTypeId)
;

ALTER TABLE FmsDrawingHistory
	ADD CONSTRAINT FK__FmsDrawingHistory__FmsDrawing
		FOREIGN KEY (SiteId , DrawingId) REFERENCES FmsDrawing(SiteId , DrawingId)
;

ALTER TABLE FmsDrawingHistory
	ADD CONSTRAINT FK__FmsDrawingHistory__FmsFile
		FOREIGN KEY (SiteId , FileId) REFERENCES CmFile(SiteId , FileId)
;


ALTER TABLE FmsDrawingHistory
	ADD CONSTRAINT FK__FmsDrawingHistory__CmUser
		FOREIGN KEY (SiteId , UpdatedUserId) REFERENCES CmUser(SiteId , UserId)
;