DROP TABLE IF EXISTS Class;
DROP TABLE IF EXISTS Teacher_Phone;
DROP TABLE IF EXISTS Classroom;
DROP TABLE IF EXISTS Teacher;
CREATE TABLE Teacher (
teacher_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL
);
CREATE TABLE Teacher_Phone (
teacher_id INTEGER NOT NULL,
phone_number TEXT NOT NULL,
PRIMARY KEY (teacher_id, phone_number),
FOREIGN KEY (teacher_id) REFERENCES Teacher(teacher_id)
);
CREATE TABLE Classroom (
room_id INTEGER PRIMARY KEY,
building TEXT NOT NULL,
capacity INTEGER NOT NULL
);
CREATE TABLE Class (
class_id INTEGER PRIMARY KEY,
class_name TEXT NOT NULL,
schedule TEXT NOT NULL,
teacher_id INTEGER NOT NULL,
room_id INTEGER UNIQUE, -- UNIQUE enforces the 1-to-1
FOREIGN KEY (teacher_id) REFERENCES Teacher(teacher_id),
FOREIGN KEY (room_id) REFERENCES Classroom(room_id)
);
INSERT INTO Teacher VALUES (1, 'Ahmed', 'Hassan');
INSERT INTO Teacher VALUES (2, 'Sara', 'Khalil');
INSERT INTO Teacher_Phone VALUES (1, '010-1234-5678');
INSERT INTO Teacher_Phone VALUES (1, '011-9999-0000');
INSERT INTO Teacher_Phone VALUES (2, '012-5555-3333');
INSERT INTO Classroom VALUES (101, 'Building A', 30);
INSERT INTO Classroom VALUES (102, 'Building A', 25);
INSERT INTO Classroom VALUES (103, 'Building B', 40);
INSERT INTO Class VALUES (1, 'Algebra I', 'Sun 8:00am', 1, 101);
INSERT INTO Class VALUES (2, 'Algebra II', 'Mon 10:00am', 1, 102);
INSERT INTO Class VALUES (3, 'Biology', 'Tue 9:00am', 2, 103);
SELECT * FROM Teacher;
SELECT * FROM Teacher_Phone;
SELECT * FROM Classroom;
SELECT * FROM Class;
RFJPUCBUQUJMRSBJRiBFWElTVFMgQ2xhc3M7CkRST1AgVEFCTEUgSUYgRVhJU1RTIFRlYWNoZXJfUGhvbmU7CkRST1AgVEFCTEUgSUYgRVhJU1RTIENsYXNzcm9vbTsKRFJPUCBUQUJMRSBJRiBFWElTVFMgVGVhY2hlcjsKCgpDUkVBVEUgVEFCTEUgVGVhY2hlciAoCiAgICB0ZWFjaGVyX2lkICAgSU5URUdFUiAgUFJJTUFSWSBLRVksCiAgICBmaXJzdF9uYW1lICAgVEVYVCAgICAgTk9UIE5VTEwsCiAgICBsYXN0X25hbWUgICAgVEVYVCAgICAgTk9UIE5VTEwKKTsKCkNSRUFURSBUQUJMRSBUZWFjaGVyX1Bob25lICgKICAgIHRlYWNoZXJfaWQgICBJTlRFR0VSICBOT1QgTlVMTCwKICAgIHBob25lX251bWJlciBURVhUICAgICBOT1QgTlVMTCwKICAgIFBSSU1BUlkgS0VZICh0ZWFjaGVyX2lkLCBwaG9uZV9udW1iZXIpLAogICAgRk9SRUlHTiBLRVkgKHRlYWNoZXJfaWQpIFJFRkVSRU5DRVMgVGVhY2hlcih0ZWFjaGVyX2lkKQopOwoKQ1JFQVRFIFRBQkxFIENsYXNzcm9vbSAoCiAgICByb29tX2lkICAgIElOVEVHRVIgIFBSSU1BUlkgS0VZLAogICAgYnVpbGRpbmcgICBURVhUICAgICBOT1QgTlVMTCwKICAgIGNhcGFjaXR5ICAgSU5URUdFUiAgTk9UIE5VTEwKKTsKCkNSRUFURSBUQUJMRSBDbGFzcyAoCiAgICBjbGFzc19pZCAgICBJTlRFR0VSICBQUklNQVJZIEtFWSwKICAgIGNsYXNzX25hbWUgIFRFWFQgICAgIE5PVCBOVUxMLAogICAgc2NoZWR1bGUgICAgVEVYVCAgICAgTk9UIE5VTEwsCiAgICB0ZWFjaGVyX2lkICBJTlRFR0VSICBOT1QgTlVMTCwKICAgIHJvb21faWQgICAgIElOVEVHRVIgIFVOSVFVRSwgICAgICAgICAgLS0gVU5JUVVFIGVuZm9yY2VzIHRoZSAxLXRvLTEKICAgIEZPUkVJR04gS0VZICh0ZWFjaGVyX2lkKSBSRUZFUkVOQ0VTIFRlYWNoZXIodGVhY2hlcl9pZCksCiAgICBGT1JFSUdOIEtFWSAocm9vbV9pZCkgICAgUkVGRVJFTkNFUyBDbGFzc3Jvb20ocm9vbV9pZCkKKTsKCgpJTlNFUlQgSU5UTyBUZWFjaGVyIFZBTFVFUyAoMSwgJ0FobWVkJywgICdIYXNzYW4nKTsKSU5TRVJUIElOVE8gVGVhY2hlciBWQUxVRVMgKDIsICdTYXJhJywgICAnS2hhbGlsJyk7CgpJTlNFUlQgSU5UTyBUZWFjaGVyX1Bob25lIFZBTFVFUyAoMSwgJzAxMC0xMjM0LTU2NzgnKTsKSU5TRVJUIElOVE8gVGVhY2hlcl9QaG9uZSBWQUxVRVMgKDEsICcwMTEtOTk5OS0wMDAwJyk7ICAKSU5TRVJUIElOVE8gVGVhY2hlcl9QaG9uZSBWQUxVRVMgKDIsICcwMTItNTU1NS0zMzMzJyk7CgpJTlNFUlQgSU5UTyBDbGFzc3Jvb20gVkFMVUVTICgxMDEsICdCdWlsZGluZyBBJywgMzApOwpJTlNFUlQgSU5UTyBDbGFzc3Jvb20gVkFMVUVTICgxMDIsICdCdWlsZGluZyBBJywgMjUpOwpJTlNFUlQgSU5UTyBDbGFzc3Jvb20gVkFMVUVTICgxMDMsICdCdWlsZGluZyBCJywgNDApOwoKSU5TRVJUIElOVE8gQ2xhc3MgVkFMVUVTICgxLCAnQWxnZWJyYSBJJywgICdTdW4gODowMGFtJywgIDEsIDEwMSk7CklOU0VSVCBJTlRPIENsYXNzIFZBTFVFUyAoMiwgJ0FsZ2VicmEgSUknLCAnTW9uIDEwOjAwYW0nLCAxLCAxMDIpOwpJTlNFUlQgSU5UTyBDbGFzcyBWQUxVRVMgKDMsICdCaW9sb2d5JywgICAgJ1R1ZSA5OjAwYW0nLCAgMiwgMTAzKTsKClNFTEVDVCAqIEZST00gVGVhY2hlcjsKU0VMRUNUICogRlJPTSBUZWFjaGVyX1Bob25lOwpTRUxFQ1QgKiBGUk9NIENsYXNzcm9vbTsKU0VMRUNUICogRlJPTSBDbGFzczsKCgoK