博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前言 -- 数据库准备、一些名词准备
阅读量:6670 次
发布时间:2019-06-25

本文共 24228 字,大约阅读时间需要 80 分钟。

  hot3.png

前言

      本系列整理自 。

数据库准备

       该系列用到的数据库为 school,使用SQL Server。如果没有安装,可以使用VS附带的SQL Express。步骤省略,不清楚的可以使用“靠谱的”搜索引擎查找。

       SQL脚本:

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- 创建 Department 表。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[Department]')AND type in (N'U'))BEGINCREATE TABLE [dbo].[Department]([DepartmentID] [int] NOT NULL,[Name] [nvarchar](50) NOT NULL,[Budget] [money] NOT NULL,[StartDate] [datetime] NOT NULL,[Administrator] [int] NULL,CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED([DepartmentID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]ENDGO-- 创建 Person 表。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[Person]')AND type in (N'U'))BEGINCREATE TABLE [dbo].[Person]([PersonID] [int] IDENTITY(1,1) NOT NULL,[LastName] [nvarchar](50) NOT NULL,[FirstName] [nvarchar](50) NOT NULL,[HireDate] [datetime] NULL,[EnrollmentDate] [datetime] NULL,[Discriminator] [nvarchar](50) NOT NULL,CONSTRAINT [PK_School.Student] PRIMARY KEY CLUSTERED([PersonID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]ENDGO-- 创建 OnsiteCourse 表。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[OnsiteCourse]')AND type in (N'U'))BEGINCREATE TABLE [dbo].[OnsiteCourse]([CourseID] [int] NOT NULL,[Location] [nvarchar](50) NOT NULL,[Days] [nvarchar](50) NOT NULL,[Time] [smalldatetime] NOT NULL,CONSTRAINT [PK_OnsiteCourse] PRIMARY KEY CLUSTERED([CourseID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]ENDGO-- 创建 OnlineCourse 表。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[OnlineCourse]')AND type in (N'U'))BEGINCREATE TABLE [dbo].[OnlineCourse]([CourseID] [int] NOT NULL,[URL] [nvarchar](100) NOT NULL,CONSTRAINT [PK_OnlineCourse] PRIMARY KEY CLUSTERED([CourseID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]ENDGO-- 创建 StudentGrade 表。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[StudentGrade]')AND type in (N'U'))BEGINCREATE TABLE [dbo].[StudentGrade]([EnrollmentID] [int] IDENTITY(1,1) NOT NULL,[CourseID] [int] NOT NULL,[StudentID] [int] NOT NULL,[Grade] [decimal](3, 2) NULL,CONSTRAINT [PK_StudentGrade] PRIMARY KEY CLUSTERED([EnrollmentID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]ENDGO-- 创建 CourseInstructor 表。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[CourseInstructor]')AND type in (N'U'))BEGINCREATE TABLE [dbo].[CourseInstructor]([CourseID] [int] NOT NULL,[PersonID] [int] NOT NULL,CONSTRAINT [PK_CourseInstructor] PRIMARY KEY CLUSTERED([CourseID] ASC,[PersonID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]ENDGO-- 创建 Course 表。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[Course]')AND type in (N'U'))BEGINCREATE TABLE [dbo].[Course]([CourseID] [int] NOT NULL,[Title] [nvarchar](100) NOT NULL,[Credits] [int] NOT NULL,[DepartmentID] [int] NOT NULL,CONSTRAINT [PK_School.Course] PRIMARY KEY CLUSTERED([CourseID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]ENDGO-- 创建 OfficeAssignment 表。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[OfficeAssignment]')AND type in (N'U'))BEGINCREATE TABLE [dbo].[OfficeAssignment]([InstructorID] [int] NOT NULL,[Location] [nvarchar](50) NOT NULL,[Timestamp] [timestamp] NOT NULL,CONSTRAINT [PK_OfficeAssignment] PRIMARY KEY CLUSTERED([InstructorID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]ENDGO-- 定义 OnsiteCourse 与 Course 之间的关系。IF NOT EXISTS (SELECT * FROM sys.foreign_keysWHERE object_id = OBJECT_ID(N'[dbo].[FK_OnsiteCourse_Course]')AND parent_object_id = OBJECT_ID(N'[dbo].[OnsiteCourse]'))ALTER TABLE [dbo].[OnsiteCourse] WITH CHECK ADDCONSTRAINT [FK_OnsiteCourse_Course] FOREIGN KEY([CourseID])REFERENCES [dbo].[Course] ([CourseID])GOALTER TABLE [dbo].[OnsiteCourse] CHECKCONSTRAINT [FK_OnsiteCourse_Course]GO-- 定义 OnlineCourse 与 Course 之间的关系。IF NOT EXISTS (SELECT * FROM sys.foreign_keysWHERE object_id = OBJECT_ID(N'[dbo].[FK_OnlineCourse_Course]')AND parent_object_id = OBJECT_ID(N'[dbo].[OnlineCourse]'))ALTER TABLE [dbo].[OnlineCourse] WITH CHECK ADDCONSTRAINT [FK_OnlineCourse_Course] FOREIGN KEY([CourseID])REFERENCES [dbo].[Course] ([CourseID])GOALTER TABLE [dbo].[OnlineCourse] CHECKCONSTRAINT [FK_OnlineCourse_Course]GO-- 定义 StudentGrade 与 Course 之间的关系。IF NOT EXISTS (SELECT * FROM sys.foreign_keysWHERE object_id = OBJECT_ID(N'[dbo].[FK_StudentGrade_Course]')AND parent_object_id = OBJECT_ID(N'[dbo].[StudentGrade]'))ALTER TABLE [dbo].[StudentGrade] WITH CHECK ADDCONSTRAINT [FK_StudentGrade_Course] FOREIGN KEY([CourseID])REFERENCES [dbo].[Course] ([CourseID])GOALTER TABLE [dbo].[StudentGrade] CHECKCONSTRAINT [FK_StudentGrade_Course]GO-- 定义 StudentGrade 与 Student 之间的关系。IF NOT EXISTS (SELECT * FROM sys.foreign_keysWHERE object_id = OBJECT_ID(N'[dbo].[FK_StudentGrade_Student]')AND parent_object_id = OBJECT_ID(N'[dbo].[StudentGrade]'))ALTER TABLE [dbo].[StudentGrade] WITH CHECK ADDCONSTRAINT [FK_StudentGrade_Student] FOREIGN KEY([StudentID])REFERENCES [dbo].[Person] ([PersonID])GOALTER TABLE [dbo].[StudentGrade] CHECKCONSTRAINT [FK_StudentGrade_Student]GO-- 定义 CourseInstructor 与 Course 之间的关系。IF NOT EXISTS (SELECT * FROM sys.foreign_keysWHERE object_id = OBJECT_ID(N'[dbo].[FK_CourseInstructor_Course]')AND parent_object_id = OBJECT_ID(N'[dbo].[CourseInstructor]'))ALTER TABLE [dbo].[CourseInstructor] WITH CHECK ADDCONSTRAINT [FK_CourseInstructor_Course] FOREIGN KEY([CourseID])REFERENCES [dbo].[Course] ([CourseID])GOALTER TABLE [dbo].[CourseInstructor] CHECKCONSTRAINT [FK_CourseInstructor_Course]GO-- 定义 CourseInstructor 与 Person 之间的关系。IF NOT EXISTS (SELECT * FROM sys.foreign_keysWHERE object_id = OBJECT_ID(N'[dbo].[FK_CourseInstructor_Person]')AND parent_object_id = OBJECT_ID(N'[dbo].[CourseInstructor]'))ALTER TABLE [dbo].[CourseInstructor] WITH CHECK ADDCONSTRAINT [FK_CourseInstructor_Person] FOREIGN KEY([PersonID])REFERENCES [dbo].[Person] ([PersonID])GOALTER TABLE [dbo].[CourseInstructor] CHECKCONSTRAINT [FK_CourseInstructor_Person]GO-- 定义 Course 与 Department 之间的关系。IF NOT EXISTS (SELECT * FROM sys.foreign_keysWHERE object_id = OBJECT_ID(N'[dbo].[FK_Course_Department]')AND parent_object_id = OBJECT_ID(N'[dbo].[Course]'))ALTER TABLE [dbo].[Course] WITH CHECK ADDCONSTRAINT [FK_Course_Department] FOREIGN KEY([DepartmentID])REFERENCES [dbo].[Department] ([DepartmentID])GOALTER TABLE [dbo].[Course] CHECK CONSTRAINT [FK_Course_Department]GO-- 定义 OfficeAssignment 与 Person 之间的关系。IF NOT EXISTS (SELECT * FROM sys.foreign_keysWHERE object_id = OBJECT_ID(N'[dbo].[FK_OfficeAssignment_Person]')AND parent_object_id = OBJECT_ID(N'[dbo].[OfficeAssignment]'))ALTER TABLE [dbo].[OfficeAssignment] WITH CHECK ADDCONSTRAINT [FK_OfficeAssignment_Person] FOREIGN KEY([InstructorID])REFERENCES [dbo].[Person] ([PersonID])GOALTER TABLE [dbo].[OfficeAssignment] CHECKCONSTRAINT [FK_OfficeAssignment_Person]GO-- 创建 InsertOfficeAssignment 存储过程。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[InsertOfficeAssignment]')AND type in (N'P', N'PC'))BEGINEXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[InsertOfficeAssignment]@InstructorID int,@Location nvarchar(50)ASINSERT INTO dbo.OfficeAssignment (InstructorID, Location)VALUES (@InstructorID, @Location);IF @@ROWCOUNT > 0BEGINSELECT [Timestamp] FROM OfficeAssignmentWHERE InstructorID=@InstructorID;END'ENDGO-- 创建 UpdateOfficeAssignment 存储过程。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[UpdateOfficeAssignment]')AND type in (N'P', N'PC'))BEGINEXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[UpdateOfficeAssignment]@InstructorID int,@Location nvarchar(50),@OrigTimestamp timestampASUPDATE OfficeAssignment SET Location=@LocationWHERE InstructorID=@InstructorID AND [Timestamp]=@OrigTimestamp;IF @@ROWCOUNT > 0BEGINSELECT [Timestamp] FROM OfficeAssignmentWHERE InstructorID=@InstructorID;END'ENDGO-- 创建 DeleteOfficeAssignment 存储过程。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[DeleteOfficeAssignment]')AND type in (N'P', N'PC'))BEGINEXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[DeleteOfficeAssignment]@InstructorID intASDELETE FROM OfficeAssignmentWHERE InstructorID=@InstructorID;'ENDGO-- 创建 DeletePerson 存储过程。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[DeletePerson]')AND type in (N'P', N'PC'))BEGINEXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[DeletePerson]@PersonID intASDELETE FROM Person WHERE PersonID = @PersonID;'ENDGO-- 创建 UpdatePerson 存储过程。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[UpdatePerson]')AND type in (N'P', N'PC'))BEGINEXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[UpdatePerson]@PersonID int,@LastName nvarchar(50),@FirstName nvarchar(50),@HireDate datetime,@EnrollmentDate datetime,@Discriminator nvarchar(50)ASUPDATE Person SET LastName=@LastName,FirstName=@FirstName,HireDate=@HireDate,EnrollmentDate=@EnrollmentDate,Discriminator=@DiscriminatorWHERE PersonID=@PersonID;'ENDGO-- 创建 InsertPerson 存储过程。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[InsertPerson]')AND type in (N'P', N'PC'))BEGINEXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[InsertPerson]@LastName nvarchar(50),@FirstName nvarchar(50),@HireDate datetime,@EnrollmentDate datetime,@Discriminator nvarchar(50)ASINSERT INTO dbo.Person (LastName,FirstName,HireDate,EnrollmentDate,Discriminator)VALUES (@LastName,@FirstName,@HireDate,@EnrollmentDate,@Discriminator);SELECT SCOPE_IDENTITY() as NewPersonID;'ENDGO-- 创建 GetStudentGrades 存储过程。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[GetStudentGrades]')AND type in (N'P', N'PC'))BEGINEXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[GetStudentGrades]@StudentID intASSELECT EnrollmentID, Grade, CourseID, StudentID FROM dbo.StudentGradeWHERE StudentID = @StudentID'ENDGO-- 创建 GetDepartmentName 存储过程。IF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id = OBJECT_ID(N'[dbo].[GetDepartmentName]')AND type in (N'P', N'PC'))BEGINEXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[GetDepartmentName]@ID int,@Name nvarchar(50) OUTPUTASSELECT @Name = Name FROM DepartmentWHERE DepartmentID = @ID'ENDGO-- 将数据插到 Person 表中。USE SchoolGOSET IDENTITY_INSERT dbo.Person ONGOINSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (1, 'Abercrombie', 'Kim', '1995-03-11', null, 'Instructor');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (2, 'Barzdukas', 'Gytis', null, '2005-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (3, 'Justice', 'Peggy', null, '2001-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (4, 'Fakhouri', 'Fadi', '2002-08-06', null, 'Instructor');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (5, 'Harui', 'Roger', '1998-07-01', null, 'Instructor');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (6, 'Li', 'Yan', null, '2002-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (7, 'Norman', 'Laura', null, '2003-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (8, 'Olivotto', 'Nino', null, '2005-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (9, 'Tang', 'Wayne', null, '2005-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (10, 'Alonso', 'Meredith', null, '2002-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (11, 'Lopez', 'Sophia', null, '2004-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (12, 'Browning', 'Meredith', null, '2000-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (13, 'Anand', 'Arturo', null, '2003-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (14, 'Walker', 'Alexandra', null, '2000-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (15, 'Powell', 'Carson', null, '2004-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (16, 'Jai', 'Damien', null, '2001-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (17, 'Carlson', 'Robyn', null, '2005-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (18, 'Zheng', 'Roger', '2004-02-12', null, 'Instructor');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (19, 'Bryant', 'Carson', null, '2001-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (20, 'Suarez', 'Robyn', null, '2004-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (21, 'Holt', 'Roger', null, '2004-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (22, 'Alexander', 'Carson', null, '2005-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (23, 'Morgan', 'Isaiah', null, '2001-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (24, 'Martin', 'Randall', null, '2005-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (25, 'Kapoor', 'Candace', '2001-01-15', null, 'Instructor');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (26, 'Rogers', 'Cody', null, '2002-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (27, 'Serrano', 'Stacy', '1999-06-01', null, 'Instructor');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (28, 'White', 'Anthony', null, '2001-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (29, 'Griffin', 'Rachel', null, '2004-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (30, 'Shan', 'Alicia', null, '2003-09-01', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (31, 'Stewart', 'Jasmine', '1997-10-12', null, 'Instructor');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (32, 'Xu', 'Kristen', '2001-7-23', null, 'Instructor');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (33, 'Gao', 'Erica', null, '2003-01-30', 'Student');INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate, Discriminator)VALUES (34, 'Van Houten', 'Roger', '2000-12-07', null, 'Instructor');GOSET IDENTITY_INSERT dbo.Person OFFGO-- 将数据插到 Department 表中。INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator)VALUES (1, 'Engineering', 350000.00, '2007-09-01', 2);INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator)VALUES (2, 'English', 120000.00, '2007-09-01', 6);INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator)VALUES (4, 'Economics', 200000.00, '2007-09-01', 4);INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator)VALUES (7, 'Mathematics', 250000.00, '2007-09-01', 3);GO -- 将数据插到 Course 表中。INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (1050, 'Chemistry', 4, 1);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (1061, 'Physics', 4, 1);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (1045, 'Calculus', 4, 7);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (2030, 'Poetry', 2, 2);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (2021, 'Composition', 3, 2);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (2042, 'Literature', 4, 2);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (4022, 'Microeconomics', 3, 4);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (4041, 'Macroeconomics', 3, 4);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (4061, 'Quantitative', 2, 4);INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)VALUES (3141, 'Trigonometry', 4, 7);GO-- 将数据插到 OnlineCourse 表中。INSERT INTO dbo.OnlineCourse (CourseID, URL)VALUES (2030, 'http://www.fineartschool.net/Poetry');INSERT INTO dbo.OnlineCourse (CourseID, URL)VALUES (2021, 'http://www.fineartschool.net/Composition');INSERT INTO dbo.OnlineCourse (CourseID, URL)VALUES (4041, 'http://www.fineartschool.net/Macroeconomics');INSERT INTO dbo.OnlineCourse (CourseID, URL)VALUES (3141, 'http://www.fineartschool.net/Trigonometry');-- 将数据插到 OnsiteCourse 表中。INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time])VALUES (1050, '123 Smith', 'MTWH', '11:30');INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time])VALUES (1061, '234 Smith', 'TWHF', '13:15');INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time])VALUES (1045, '121 Smith','MWHF', '15:30');INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time])VALUES (4061, '22 Williams', 'TH', '11:15');INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time])VALUES (2042, '225 Adams', 'MTWH', '11:00');INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time])VALUES (4022, '23 Williams', 'MWF', '9:00');-- 将数据插到 CourseInstructor 表中。INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (1050, 1);INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (1061, 31);INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (1045, 5);INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (2030, 4);INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (2021, 27);INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (2042, 25);INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (4022, 18);INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (4041, 32);INSERT INTO dbo.CourseInstructor(CourseID, PersonID)VALUES (4061, 34);GO-- 将数据插到 OfficeAssignment 表中。INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (1, '17 Smith');INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (4, '29 Adams');INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (5, '37 Williams');INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (18, '143 Smith');INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (25, '57 Adams');INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (27, '271 Williams');INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (31, '131 Smith');INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (32, '203 Williams');INSERT INTO dbo.OfficeAssignment(InstructorID, Location)VALUES (34, '213 Smith');-- 将数据插到 StudentGrade 表中。INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2021, 2, 4);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2030, 2, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2021, 3, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2030, 3, 4);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2021, 6, 2.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2042, 6, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2021, 7, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2042, 7, 4);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2021, 8, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (2042, 8, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4041, 9, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4041, 10, null);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4041, 11, 2.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4041, 12, null);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4061, 12, null);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4022, 14, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4022, 13, 4);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4061, 13, 4);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4041, 14, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4022, 15, 2.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4022, 16, 2);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4022, 17, null);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4022, 19, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4061, 20, 4);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4061, 21, 2);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4022, 22, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4041, 22, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4061, 22, 2.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (4022, 23, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1045, 23, 1.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1061, 24, 4);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1061, 25, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1050, 26, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1061, 26, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1061, 27, 3);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1045, 28, 2.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1050, 28, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1061, 29, 4);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1050, 30, 3.5);INSERT INTO dbo.StudentGrade (CourseID, StudentID, Grade)VALUES (1061, 30, 4);GO

