--------------------------------------------------- -- 자재구매관리 --------------------------------------------------- -- 자재 구매 신청 -- MapuRequest CREATE TABLE FmsMaterialPurchaseRequest ( SiteId int NOT NULL , -- 현장 고유번호 BusinessFieldId int NOT NULL , -- 업무분야 고유번호 PurchaseRequestId int identity(1,1) NOT NULL , -- 구매신청 고유번호 PurchaseTypeId smallint NOT NULL , -- 구매구분 고유번호 RequestDate datetime NOT NULL , -- 구매신청일시 RequestUserId nvarchar(24) NOT NULL , -- 구매요청자 사용자 고유번호 PurchaseHopeDate datetime NULL, -- 구매희망일 Title nvarchar(256) NOT NULL , -- 구매신청 제목 Reason nvarchar(2000) NOT NULL , -- 구매신청 사유 ProgressId smallint NOT NULL , -- 구매 신청 진행 고유번호 ApprovalDate datetime NULL , -- 승인일시 ApprovalUserId nvarchar(24) NULL , -- 승인자 고유번호 PRIMARY KEY (SiteId ASC , BusinessFieldId ASC , PurchaseRequestId ASC) ); -- 자재 구매 신청 자재들 CREATE TABLE FmsMaterialPurchaseRequestMaterial ( SiteId int NOT NULL , -- 현장 고유번호 BusinessFieldId int NOT NULL , -- 업무분야 고유번호 PurchaseRequestId int NOT NULL , -- 구매신청 고유번호 MaterialId int NOT NULL , -- 자재 고유번호 MaterialCount int NOT NULL , -- 자재 요청 수량 PRIMARY KEY (SiteId ASC , BusinessFieldId ASC , PurchaseRequestId ASC , MaterialId ASC) ); -- 자재 발주 정보 -- MapuRequest CREATE TABLE FmsMaterialPurchaseOrder ( SiteId int NOT NULL , -- 현장 고유번호 BusinessFieldId int NOT NULL , -- 업무분야 고유번호 PurchaseOrderId int identity(1,1) NOT NULL , -- 자재발주 고유번호 PurchaseRequestId int NOT NULL , -- 구매신청 고유번호 TradeCompanyId int NOT NULL, -- 거래처 고유번호 OrderDate datetime NOT NULL , -- 발주신청일시 OrderUserId nvarchar(24) NOT NULL , -- 발주 사용자 고유번호 Title nvarchar(256) NOT NULL , -- 발주 제목 Reason nvarchar(2000) NOT NULL , -- 발주 사유 StoredDueDate datetime NULL , -- 입고 예정일 FileId int NULL , -- 발주서 파일 PRIMARY KEY (SiteId ASC , BusinessFieldId ASC , PurchaseOrderId ASC) ); -- 발주서 자재들 CREATE TABLE FmsMaterialPurchaseOrderMaterial ( SiteId int NOT NULL , -- 현장 고유번호 BusinessFieldId int NOT NULL , -- 업무분야 고유번호 PurchaseOrderId int NOT NULL , -- 자재발주 고유번호 MaterialId int NOT NULL , -- 자재 고유번호 MaterialCount int NOT NULL , -- 자재 요청 수량 UnitCost int NOT NULL , -- 자재 단가 PRIMARY KEY (SiteId ASC , BusinessFieldId ASC , PurchaseOrderId ASC , MaterialId ASC) ); ---- 자재 발주서 파일들 --CREATE TABLE FmsMaterialPurchaseOrderFile --( -- SiteId int NOT NULL , -- 현장 고유번호 -- BusinessFieldId int NOT NULL , -- 업무분야 고유번호 -- PurchaseOrderId int NOT NULL , -- 자재발주 고유번호 -- FileId int NOT NULL , -- 파일 고유번호 -- PRIMARY KEY (SiteId ASC , BusinessFieldId ASC , PurchaseOrderId ASC , FileId ASC) --); -- 구매 요청 FK ALTER TABLE FmsMaterialPurchaseRequest ADD CONSTRAINT FK__FmsMaterialPurchaseRequest__CmSite FOREIGN KEY (SiteId) REFERENCES CmSite(SiteId) ; ALTER TABLE FmsMaterialPurchaseRequest ADD CONSTRAINT FK__FmsMaterialPurchaseRequest__CmBusinessField FOREIGN KEY (SiteId, BusinessFieldId) REFERENCES CmBusinessField(SiteId, BusinessFieldId) ; ALTER TABLE FmsMaterialPurchaseRequest ADD CONSTRAINT FK__FmsMaterialPurchaseRequest__FmsMaterialCodePurchaseType FOREIGN KEY (SiteId, PurchaseTypeId) REFERENCES FmsMaterialCodePurchaseType(SiteId, PurchaseTypeId) ; -- 주의!!! -- FK 이름 생성 규칙 : 같은 테이블에 여러개의 필드가 하나의 테이블에 FK를 가질 경우, -- 네이밍 순서가 넘버링으로 결정된다. 아래와 같은 경우 그것을 보장받기 위해 CmUser1로 명시했다. ALTER TABLE FmsMaterialPurchaseRequest ADD CONSTRAINT FK__FmsMaterialPurchaseRequest__CmUser_AsRequestUserId FOREIGN KEY (SiteId, RequestUserId) REFERENCES CmUser(SiteId, UserId) ; ALTER TABLE FmsMaterialPurchaseRequest ADD CONSTRAINT FK__FmsMaterialPurchaseRequest__CmUser1_AsApprovalUserId FOREIGN KEY (SiteId, ApprovalUserId) REFERENCES CmUser(SiteId, UserId) ; ALTER TABLE FmsMaterialPurchaseRequest ADD CONSTRAINT FK__FmsMaterialPurchaseRequest__FmsMaterialCodeProgress FOREIGN KEY (ProgressId) REFERENCES FmsMaterialCodeProgress(ProgressId) ; -- 구매 신청 자재들 FK ALTER TABLE FmsMaterialPurchaseRequestMaterial ADD CONSTRAINT FK__FmsMaterialPurchaseRequestMaterial__FmsMaterialPurchaseRequest FOREIGN KEY (SiteId, BusinessFieldId, PurchaseRequestId) REFERENCES FmsMaterialPurchaseRequest(SiteId, BusinessFieldId, PurchaseRequestId) ; ALTER TABLE FmsMaterialPurchaseRequestMaterial ADD CONSTRAINT FK__FmsMaterialPurchaseRequestMaterial__FmsMaterial FOREIGN KEY (SiteId, BusinessFieldId, MaterialId) REFERENCES FmsMaterial(SiteId, BusinessFieldId, MaterialId) ; -- 발주 FK ALTER TABLE FmsMaterialPurchaseOrder ADD CONSTRAINT FK__FmsMaterialPurchaseOrder__CmSite FOREIGN KEY (SiteId) REFERENCES CmSite(SiteId) ; ALTER TABLE FmsMaterialPurchaseOrder ADD CONSTRAINT FK__FmsMaterialPurchaseOrder__FmsMaterialPurchaseRequest FOREIGN KEY (SiteId, BusinessFieldId, PurchaseRequestId) REFERENCES FmsMaterialPurchaseRequest(SiteId, BusinessFieldId, PurchaseRequestId) ; ALTER TABLE FmsMaterialPurchaseOrder ADD CONSTRAINT FK__FmsMaterialPurchaseOrder__CmBusinessField FOREIGN KEY (SiteId, BusinessFieldId) REFERENCES CmBusinessField(SiteId, BusinessFieldId) ; ALTER TABLE FmsMaterialPurchaseOrder ADD CONSTRAINT FK__FmsMaterialPurchaseOrder__CmUser FOREIGN KEY (SiteId, OrderUserId) REFERENCES CmUser(SiteId, UserId) ; ALTER TABLE FmsMaterialPurchaseOrder ADD CONSTRAINT FK__FmsMaterialPurchaseOrder__FmsMaterialTradeCompany FOREIGN KEY (SiteId, TradeCompanyId) REFERENCES FmsMaterialTradeCompany(SiteId, TradeCompanyId) ; ALTER TABLE FmsMaterialPurchaseOrder ADD CONSTRAINT FK__FmsMaterialPurchaseOrder__CmFile FOREIGN KEY (SiteId, FileId) REFERENCES CmFile(SiteId, FileId) ; -- 발주 자재들 FK ALTER TABLE FmsMaterialPurchaseOrderMaterial ADD CONSTRAINT FK__FmsMaterialPurchaseOrderMaterial__FmsMaterialPurchaseOrder FOREIGN KEY (SiteId, BusinessFieldId, PurchaseOrderId) REFERENCES FmsMaterialPurchaseOrder(SiteId, BusinessFieldId, PurchaseOrderId) ; ALTER TABLE FmsMaterialPurchaseOrderMaterial ADD CONSTRAINT FK__FmsMaterialPurchaseOrderMaterial__FmsMaterial FOREIGN KEY (SiteId, BusinessFieldId, MaterialId) REFERENCES FmsMaterial(SiteId, BusinessFieldId, MaterialId) ; -- 발주 파일 FK --ALTER TABLE FmsMaterialPurchaseOrderFile -- ADD CONSTRAINT FK__FmsMaterialPurchaseOrderFile__FmsMaterialPurchaseOrder -- FOREIGN KEY (SiteId, BusinessFieldId, PurchaseOrderId) REFERENCES FmsMaterialPurchaseOrder(SiteId, BusinessFieldId, PurchaseOrderId) --; --ALTER TABLE FmsMaterialPurchaseOrderFile -- ADD CONSTRAINT FK__FmsMaterialPurchaseOrderFile__CmFile -- FOREIGN KEY (SiteId, FileId) REFERENCES CmFile(SiteId, FileId) --;