Database Development Guidelines

Example of Script:

drop table prerequisite;
drop table enrolment;
drop table student;
drop table subject;
drop table lecturer;
CREATE TABLE "lecturer" (
 "lectno" int4 PRIMARY KEY,
 "surname" varchar(20),
 "firstname" varchar(20),
 "location" varchar(10),
 "supervisor" int4 DEFAULT null
   REFERENCES lecturer ( lectno )
   ON DELETE SET NULL
   ON UPDATE CASCADE
   );

REVOKE ALL on "lecturer" from PUBLIC;
GRANT SELECT, REFERENCES on "lecturer" to PUBLIC;
GRANT ALL on "lecturer" to "retallic";

CREATE TABLE "subject" (
 "subcode" character(7) PRIMARY KEY,
 "subname" varchar(30),
 "lecturer" int4
   REFERENCES lecturer(lectno)
   ON DELETE SET NULL
   ON UPDATE CASCADE,
 "fee" numeric(9,2));

REVOKE ALL on "subject" from PUBLIC;
GRANT SELECT, REFERENCES on "subject" to PUBLIC;
GRANT ALL on "subject" to "retallic";

CREATE TABLE "prerequisite" (
 "subcode" character(7)
   REFERENCES subject(subcode)
      ON DELETE CASCADE
      ON UPDATE CASCADE,
 "prereq" character(7)
   REFERENCES subject(subcode)
      ON DELETE CASCADE
      ON UPDATE CASCADE,
   PRIMARY KEY (subcode, prereq));

REVOKE ALL on "prerequisite" from PUBLIC;
GRANT SELECT, REFERENCES on "prerequisite" to PUBLIC;
GRANT ALL on "prerequisite" to "retallic";

CREATE TABLE "student" (
 "id" int4 PRIMARY KEY,
 "surname" varchar(30) NOT NULL,
 "firstname" varchar(20),
 "email" varchar(40),
 "course" varchar(30),
 "enrolled" date DEFAULT 'now()',
 "paid" numeric(9,2) DEFAULT 0.00);

REVOKE ALL on "student" from PUBLIC;
GRANT SELECT, REFERENCES on "student" to PUBLIC;
GRANT ALL on "student" to "retallic";

CREATE TABLE "enrolment" (
 "studid" int4 REFERENCES student ( id )
   ON DELETE CASCADE
   ON UPDATE CASCADE,
 "subcode" character(7) REFERENCES subject ( subcode)
   ON DELETE RESTRICT
   ON UPDATE CASCADE, 
 "year" int4,
 "semester" int4 CHECK (semester IN (0, 1, 2)),
 "grade" character(2) CHECK (grade IN ('A','B','C','D','N','NA','S')),
   PRIMARY KEY (studid, subcode, year, semester));

REVOKE ALL on "enrolment" from PUBLIC;
GRANT SELECT, REFERENCES on "enrolment" to PUBLIC;
GRANT ALL on "enrolment" to "retallic";

   INSERT INTO "lecturer" VALUES (110,'Martin','Mary','B1.26 ',Null);
   INSERT INTO "lecturer" VALUES (111,'McEwan','Noel','B1.26 ',110);
   INSERT INTO "lecturer" VALUES (112,'Rice','Phil','B1.14 ',110);
   INSERT INTO "lecturer" VALUES (113,'Scott','Philip','B1.14 ',110);
   INSERT INTO "lecturer" VALUES (116,'Retallick','Brian','B2.20 ',112);

   INSERT INTO "subject" VALUES ('BITCA1','Computer Architecture 1',112,100.00);
   INSERT INTO "subject" VALUES ('BITCA2','Computer Architecture 2',112,120.00);
   INSERT INTO "subject" VALUES ('BITCNE','Computer Networks',113,150.00);
   INSERT INTO "subject" VALUES ('BITDBA','Database',116,100.0);
   INSERT INTO "subject" VALUES ('BITITF','IT Fun',111,150.00);

   INSERT INTO "student" VALUES
   (123456,'Retallick','Brian','B.Retallick@latrobe.edu.au','Computing','24-feb-2002',0.00);
   INSERT INTO "student" VALUES 
   (123458,'Hewitt','Lleyton','lhewitt@students.latrobe.edu.au', 
   'Business/Computing','24-feb-2003',800.00);
   INSERT INTO "student" VALUES 
   (987654,'Capriati','Jennifer','jcap2@smallpond', 
   'Business/Computing','24-apr-2003',200.00);
   INSERT INTO "student" VALUES 
   (123460,'Johansson','Thomas','tommy@tennis.se', 
   'Business','20-jul-2002',900.00);
   INSERT INTO "student" VALUES 
   (987655,'Hingis','Martina','martina@ironbark.geneve.ch', 
   'Computing','07-jul-2002',350.00);
   INSERT INTO "student" VALUES 
   (987660,'Hewitt','Jaslyn','jhewitt@students.latrobe.edu.au', 
   'Computing','24-feb-2003',350.00);

   INSERT INTO "enrolment" VALUES (123456,'BITDBA',2002,1,'N ');
   INSERT INTO "enrolment" VALUES (123456,'BITITF',2002,1,'B ');
   INSERT INTO "enrolment" VALUES (123456,'BITCA1',2002,2,'C ');
   INSERT INTO "enrolment" VALUES (123458,'BITITF',2003,1,'A ');
   INSERT INTO "enrolment" VALUES (123458,'BITDBA',2003,1,'B ');
   INSERT INTO "enrolment" VALUES (123458,'BITCNE',2003,2,'C ');
   INSERT INTO "enrolment" VALUES (123458,'BITCA1',2003,2,'A ');
   INSERT INTO "enrolment" VALUES (987654,'BITDBA',2003,1,'A ');
   INSERT INTO "enrolment" VALUES (987660,'BITDBA',2002,2,'NA');
   INSERT INTO "enrolment" VALUES (987660,'BITCA1',2003,2,'NA');
   INSERT INTO "enrolment" VALUES (987655,'BITDBA',2002,2,'C ');
   INSERT INTO "enrolment" VALUES (987655,'BITCNE',2003,1,'A ');
   INSERT INTO "enrolment" VALUES (987655,'BITCA1',2003,2,'N ');

   INSERT INTO "prerequisite" VALUES ('BITCNE','BITITF');
   INSERT INTO "prerequisite" VALUES ('BITCA1','BITITF');
   INSERT INTO "prerequisite" VALUES ('BITCA1','BITDBA');
   INSERT INTO "prerequisite" VALUES ('BITCA2','BITCA1');