参照

  实体框架词汇表 

  

术语

定义

Code First

使用代码创建实体框架模型。模型可以面向任何现有数据库或新数据库。

上下文

表示与数据库会话的类,用于查询和保存数据。上下文派生自 DbContext ObjectContext 类。

约定 (Code First)

实体框架用来根据类推断模型形状的规则。

Database First

使用 EF 设计器创建面向现有数据库的实体框架模型。

预先加载

一种加载相关数据的模式,在这种模式下,对一种实体的查询会在查询过程中也加载相关实体。

EF 设计器

Visual Studio 中的可视化设计器,可用来使用方框和线创建实体框架模型。

Entity

表示客户、产品和订单等应用程序数据的类或对象。

实体数据模型

描述实体以及实体间关系的模型。

显式加载

一种加载相关数据的模式,在此模式下,将通过调用 API 来调用相关对象。

Fluent API

可用于配置 Code First 模型的 API

外键关联

实体间的一种关联,其中,表示外键的属性包括在依赖实体的类中(即,Product 包含一个 CategoryId 属性)。

识别关系

一种关系,其中主体实体的主键是依赖实体的主键的一部分。在这种关系中,没有主体实体,依赖实体就不能存在。

独立关联

实体间的一种关联,其中,依赖实体的类中没有表示外键的属性(即,Product 类包含与 Category 的关系,但没有 CategoryId 属性)。实体框架将使用独立对象来跟踪这种关系。

