CREATE DATABASE my_database
GO
USE my_database
-- ALTER DATABASE my_database SET SINGLE_USER WITH ROLLBACK IMMEDIATE
-- USE master
-- DROP DATABASE my_database
-- 1 . Tao bang Department truoc
GO
CREATE TABLE Department (
department_id VARCHAR( 5 ) PRIMARY KEY,
department_name NVARCHAR( 50 ) NOT NULL,
office VARCHAR( 5 ) ,
department_head VARCHAR( 9 )
)
GO
-- Tao bang Instructor sau
CREATE TABLE Instructor (
instructor_id VARCHAR( 9 ) PRIMARY KEY NOT NULL,
instructor_name NVARCHAR( 50 ) NOT NULL,
phone NVARCHAR( 9 ) NOT NULL,
department_id VARCHAR( 5 ) REFERENCES Department( department_id) ,
salary INT CHECK ( salary > 0 )
)
-- Cap nhap lai bang Department de them khoa ngoai cho department_head
GO
ALTER TABLE Department
ADD FOREIGN KEY ( department_head) REFERENCES Instructor( instructor_id)
GO
-- Tao bang Student
CREATE TABLE Student (
student_id VARCHAR( 9 ) PRIMARY KEY,
student_name NVARCHAR( 50 ) NOT NULL,
gender CHAR( 1 ) CHECK ( gender IN ( 'M' , 'F' , 'O' ) ) ,
birthday DATETIME,
student_class VARCHAR( 5 ) ,
department_id VARCHAR( 5 ) REFERENCES Department( department_id)
)
GO
-- Tao bang Course
CREATE TABLE Course (
course_id VARCHAR( 9 ) PRIMARY KEY,
course_name NVARCHAR( 50 ) NOT NULL UNIQUE,
credit INT CHECK ( credit > 0 ) ,
department_id VARCHAR( 5 ) REFERENCES Department( department_id)
)
GO
-- Tao bang Section
CREATE TABLE Section (
section_id INT PRIMARY KEY NOT NULL,
course_id VARCHAR( 9 ) NOT NULL REFERENCES Course( course_id) ,
semester VARCHAR( 9 ) NOT NULL,
school_year INT NOT NULL,
capacity INT CHECK ( capacity > 0 ) ,
CONSTRAINT UQ_Section_Course_Semester_Year UNIQUE ( course_id, semester, school_year)
)
GO
-- Tao bang Teaching
CREATE TABLE Teaching (
section_id INT NOT NULL REFERENCES Section( section_id) ,
instructor_id VARCHAR( 9 ) NOT NULL REFERENCES Instructor( instructor_id) ,
teaching_role VARCHAR( 9 ) CHECK ( teaching_role IN ( 'Lecturer' , 'TA' ) ) ,
PRIMARY KEY ( section_id, instructor_id)
)
GO
-- Tao bang GradeReport
CREATE TABLE GradeReport (
section_id INT NOT NULL REFERENCES Section( section_id) ,
student_id VARCHAR( 9 ) NOT NULL REFERENCES Student( student_id) ,
grade_100 INT CHECK ( grade_100 >= 0 ) ,
grade_ABC CHAR( 1 ) CHECK ( grade_ABC IN ( 'A' , 'B' , 'C' , 'D' , 'E' , 'F' ) ) ,
PRIMARY KEY ( section_id, student_id)
)
GO
-- Tao bang Prerequisite
CREATE TABLE Prerequisite (
course_id VARCHAR( 9 ) NOT NULL REFERENCES Course( course_id) ,
prerequisite_id VARCHAR( 9 ) NOT NULL REFERENCES Course( course_id) ,
PRIMARY KEY ( course_id, prerequisite_id)
)
GO
INSERT INTO Department( department_id, department_name, office, department_head)
VALUES
( 'AI' , 'Artificial Intelligence' , 'I86' , NULL) ,
( 'CS' , 'Computer Science' , 'I81' , NULL) ,
( 'IS' , 'Information System' , 'I84' , NULL) ,
( 'NW' , 'Network' , 'I87' , NULL) ,
( 'SE' , 'Software Engineering' , 'I82' , NULL) ;
GO
INSERT INTO Instructor ( instructor_id, instructor_name, phone, department_id, salary)
VALUES
( 'I001' , 'Dang Huynh Bao Khanh' , '080913213' , 'CS' , 1000 ) ,
( 'I002' , 'Alex Grant' , '082412613' , 'CS' , 2000 ) ,
( 'I003' , 'Tran Hoang Lan' , '080921234' , 'SE' , 1500 ) ,
( 'I004' , 'Nguyen Ngoc Khanh' , '090245613' , 'IS' , 1500 ) ,
( 'I005' , 'James Cobb' , '092193213' , 'SE' , 2000 ) ,
( 'I006' , 'Le Khanh' , '090799131' , 'IS' , 2200 ) ,
( 'I007' , 'Vu Ngoc Bao' , '090511342' , 'SE' , 2100 ) ,
( 'I008' , 'Tran Hong An' , '099912353' , 'NW' , 1900 ) ,
( 'I009' , 'Nguyen Hai Lam' , '080911234' , 'AI' , 1500 ) ,
( 'I010' , 'Dang Hoang Phong' , '090233451' , 'AI' , 2300 ) ;
GO
-- 3 . Cap nhap ( Update) lai department_head cho Department sau khi Instructor da co du lieu
UPDATE Department SET department_head = 'I009' WHERE department_id = 'AI' ;
UPDATE Department SET department_head = 'I001' WHERE department_id = 'CS' ;
UPDATE Department SET department_head = 'I004' WHERE department_id = 'IS' ;
UPDATE Department SET department_head = 'I003' WHERE department_id = 'SE' ;
GO
Q1JFQVRFIERBVEFCQVNFIG15X2RhdGFiYXNlCkdPIApVU0UgbXlfZGF0YWJhc2UKLS0gQUxURVIgREFUQUJBU0UgbXlfZGF0YWJhc2UgU0VUIFNJTkdMRV9VU0VSIFdJVEggUk9MTEJBQ0sgSU1NRURJQVRFCi0tIFVTRSBtYXN0ZXIKLS0gRFJPUCBEQVRBQkFTRSBteV9kYXRhYmFzZQotLSAxLiBUYW8gYmFuZyBEZXBhcnRtZW50IHRydW9jCkdPCkNSRUFURSBUQUJMRSBEZXBhcnRtZW50ICgKICAgIGRlcGFydG1lbnRfaWQgVkFSQ0hBUig1KSBQUklNQVJZIEtFWSwKICAgIGRlcGFydG1lbnRfbmFtZSBOVkFSQ0hBUig1MCkgTk9UIE5VTEwsCiAgICBvZmZpY2UgVkFSQ0hBUig1KSwKICAgIGRlcGFydG1lbnRfaGVhZCBWQVJDSEFSKDkpICAgCikKCkdPCi0tIFRhbyBiYW5nIEluc3RydWN0b3Igc2F1CkNSRUFURSBUQUJMRSBJbnN0cnVjdG9yICgKICAgIGluc3RydWN0b3JfaWQgVkFSQ0hBUig5KSBQUklNQVJZIEtFWSBOT1QgTlVMTCwKICAgIGluc3RydWN0b3JfbmFtZSBOVkFSQ0hBUig1MCkgTk9UIE5VTEwsCiAgICBwaG9uZSBOVkFSQ0hBUig5KSBOT1QgTlVMTCwKICAgIGRlcGFydG1lbnRfaWQgVkFSQ0hBUig1KSBSRUZFUkVOQ0VTIERlcGFydG1lbnQoZGVwYXJ0bWVudF9pZCksCiAgICBzYWxhcnkgSU5UIENIRUNLIChzYWxhcnkgPiAwKQopCi0tIENhcCBuaGFwIGxhaSBiYW5nIERlcGFydG1lbnQgZGUgdGhlbSBraG9hIG5nb2FpIGNobyBkZXBhcnRtZW50X2hlYWQKR08KQUxURVIgVEFCTEUgRGVwYXJ0bWVudApBREQgRk9SRUlHTiBLRVkgKGRlcGFydG1lbnRfaGVhZCkgUkVGRVJFTkNFUyBJbnN0cnVjdG9yKGluc3RydWN0b3JfaWQpCgpHTwotLSBUYW8gYmFuZyBTdHVkZW50CkNSRUFURSBUQUJMRSBTdHVkZW50ICgKICAgIHN0dWRlbnRfaWQgVkFSQ0hBUig5KSBQUklNQVJZIEtFWSwKICAgIHN0dWRlbnRfbmFtZSBOVkFSQ0hBUig1MCkgTk9UIE5VTEwsCiAgICBnZW5kZXIgQ0hBUigxKSBDSEVDSyAoZ2VuZGVyIElOICgnTScsICdGJywgJ08nKSksCiAgICBiaXJ0aGRheSBEQVRFVElNRSwKICAgIHN0dWRlbnRfY2xhc3MgVkFSQ0hBUig1KSwgCiAgICBkZXBhcnRtZW50X2lkIFZBUkNIQVIoNSkgUkVGRVJFTkNFUyBEZXBhcnRtZW50KGRlcGFydG1lbnRfaWQpCikKR08KLS0gVGFvIGJhbmcgQ291cnNlCkNSRUFURSBUQUJMRSBDb3Vyc2UgKAogICAgY291cnNlX2lkIFZBUkNIQVIoOSkgUFJJTUFSWSBLRVksCiAgICBjb3Vyc2VfbmFtZSBOVkFSQ0hBUig1MCkgTk9UIE5VTEwgVU5JUVVFLAogICAgY3JlZGl0IElOVCBDSEVDSyAoY3JlZGl0ID4gMCksCiAgICBkZXBhcnRtZW50X2lkIFZBUkNIQVIoNSkgUkVGRVJFTkNFUyBEZXBhcnRtZW50KGRlcGFydG1lbnRfaWQpCikKCkdPCi0tIFRhbyBiYW5nIFNlY3Rpb24KQ1JFQVRFIFRBQkxFIFNlY3Rpb24gKAogICAgc2VjdGlvbl9pZCBJTlQgUFJJTUFSWSBLRVkgTk9UIE5VTEwsCiAgICBjb3Vyc2VfaWQgVkFSQ0hBUig5KSBOT1QgTlVMTCBSRUZFUkVOQ0VTIENvdXJzZShjb3Vyc2VfaWQpLAogICAgc2VtZXN0ZXIgVkFSQ0hBUig5KSBOT1QgTlVMTCwKICAgIHNjaG9vbF95ZWFyIElOVCBOT1QgTlVMTCwKICAgIGNhcGFjaXR5IElOVCBDSEVDSyAoY2FwYWNpdHkgPiAwKSwKICAgIENPTlNUUkFJTlQgVVFfU2VjdGlvbl9Db3Vyc2VfU2VtZXN0ZXJfWWVhciBVTklRVUUgKGNvdXJzZV9pZCwgc2VtZXN0ZXIsIHNjaG9vbF95ZWFyKQopCgpHTwotLSBUYW8gYmFuZyBUZWFjaGluZyAKQ1JFQVRFIFRBQkxFIFRlYWNoaW5nICgKICAgIHNlY3Rpb25faWQgSU5UIE5PVCBOVUxMIFJFRkVSRU5DRVMgU2VjdGlvbihzZWN0aW9uX2lkKSwKICAgIGluc3RydWN0b3JfaWQgVkFSQ0hBUig5KSBOT1QgTlVMTCBSRUZFUkVOQ0VTIEluc3RydWN0b3IoaW5zdHJ1Y3Rvcl9pZCksCiAgICB0ZWFjaGluZ19yb2xlIFZBUkNIQVIoOSkgQ0hFQ0sgKHRlYWNoaW5nX3JvbGUgSU4gKCdMZWN0dXJlcicsICdUQScpKSwKICAgIFBSSU1BUlkgS0VZIChzZWN0aW9uX2lkLCBpbnN0cnVjdG9yX2lkKQopCkdPCi0tIFRhbyBiYW5nIEdyYWRlUmVwb3J0CkNSRUFURSBUQUJMRSBHcmFkZVJlcG9ydCAoCiAgICBzZWN0aW9uX2lkIElOVCBOT1QgTlVMTCBSRUZFUkVOQ0VTIFNlY3Rpb24oc2VjdGlvbl9pZCksCiAgICBzdHVkZW50X2lkIFZBUkNIQVIoOSkgTk9UIE5VTEwgUkVGRVJFTkNFUyBTdHVkZW50KHN0dWRlbnRfaWQpLAogICAgZ3JhZGVfMTAwIElOVCBDSEVDSyAoZ3JhZGVfMTAwID49IDApLAogICAgZ3JhZGVfQUJDIENIQVIoMSkgQ0hFQ0sgKGdyYWRlX0FCQyBJTiAoJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJykpLAogICAgUFJJTUFSWSBLRVkgKHNlY3Rpb25faWQsIHN0dWRlbnRfaWQpCikKR08KLS0gVGFvIGJhbmcgUHJlcmVxdWlzaXRlCkNSRUFURSBUQUJMRSBQcmVyZXF1aXNpdGUgKAogICAgY291cnNlX2lkIFZBUkNIQVIoOSkgTk9UIE5VTEwgUkVGRVJFTkNFUyBDb3Vyc2UoY291cnNlX2lkKSwKICAgIHByZXJlcXVpc2l0ZV9pZCBWQVJDSEFSKDkpIE5PVCBOVUxMIFJFRkVSRU5DRVMgQ291cnNlKGNvdXJzZV9pZCksCiAgICBQUklNQVJZIEtFWSAoY291cnNlX2lkLCBwcmVyZXF1aXNpdGVfaWQpCikKCkdPCgpJTlNFUlQgSU5UTyBEZXBhcnRtZW50KGRlcGFydG1lbnRfaWQsIGRlcGFydG1lbnRfbmFtZSwgb2ZmaWNlLCBkZXBhcnRtZW50X2hlYWQpClZBTFVFUwooJ0FJJywgJ0FydGlmaWNpYWwgSW50ZWxsaWdlbmNlJywgJ0k4NicsIE5VTEwpLAooJ0NTJywgJ0NvbXB1dGVyIFNjaWVuY2UnLCAnSTgxJywgTlVMTCksCignSVMnLCAnSW5mb3JtYXRpb24gU3lzdGVtJywgJ0k4NCcsIE5VTEwpLAooJ05XJywgJ05ldHdvcmsnLCAnSTg3JywgTlVMTCksCignU0UnLCAnU29mdHdhcmUgRW5naW5lZXJpbmcnLCAnSTgyJywgTlVMTCk7CkdPCgpJTlNFUlQgSU5UTyBJbnN0cnVjdG9yIChpbnN0cnVjdG9yX2lkLCBpbnN0cnVjdG9yX25hbWUsIHBob25lLCBkZXBhcnRtZW50X2lkLCBzYWxhcnkpClZBTFVFUyAKKCdJMDAxJywgJ0RhbmcgSHV5bmggQmFvIEtoYW5oJywgJzA4MDkxMzIxMycsICdDUycsIDEwMDApLAooJ0kwMDInLCAnQWxleCBHcmFudCcsICcwODI0MTI2MTMnLCAnQ1MnLCAyMDAwKSwKKCdJMDAzJywgJ1RyYW4gSG9hbmcgTGFuJywgJzA4MDkyMTIzNCcsICdTRScsIDE1MDApLAooJ0kwMDQnLCAnTmd1eWVuIE5nb2MgS2hhbmgnLCAnMDkwMjQ1NjEzJywgJ0lTJywgMTUwMCksCignSTAwNScsICdKYW1lcyBDb2JiJywgJzA5MjE5MzIxMycsICdTRScsIDIwMDApLAooJ0kwMDYnLCAnTGUgS2hhbmgnLCAnMDkwNzk5MTMxJywgJ0lTJywgMjIwMCksCignSTAwNycsICdWdSBOZ29jIEJhbycsICcwOTA1MTEzNDInLCAnU0UnLCAyMTAwKSwKKCdJMDA4JywgJ1RyYW4gSG9uZyBBbicsICcwOTk5MTIzNTMnLCAnTlcnLCAxOTAwKSwKKCdJMDA5JywgJ05ndXllbiBIYWkgTGFtJywgJzA4MDkxMTIzNCcsICdBSScsIDE1MDApLAooJ0kwMTAnLCAnRGFuZyBIb2FuZyBQaG9uZycsICcwOTAyMzM0NTEnLCAnQUknLCAyMzAwKTsKR08KCi0tMy4gQ2FwIG5oYXAgKFVwZGF0ZSkgbGFpIGRlcGFydG1lbnRfaGVhZCBjaG8gRGVwYXJ0bWVudCBzYXUga2hpIEluc3RydWN0b3IgZGEgY28gZHUgbGlldQpVUERBVEUgRGVwYXJ0bWVudCBTRVQgZGVwYXJ0bWVudF9oZWFkID0gJ0kwMDknIFdIRVJFIGRlcGFydG1lbnRfaWQgPSAnQUknOwpVUERBVEUgRGVwYXJ0bWVudCBTRVQgZGVwYXJ0bWVudF9oZWFkID0gJ0kwMDEnIFdIRVJFIGRlcGFydG1lbnRfaWQgPSAnQ1MnOwpVUERBVEUgRGVwYXJ0bWVudCBTRVQgZGVwYXJ0bWVudF9oZWFkID0gJ0kwMDQnIFdIRVJFIGRlcGFydG1lbnRfaWQgPSAnSVMnOwpVUERBVEUgRGVwYXJ0bWVudCBTRVQgZGVwYXJ0bWVudF9oZWFkID0gJ0kwMDMnIFdIRVJFIGRlcGFydG1lbnRfaWQgPSAnU0UnOwoKR08=