데이터베이스 (개인적인 도전을위한 CMS), 외래 키 제약 조건이 많은 14 개의 테이블 (특히 1 -> 0,1 관계) 및 테이블을 기본값으로 채 웁니다.기본값으로 데이터베이스 초기화 (많은 1 ... 0,1 제약 조건 포함)
나를위한 도전은 삽입 할 때 오류를 방지하기 위해 테이블을 채우기 위해 어떤 순서로 어떤 방법론을 감지하는 것입니다.
이렇게하는 몇 가지 고유 한 방법이 있습니까? 잘못된 시퀀스 때문에 초기화 스크립트에서 몇 가지 오류가 계속 발생합니다!
간단한 설명 : 페이지에는 콘텐츠 항목을 포함 할 수 있지만 반드시 그럴 필요는 없습니다. 콘텐츠는 하나 이상의 섹션을 포함 할 수 있지만 반드시 그런 것은 아닙니다. 페이지와 컨텐트는 모두 독립형으로 존재할 수 있습니다. 페이지는 meny에있는 커뮤니티의 일부가 될 수 있습니다.
필자는 orm으로 엔티티 프레임 워크를 사용하고 있으며 edmx를 약간 수정 했으므로 한 -> 많은 관계를 수행 할 때 참조를 얻지 못했습니다.
USE [WebMateCMS]
GO
INSERT INTO [Category]
VALUES ('93dad9c7-6b92-4f3b-a8a9-5a0c330290fc',
'Icon Flag',
'Icon Flags for the different languages',
'2016-03-17T08:32:55', --IsCreated
'2016-03-17T08:32:55', --IsValidFrom
'2016-03-17T08:32:55', --IsActivated
null, --IsDeleted
null, --IsEdited
null, --IsExpired
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- CreatedByNameID/System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ValidFromByNameID/System User account
null, --EditedByNameID
null, --ExpiredByNameID
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ActivatedByNameID/System User account
null) --DeletedByNameID
INSERT INTO [Image]
VALUES ('2f426aa0-752b-4032-a6d0-83d84eb4d0e3',
'English-Flag',
'English Icon Flag',
null, --ImageTypeID
null, --IsThumbnailOfID
'System string filler', --RecordedBy
'System string filler', --Copyright
'System string filler', --Meta
'System string filler', --OriginalSizePx
'System string filler', --Base64Original
'System string filler', --BinaryOriginal
'System string filler', --FilePath
null, --CategoryID
'2016-03-17T08:32:55', --IsCreated
'2016-03-17T08:32:55', --IsValidFrom
'2016-03-17T08:32:55', --IsActivated
null, --IsDeleted
null, --IsEdited
null, --IsExpired
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- CreatedByNameID/System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ValidFromByNameID/System User account
null, --EditedByNameID
null, --ExpiredByNameID
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ActivatedByNameID/System User account
null) --DeletedByNameID
INSERT INTO [Image]
VALUES ('57972deb-6a77-43f8-8b96-a6617a1c7efa',
'Danish-Flag',
'Danish Icon Flag',
null, --ImageTypeID
null, --IsThumbnailOfID
'System string filler', --RecordedBy
'System string filler', --Copyright
'System string filler', --Meta
'System string filler', --OriginalSizePx
'System string filler', --Base64Original
'System string filler', --BinaryOriginal
'System string filler', --FilePath
null, --CategoryID
'2016-03-17T08:32:55', --IsCreated
'2016-03-17T08:32:55', --IsValidFrom
'2016-03-17T08:32:55', --IsActivated
null, --IsDeleted
null, --IsEdited
null, --IsExpired
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- CreatedByNameID/System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ValidFromByNameID/System User account
null, --EditedByNameID
null, --ExpiredByNameID
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ActivatedByNameID/System User account
null) --DeletedByNameID
INSERT INTO [Language]
VALUES ('2f426aa0-752b-4032-a6d0-83d84eb4d0e3',
'English',
'English language',
'en',
null,
'2016-03-17T08:32:55',
'2016-03-17T08:32:55',
'2016-03-17T08:32:55',
null,
null,
null,
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
null,
null,
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
null)
INSERT INTO [Language]
VALUES ('57972deb-6a77-43f8-8b96-a6617a1c7efa',
'Dansk',
'Dansk sprog',
'dk',
null,
'2016-03-17T08:32:55',
'2016-03-17T08:32:55',
'2016-03-17T08:32:55',
null,
null,
null,
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
null,
null,
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
null)
INSERT INTO [UsedPassword]
VALUES ('5b8c3e64-d069-41c6-9554-0cf9c7da9fb7',
'Used passwords for [email protected]',
'Used passwords for [email protected]',
null, --UsedPasswords
null, --UsedSalts
'2016-03-17T08:32:55', --IsCreated
'2016-03-17T08:32:55', --IsValidFrom
'2016-03-17T08:32:55', --IsActivated
null, --IsDeleted
null, --IsEdited
null, --IsExpired
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- CreatedByNameID/System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ValidFromByNameID/System User account
null, --EditedByNameID
null, --ExpiredByNameID
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ActivatedByNameID/System User account
null) --DeletedByNameID
INSERT INTO [UsedPassword]
VALUES ('bffec845-a4fb-477a-bfcc-b7dbb97224cf',
'Used passwords for [email protected]',
'Used passwords for [email protected]',
null, --UsedPasswords
null, --UsedSalts
'2016-03-17T08:32:55', --IsCreated
'2016-03-17T08:32:55', --IsValidFrom
'2016-03-17T08:32:55', --IsActivated
null, --IsDeleted
null, --IsEdited
null, --IsExpired
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- CreatedByNameID/System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ValidFromByNameID/System User account
null, --EditedByNameID
null, --ExpiredByNameID
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ActivatedByNameID/System User account
null) --DeletedByNameID
INSERT INTO [Credential]
VALUES ('5b8c3e64-d069-41c6-9554-0cf9c7da9fb7',
'[email protected]',
'Credential for [email protected]',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', --PassWord
'bbbbbbbbb', --Salt
null, --Token
null, --Certificate
null, --Company
null, --ShowClass
null, --RoleID
null, --UsedPassWordsID
'2016-03-17T08:32:55', --IsCreated
'2016-03-17T08:32:55', --IsValidFrom
'2016-03-17T08:32:55', --IsActivated
null, --IsDeleted
null, --IsEdited
null, --IsExpired
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- CreatedByNameID/System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ValidFromByNameID/System User account
null, --EditedByNameID
null, --ExpiredByNameID
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ActivatedByNameID/System User account
null) --DeletedByNameID
INSERT INTO [Credential]
VALUES ('bffec845-a4fb-477a-bfcc-b7dbb97224cf',
'[email protected]',
'Credential for [email protected]',
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', --PassWord
'bbbbbbbbb', --Salt
null, --Token
null, --Certificate
null, --Company
null, --ShowClass
null, --RoleID
null, --UsedPassWordsID
'2016-03-17T08:32:55', --IsCreated
'2016-03-17T08:32:55', --IsValidFrom
'2016-03-17T08:32:55', --IsActivated
null, --IsDeleted
null, --IsEdited
null, --IsExpired
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- CreatedByNameID/System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ValidFromByNameID/System User account
null, --EditedByNameID
null, --ExpiredByNameID
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ActivatedByNameID/System User account
null) --DeletedByNameID
INSERT INTO [User]
VALUES ('5b8c3e64-d069-41c6-9554-0cf9c7da9fb7',
'Administrator',
'User account for the administrator',
'User',
'RootUser',
'[email protected]',
null, --MobilePhoneNo
null, --ProfileImageID
null,
'RootUser',
'5b8c3e64-d069-41c6-9554-0cf9c7da9fb7',
null,
null,
null,
null,
null,
null,
null,
1,
1,
1,
'2f426aa0-752b-4032-a6d0-83d84eb4d0e3', -- languageid
0, --IsBlockedForSecurityReason
'2016-03-17T08:32:55',
'2016-03-17T08:32:55',
'2016-03-17T08:32:55',
null,
null,
null,
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
null,
null,
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- System User account
null)
INSERT INTO [User]
VALUES ('bffec845-a4fb-477a-bfcc-b7dbb97224cf', --ID
'User', --Name
'User account for the ordinary user', --Description
'User', --FirstName
'OrdinaryUser', --LastName
'[email protected]', --Email
null, --MobilePhoneNo
null, --ProfileImageID
null, --ProfileThumbnailImageID
'OrdinaryUser', --UserName
'bffec845-a4fb-477a-bfcc-b7dbb97224cf', --CredentialID
null, --LastLoginAttempt
null, --LastActive
null, --SequentialLoginAttempts
null, --TooManyFaultyLoginAttempts
null, --SessionID
null, --PreferredLoginMethod
null, --PreferredIpAdr
1, --CanComment
1, --ReceiveNewsMail
1, --ReceiveNewContentNotification
'57972deb-6a77-43f8-8b96-a6617a1c7efa', -- languageid
0, --IsBlockedForSecurityReason
'2016-03-17T08:32:55', --IsCreated
'2016-03-17T08:32:55', --IsValidFrom
'2016-03-17T08:32:55', --IsActivated
null, --IsDeleted
null, --IsEdited
null, --IsExpired
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- CreatedByNameID/System User account
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ValidFromByNameID/System User account
null, --EditedByNameID
null, --ExpiredByNameID
'65d6a29b-30b4-4d42-9b20-450182f393d2', -- ActivatedByNameID/System User account
null) --DeletedByNameID
:
다음
그냥 로그인 절차의 코딩 야 내 초기화 단지 사용자의 스크립트와 다른 테이블입니다 : 여기
내 모델과 관계있다이 스크립트는 오류가 발생하기 때문에 두 개의 마지막 삽입 (사용자)을 제외한 모든 문자를 삽입합니다.
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
(1 row(s) affected)
Msg 547, Level 16, State 0, Line 210
The INSERT statement conflicted with the FOREIGN KEY constraint "User_ImageID_ZeroOrOne". The conflict occurred in database "WebMateCMS", table "dbo.Image", column 'ID'.
The statement has been terminated.
Msg 547, Level 16, State 0, Line 247
The INSERT statement conflicted with the FOREIGN KEY constraint "User_ImageID_ZeroOrOne". The conflict occurred in database "WebMateCMS", table "dbo.Image", column 'ID'.
The statement has been terminated.
여기 내 외래 제약이 있습니다.
--Adding Foreign Key constraints--
--Page--
ALTER TABLE Page
ADD CONSTRAINT Page_LanguageID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Language](ID)
ALTER TABLE Page
ADD CONSTRAINT Page_ImageID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Image](ID)
ALTER TABLE Page
ADD CONSTRAINT Page_MenuID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Menu](ID)
--Content--
ALTER TABLE [Content]
ADD CONSTRAINT Content_PageID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Page](ID)
ALTER TABLE [Content]
ADD CONSTRAINT Content_DocumentTypeID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Type](ID)
ALTER TABLE [Content]
ADD CONSTRAINT Content_IsLockedByNameID_Many FOREIGN KEY (IsLockedByNameID) REFERENCES [User](ID)
ALTER TABLE [Content]
ADD CONSTRAINT Content_WrittenByNameID_Many FOREIGN KEY (WrittenByNameID) REFERENCES [User](ID)
ALTER TABLE [Content]
ADD CONSTRAINT Content_LanguageID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Language](ID)
ALTER TABLE [Content]
ADD CONSTRAINT Content_ImageID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Image](ID)
--Section--
ALTER TABLE [Section]
ADD CONSTRAINT Section_ContentID_Many FOREIGN KEY (ContentID) REFERENCES [Content](ID)
ALTER TABLE [Section]
ADD CONSTRAINT Section_ImageID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Image](ID)
ALTER TABLE [Section]
ADD CONSTRAINT Section_IsLockedByNameID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [User](ID)
--Image--
ALTER TABLE [Image]
ADD CONSTRAINT Image_CategoryID_Many FOREIGN KEY (CategoryID) REFERENCES [Category](ID)
--Menu--
ALTER TABLE Menu
ADD CONSTRAINT Menu_LanguageID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Language](ID)
--User--
ALTER TABLE [User]
ADD CONSTRAINT User_LanguageID_Many FOREIGN KEY (LanguageID) REFERENCES [Language](ID)
ALTER TABLE [User]
ADD CONSTRAINT User_ImageID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Image](ID)
ALTER TABLE [User]
ADD CONSTRAINT User_CredentialID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Credential](ID)
--Credentials--
ALTER TABLE [Credential]
ADD CONSTRAINT Credential_RoleID_Many FOREIGN KEY (RoleID) REFERENCES [Role](ID)
ALTER TABLE [Credential]
ADD CONSTRAINT Credential_UsedPasswordsID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [UsedPassword](ID)
--Role--
ALTER TABLE [Role]
ADD CONSTRAINT Role_PermissionID_Many FOREIGN KEY (ID) REFERENCES [Permission](ID)
--Language--
ALTER TABLE [Language]
ADD CONSTRAINT Language_IconID_ZeroOrOne FOREIGN KEY (ID) REFERENCES [Image](ID)
--Type--
ALTER TABLE Type
ADD CONSTRAINT Type_CategoryID_Many FOREIGN KEY (CategoryID) REFERENCES [Category](ID)
ALTER TABLE Type
ADD CONSTRAINT Type_TemplateID_Many FOREIGN KEY (TemplateID) REFERENCES [Template](ID)
샘플 데이터, 원하는 결과 및 단순화 된 스크립트는 실제로 수행하려는 작업을 설명하는 데 도움이됩니다. –
일반적으로 다른 엔티티 (예 : A)에서 참조하지 않은 가장 "내부"엔티티에서 시작한 다음 방금 삽입 한 엔티티 만 참조하는 엔티티 (B, C) 만 삽입해야합니다 A), 등등. – Wallkan
그것은 까다로울 수 있습니다. AB가 A와 B에 대해 상호 참조이고 입력 스팀에 쌍 (a1, b1) (a1, b2)이 포함되어 있다고 가정합니다. 스크립트가 스트림을 읽고 A, B 및 AB를 채우고 모든 데이터를 조건부로 삽입해야합니다 3 개의 테이블. DB 스키마와 입력에 대해보다 구체적으로 설명 할 수 있습니까? – Serg