延迟加载

一种加载相关数据的模式,在此模式下,访问导航属性时将自动加载相关对象。

Model First

使用 EF 设计器创建实体框架模型,随后使用此模型来创建新数据库。

导航属性

引用其他实体的实体属性(即,Product 包含 Category 导航属性,而 Category 包含 Products 导航属性)。

关系逆反

关系的相对一端,例如,product.Category category.Product

自跟踪实体

从代码生成模板生成的实体,这种实体有助于 N 层开发。

每个具体类型一张表 (TPC)

一种映射继承的方法,其中,层次结构中的每个非抽象类型都映射到数据库中单独的表。

每个层析结构一个表 (TPH)

一种映射继承的方法,其中,层次结构中的所有类型都映射到数据库中的同一个表。鉴别器列用于标识每行所关联的类型。

每个类型一张表 (TPT)

一种映射继承的方法,其中,层次结构中所有类型的公共属性都映射到数据库中的同一个表,但每个类型的唯一属性都映射到单独的表。

类型发现

对应该是实体框架模型的一部分的类型进行标识的过程。

转载于:https://my.oschina.net/c7jie/blog/519218

你可能感兴趣的文章
HDU 1004 Let the Balloon Rise【STL<map>】
查看>>
Java千百问_05面向对象(006)_is-a,has-a,like-a是什么
查看>>
【Python】python更新数据库脚本两种方法
查看>>
linux进程同步机制_转
查看>>
PHP框架认识初步
查看>>
给 Android 初学者的 Gradle 知识普及
查看>>
分模块开发创建Action子模块——(九)
查看>>
基于Nginx实现一个自己的HTTP模块
查看>>
LeetCode(34)-Palindrome Number
查看>>
阅读《Android 从入门到精通》(24)——切换图片
查看>>
SimpleDateFormat线程不安全及解决的方法
查看>>
Unity---------Mesh理解
查看>>
hdu 1728 逃离迷宫 bfs记转向
查看>>
一分钟学会 ConstraintLayout 之从属性角度理解布局
查看>>
线程 Timer TimerTask 计时器 定时任务 MD
查看>>
[js高手之路]原型式继承与寄生式继承
查看>>
MBR分区操作-增加、扩展、删除
查看>>
php如何互换一个数组的首尾元素 中间不变 首尾互换
查看>>
C#最简单的登录Web服务
查看>>
[Entity Framework]
查看>>