Course Registration Transaction Example
Tables
CREATE TABLE [dbo].[Address](
[AddressID] [int] IDENTITY(1,1) NOT NULL,
[AddressText] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Address] PRIMARY KEY CLUSTERED
(
[AddressID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[ContactInformation](
[PersonContactInformationID] [int] IDENTITY(1,1) NOT NULL,
[PersonCurrentAddressID] [int] NULL,
[PersonHomeAddressID] [int] NULL,
[EmailIDText] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[MobileTelephoneNumberText] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[TelephoneNumberText] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_ContactInformation] PRIMARY KEY CLUSTERED
(
[PersonContactInformationID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[ContactInformation] WITH CHECK ADD CONSTRAINT [FK_ContactInformation_Address] FOREIGN KEY([PersonCurrentAddressID])
REFERENCES [dbo].[Address] ([AddressID])
GO
ALTER TABLE [dbo].[ContactInformation] CHECK CONSTRAINT [FK_ContactInformation_Address]
GO
ALTER TABLE [dbo].[ContactInformation] WITH CHECK ADD CONSTRAINT [FK_ContactInformation_Address1] FOREIGN KEY([PersonHomeAddressID])
REFERENCES [dbo].[Address] ([AddressID])
GO
ALTER TABLE [dbo].[ContactInformation] CHECK CONSTRAINT [FK_ContactInformation_Address1]
CREATE TABLE [dbo].[Course](
[CourseID] [int] IDENTITY(1,1) NOT NULL,
[CoursePrefixText] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[CourseNumberText] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CourseShortDescriptionText] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CourseLongDescriptionText] [varchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED
(
[CourseID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[CourseOffering](
[CourseOfferingID] [int] IDENTITY(1,1) NOT NULL,
[InstructorID] [int] NULL,
[CourseID] [int] NULL,
[CourseOfferingSectionText] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CourseOfferingSemesterID] [int] NULL,
[CourseOfferingDaysOFWeekText] [varchar](6) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CourseOfferingStartTimeText] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CourseOfferingEndTimeText] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CourseLimit] [int] NULL,
CONSTRAINT [PK_CourseOffering] PRIMARY KEY CLUSTERED
(
[CourseOfferingID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[CourseOffering] WITH CHECK ADD CONSTRAINT [FK_CourseOffering_Course] FOREIGN KEY([CourseID])
REFERENCES [dbo].[Course] ([CourseID])
GO
ALTER TABLE [dbo].[CourseOffering] CHECK CONSTRAINT [FK_CourseOffering_Course]
GO
ALTER TABLE [dbo].[CourseOffering] WITH CHECK ADD CONSTRAINT [FK_CourseOffering_CourseOffering] FOREIGN KEY([InstructorID])
REFERENCES [dbo].[Faculty] ([FacultyID])
GO
ALTER TABLE [dbo].[CourseOffering] CHECK CONSTRAINT [FK_CourseOffering_CourseOffering]
GO
ALTER TABLE [dbo].[CourseOffering] WITH CHECK ADD CONSTRAINT [FK_CourseOffering_Semester] FOREIGN KEY([CourseOfferingSemesterID])
REFERENCES [dbo].[Semester] ([SemesterID])
GO
ALTER TABLE [dbo].[CourseOffering] CHECK CONSTRAINT [FK_CourseOffering_Semester]
CREATE TABLE [dbo].[Faculty](
[FacultyID] [int] IDENTITY(1,1) NOT NULL,
[FacultyNameID] [int] NOT NULL,
[FacultyContactInformationID] [int] NOT NULL,
[FacultyType] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Faculty] PRIMARY KEY CLUSTERED
(
[FacultyID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Faculty] WITH CHECK ADD CONSTRAINT [FK_Faculty_ContactInformation] FOREIGN KEY([FacultyContactInformationID])
REFERENCES [dbo].[ContactInformation] ([PersonContactInformationID])
GO
ALTER TABLE [dbo].[Faculty] CHECK CONSTRAINT [FK_Faculty_ContactInformation]
GO
ALTER TABLE [dbo].[Faculty] WITH CHECK ADD CONSTRAINT [FK_Faculty_PersonName] FOREIGN KEY([FacultyNameID])
REFERENCES [dbo].[PersonName] ([NameID])
GO
ALTER TABLE [dbo].[Faculty] CHECK CONSTRAINT [FK_Faculty_PersonName]
CREATE TABLE [dbo].[PersonName](
[NameID] [int] IDENTITY(1,1) NOT NULL,
[PersonNamePrefixText] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PersonGivenNameText] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PersonMiddleNameText] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PersonSurNameText] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PersonNameSuffixText] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_PersonName] PRIMARY KEY CLUSTERED
(
[NameID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Semester](
[SemesterID] [int] IDENTITY(1,1) NOT NULL,
[SemesterStartDate] [datetime] NULL,
[SemesterEndDate] [datetime] NULL,
[SemesterDesignationText] [varchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Semester] PRIMARY KEY CLUSTERED
(
[SemesterID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Student](
[StudentID] [int] IDENTITY(1,1) NOT NULL,
[StudentNameID] [int] NULL,
[StudentContactInformationID] [int] NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[StudentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Student] WITH CHECK ADD CONSTRAINT [FK_Student_ContactInformation] FOREIGN KEY([StudentContactInformationID])
REFERENCES [dbo].[ContactInformation] ([PersonContactInformationID])
GO
ALTER TABLE [dbo].[Student] CHECK CONSTRAINT [FK_Student_ContactInformation]
GO
ALTER TABLE [dbo].[Student] WITH CHECK ADD CONSTRAINT [FK_Student_PersonName] FOREIGN KEY([StudentNameID])
REFERENCES [dbo].[PersonName] ([NameID])
GO
ALTER TABLE [dbo].[Student] CHECK CONSTRAINT [FK_Student_PersonName]
CREATE TABLE [dbo].[StudentCourseRegistration](
[StudentRegistrationID] [int] IDENTITY(1,1) NOT NULL,
[StudentID] [int] NOT NULL,
[CourseOfferingID] [int] NOT NULL,
[RegistrationDate] [datetime] NULL,
[WithdrawnDate] [datetime] NULL,
CONSTRAINT [PK_StudentCourseRegistration] PRIMARY KEY CLUSTERED
(
[StudentRegistrationID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[StudentCourseRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentCourseRegistration_CourseOffering] FOREIGN KEY([CourseOfferingID])
REFERENCES [dbo].[CourseOffering] ([CourseOfferingID])
GO
ALTER TABLE [dbo].[StudentCourseRegistration] CHECK CONSTRAINT [FK_StudentCourseRegistration_CourseOffering]
GO
ALTER TABLE [dbo].[StudentCourseRegistration] WITH CHECK ADD CONSTRAINT [FK_StudentCourseRegistration_Student] FOREIGN KEY([StudentID])
REFERENCES [dbo].[Student] ([StudentID])
GO
ALTER TABLE [dbo].[StudentCourseRegistration] CHECK CONSTRAINT [FK_StudentCourseRegistration_Student]
Stored Procedures
CREATE PROCEDURE RegisterStudent (
@StudentID int,
@CourseOfferingID int
)
AS
DECLARE @EnrollmentCount INT
DECLARE @EnrollmentLimit INT
BEGIN
BEGIN TRANSACTION
SELECT @EnrollmentCount = COUNT(*) FROM StudentCourseRegistration
WHERE CourseOfferingID = @CourseOfferingID
SELECT @EnrollmentLimit = CourseLimit FROM CourseOffering
WHERE CourseOfferingID = @CourseOfferingID
IF @EnrollmentLimit > @EnrollmentCount
BEGIN
INSERT INTO StudentCourseRegistration
(StudentID, CourseOfferingID)
VALUES
(@StudentID, @CourseOfferingID)
END
COMMIT
END
Comments (0)
You don't have permission to comment on this page.