All pastes #935714 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-03-09 21:22 UTC
rendered paste body
if object_id('EmployeeProject', 'U') is not null 
drop table EmployeeProject 
go 
if object_id('Employee', 'U') is not null 
drop table Employee 
go 
if object_id('Office', 'U') is not null 
drop table Office 
go 
if object_id('Project', 'U') is not null 
drop table Project 
go 
 
 
create table Project( 
	projectId nchar(5) not null 
		constraint CK_project_projectid 
		check(projectId like '[A-Z][A-Z][0-9][0-9][0-9]') 
		primary key, 
	projectName nvarchar(20) not null unique, 
	budget money null
) 
go 
 
create table Office ( 
	officeNr smallint primary key, 
	[type] nvarchar(20) not null 
		constraint ck_office_type  
		check([type] in ('Internal', 'Window', 'Corner'))
) 
go  

CREATE TABLE Employee (  
     empId nchar(4) not null  
          constraint CK_employee_empId  
          check(empId like '[0-9][0-9][0-9][0-9]')  
          primary key,  
     empGrade nvarchar(15) not null  
          constraint CK_employee_empGrade  
          check(empGrade in ('Associate', 'Manager', 'Executive')),  
     officeNr smallint null
		  constraint FK_officeNr
	      foreign key references Office(officeNr)
		  on delete set null,
     empName nvarchar(30) not null,  
     street nvarchar(30) null,  
     city nvarchar(30) null,  
     zipCode nchar(5) null  
)  
go  

-- Handle jointly nullable city/state/zipCode 
ALTER TABLE Employee  
add constraint CK_Employee_street_city_zipCode  
check((street is null and city is null and zipCode is null) or (street is not null and city is not null and zipCode is not null))  


create table EmployeeProject( 
	empId nchar(4) not null 
		constraint ck_employeeproject_empid  
		check(empId like '[0-9][0-9][0-9][0-9]') 
		constraint fk_empID  
		foreign key references Employee(empId), 
	projectId nchar(5) not null  
		constraint ck_employee_projectid 
		check (projectID like '[A-Z][A-Z][0-9][0-9][0-9]')  
		constraint fk_projectId  
		foreign key references Project(projectId)
		on delete cascade, 
	primary key(empId, projectId)
) 
go