Implement database, ER model Solution
1. Creates database named HW1-YourInitials
CREATE DATABASE HW1-YourInitials
IF EXISTS (SELECT [name] FROM sys.databases WHERE [name] = HW1-YourInitials)
DROP database abc
GO
2. Create tables without any unique, primary key, foreign key, or check constraints
a. Only include NULL and Default constraints
{'/*****************Student Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Student] Script Date: 19/02/26 10:35:53 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Student](
[G-Number] [char](9) NULL,
[Last Name] [varchar](20) NULL,
[First Name] [varchar](20) NULL,
[Street Num] [varchar](6) NULL,
[Street Name] [varchar](50) NULL,
[City] [varchar](20) NULL,
[State] [char](3) NULL,
[Zip] [char](5) NULL,
[SSN] [char](9) NULL,
[Major code] [varchar](4) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/**********'} {'Registration Table script***************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Registration] Script Date: 19/02/26 10:40:24 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Registration](
[Student G-Number] [char](9) NULL,
[CRN] [char](5) NULL,
[regDateTime] [datetime] NULL,
[Grade] [char](2) NULL,
[Status] [char](1) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/*****************'} {'Registration Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Registration] Script Date: 19/02/26 10:45:59 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Registration](
[Student G-Number] [char](9) NULL,
[CRN] [char](5) NULL,
[regDateTime] [datetime] NULL,
[Grade] [char](2) NULL,
[Status] [char](1) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/*****************'} {'Course Offering Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Course Offering] Script Date: 19/02/26 10:51:50 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Course Offering](
[CRN] [char](5) NULL,
[Semester] [char](2) NULL,
[SemYear] [char](4) NULL,
[Section] [varchar](3) NULL,
[Max Students] [int] NULL,
[Faculty G-Number] [char](9) NULL,
[Subject Code] [char](4) NULL,
[Course Number] [char](3) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/*****************'} {'Course Timings Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Course Timings] Script Date: 19/02/26 10:56:46 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Course Timings](
[Schedule Code] [char](10) NULL,
[Day of Week 1] [char](1) NULL,
[Begin Time 1] [datetime] NULL,
[End Time 1] [datetime] NULL,
[Day of Week 2] [char](1) NULL,
[Begin Time 2] [datetime] NULL,
[End Time 2] [datetime] NULL,
[Room Number] [char](4) NULL,
[Building Code] [char](3) NULL,
[CRN] [char](5) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/*****************'} {'Classrooms Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Classrooms] Script Date: 19/02/26 11:00:23 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Classrooms](
[Room Number] [char](4) NULL,
[Building Code] [char](3) NULL,
[Seating Capacity] [int] NULL,
[Computer] [bit] NULL,
[Projector] [bit] NULL,
[Laptop Hookup] [bit] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/*****************'} {'Buildings Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Buildings] Script Date: 19/02/26 11:04:51 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Buildings](
[Building Code] [char](3) NULL,
[Building Name] [varchar](30) NULL,
[Street Number] [varchar](4) NULL,
[Street Name] [varchar](50) NULL,
[Mail Stop Num] [varchar](3) NULL,
[City] [varchar](20) NULL,
[State] [char](2) NULL,
[Zip] [char](5) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/*****************'} {'Department Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Department] Script Date: 19/02/26 11:06:28 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Department](
[DEPT CODE] [char](4) NULL,
[Dept Name] [varchar](30) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/*****************'} {'Faculty Appointment'} {'Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Faculty Appointment] Script Date: 19/02/26 11:09:14 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Faculty Appointment](
[DEPT CODE] [char](4) NULL,
[Faculty G-Number] [char](9) NULL,
[Date Since] [datetime] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
{'/*****************'} {'Faculty Table script****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Faculty] Script Date: 19/02/26 11:11:49 AM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Faculty](
[G-Number] [char](9) NULL,
[Last Name] [varchar](20) NULL,
[First Name] [varchar](20) NULL,
[Position] [varchar](20) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
3. Create all the primary keys shown in ER
{'/*********************Primary key on Student table**********************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Student] Script Date: 19/02/26 12:28:28 PM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Student](
[G-Number] [char](9) NOT NULL,
[Last Name] [varchar](20) NOT NULL,
[First Name] [varchar](20) NOT NULL,
[Street Num] [varchar](6) NULL,
[Street Name] [varchar](50) NULL,
[City] [varchar](20) NULL,
[State] [char](3) NULL,
[Zip] [char](5) NULL,
[SSN] [char](9) NOT NULL,
[Major code] [varchar](4) NOT NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[G-Number] 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
{'/*********************Primary key on Registration table**********************/ '}
USE [HW1-YourInitials]
GO
CREATE TABLE Registration(
[Student G-Number] [char](9) NOT NULL,
[CRN] [char](5) NOT NULL,
[regDateTime] [datetime] NOT NULL,
[Grade] [char](2) NULL,
[Status] [char](1) NOT NULL,
CONSTRAINT PK_compRegistration PRIMARY KEY CLUSTERED ([CRN], [Student G-Number]))
{'/*********************'}{'Primary key on Course Offering table'} {'**********************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Course Offering] Script Date: 19/02/26 1:07:44 PM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Course Offering](
[CRN] [char](5) NOT NULL,
[Semester] [char](2) NOT NULL,
[SemYear] [char](4) NOT NULL,
[Section] [varchar](3) NOT NULL,
[Max Students] [int] NOT NULL,
[Faculty G-Number] [char](9) NULL,
[Subject Code] [char](4) NOT NULL,
[Course Number] [char](3) NOT NULL,
CONSTRAINT [PK_Course Offering] PRIMARY KEY CLUSTERED
(
[CRN] 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
{'/*****************'} {'Primary key on Faculty Appointment Table ****************************/ '}
CREATE TABLE Faculty Appointment
(
[DEPT CODE] [char](4) NOT NULL,
[Faculty G-Number] [char](9) NOT NULL,
[Date Since] [datetime] NULL
CONSTRAINT PK_CompositePKTable PRIMARY KEY CLUSTERED ([DEPT CODE], [Faculty G-Number])
-- CONSTRAINT PK_CompositePKTable PRIMARY KEY NONCLUSTERED (column1, column2)
)
{'/*****************'} {'Primary key on Course Timings Table ****************************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Course Timings] Script Date: 19/02/26 1:35:02 PM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Course Timings](
[Schedule Code] [char](10) NOT NULL,
[Day of Week 1] [char](1) NOT NULL,
[Begin Time 1] [datetime] NOT NULL,
[End Time 1] [datetime] NOT NULL,
[Day of Week 2] [char](1) NULL,
[Begin Time 2] [datetime] NULL,
[End Time 2] [datetime] NULL,
[Room Number] [char](4) NOT NULL,
[Building Code] [char](3) NOT NULL,
[CRN] [char](5) NOT NULL,
CONSTRAINT [PK_Course Timings] PRIMARY KEY CLUSTERED
(
[Schedule Code] 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
{'/************Primary key on Faculty****************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Faculty] Script Date: 19/02/26 2:29:14 PM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Faculty](
[G-Number] [char](9) NOT NULL,
[Last Name] [varchar](20) NOT NULL,
[First Name] [varchar](20) NOT NULL,
[Position] [varchar](20) NULL,
CONSTRAINT [PK_Faculty
] PRIMARY KEY CLUSTERED
(
[G-Number] 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
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Buildings] Script Date: 19/02/26 2:37:39 PM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Buildings](
[Building Code] [char](3) NOT NULL,
[Building Name] [varchar](30) NOT NULL,
[Street Number] [varchar](4) NULL,
[Street Name] [varchar](50) NULL,
[Mail Stop Num] [varchar](3) NULL,
[City] [varchar](20) NULL,
[State] [char](2) NULL,
[Zip] [char](5) NULL,
CONSTRAINT [PK_Buildings] PRIMARY KEY CLUSTERED
(
[Building Code] 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
4. Create all unique constraints (if any)
{'/************Unique key on student table having SSN unique****************/'}
USE [HW1-YourInitials]
GO
{'/****** Object: Table [dbo].[Student] Script Date: 19/02/26 12:28:28 PM ******/'}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Student](
[G-Number] [char](9) NOT NULL,
[Last Name] [varchar](20) NULL,
[First Name] [varchar](20) NULL,
[Street Num] [varchar](6) NULL,
[Street Name] [varchar](50) NULL,
[City] [varchar](20) NULL,
[State] [char](3) NULL,
[Zip] [char](5) NULL,
[SSN] [char](9) NULL UNIQUE,
[Major code] [varchar](4) NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[G-Number] 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
5. Create foreign keys shown in ER
CREATE TABLE Registration(
[Student G-Number] [char](9) NOT NULL References Student([G-Number]),
[CRN] [char](5) NOT NULL References Course Offering([CRN]),
[regDateTime] [datetime] NOT NULL,
[Grade] [char](2) NULL,
[Status] [char](1) NOT NULL,
CONSTRAINT PK_compRegistration PRIMARY KEY CLUSTERED ([CRN], [Student G-Number]))
CREATE TABLE FacultyAppointment
(
[DEPT CODE] [char](4) NOT NULL REFERENCES Department([DEPT CODE],
[Faculty G-Number] [char](9) NOT NULL REFERENCES Faculty([G-Number]) ,
[Date Since] [datetime] NULL
CONSTRAINT PK_CompositePKTable PRIMARY KEY CLUSTERED ([DEPT CODE], [Faculty G-Number])
6. Create all the check constraints needed
CREATE TABLE [dbo].[CourseOffering1](
[CRN] [char](5) NOT NULL,
[Semester] [char](2) NOT NULL,
[SemYear] [char](4) NOT NULL,
[Section] [varchar](3) NOT NULL,
[Max Students] [int] NOT NULL,
[Faculty G-Number] [char](9) NULL,
[Subject Code] [char](4) NOT NULL,
[Course Number] [char](3) NOT NULL,
CONSTRAINT [PK_Course Offering] PRIMARY KEY CLUSTERED ([CRN]),
CONSTRAINT [check_semyear] CHECK (semyear>=1990 and semyear<=2999))