TIETOKANTOJEN PERUSTEET

Opetustietojärjestelmän tietokanta

Linkeistä näet taulun sisällön esimerkkikannassa.

create table Opintojakso(
  kurssikoodi     varchar(15)  not null primary key,
  opintoviikot    decimal(3,1) not null, 
  nimi_suomeksi   varchar(50), 
  nimi_engl       varchar(50)
);


create table Kurssi (
  kurssikoodi     varchar(15) not null,
  lukuvuosi       numeric(4)  not null, 
  lukukausi       char        not null,
  kurssinumero    smallint    not null, 
  alkamis_pvm     date, 
  paattymis_pvm   date,
  constraint pk_kurssi primary key 
    (kurssikoodi, lukuvuosi, lukukausi, kurssinumero),
  constraint fk_kurssi foreign key (kurssikoodi) 
    references Opintojakso
    on update cascade
);

create table Opetustehtava( 
  kurssikoodi     varchar(15) not null,
  lukuvuosi       numeric(4)  not null, 
  lukukausi       char        not null,
  kurssinumero    smallint    not null,
  opetusnumero    smallint    not null, 
  tyyppi          varchar(20) not null, 
  tunteja         smallint, 
  alkamis_pvm     date, 
  paattymis_pvm   date,
  constraint pk_ot
    primary key (kurssikoodi, lukuvuosi, 
      lukukausi, kurssinumero, opetusnumero),
  constraint fk_ot
    foreign key (kurssikoodi, lukuvuosi, 
      lukukausi, kurssinumero) 
    references Kurssi
    on delete cascade
    on update cascade
);

create table Opiskelija( 
  opiskelijanumero numeric(10)       not null, 
  henkilotunnus    char(11), 
  sukunimi         varchar(60) not null, 
  etunimet         varchar(60) not null,
  osoite           varchar(120), 
  sahkoposti       varchar(120), 
  viim_havainto_pvm date             not null,
  constraint pk_opiskelija 
    primary key (opiskelijanumero)
);

create table Ilmoittautuminen (
  opiskelijanumero numeric(10)  not null,  
  kurssikoodi      varchar(15)  not null,
  lukuvuosi        numeric(4)   not null, 
  lukukausi        char         not null,
  kurssinumero     smallint     not null,
  opetusnumero     smallint     not null,   
  ilm_aika         timestamp    not null, 
  perumisaika      timestamp,
constraint pk_ilmo 
  primary key (opiskelijanumero, ilm_aika),
constraint fk_ilmo_opetus
  foreign key
   (kurssikoodi, lukuvuosi, lukukausi, 
    kurssinumero, opetusnumero) 
    references Opetustehtava
    on delete restrict,
constraint fk_ilmo_opiskelija
  foreign key (opiskelijanumero)
    references opiskelija
    on delete restrict
);

create table Opettaja ( 
  opetunnus     varchar(8)        not null, 
  sukunimi      varchar(60) not null, 
  etunimet      varchar(60) not null, 
  kotiosoite    varchar(120), 
  tyohuone      varchar(60),
  tyopuhelin    varchar(30), 
  sahkoposti    varchar(120), 
  kotipuhelin   varchar(30)
  constraint pk_opettaja
    primary key (opetunnus)
);

create table Tyo(
  kurssikoodi     varchar(15) not null,
  lukuvuosi       numeric(4)  not null, 
  lukukausi       char        not null,
  kurssinumero    smallint    not null,
  opetusnumero    smallint    not null,   
  opettaja        varchar(8),
  tunnit 		smallint,
  constraint pk_tyo
    primary key (kurssikoodi, lukuvuosi, 
      lukukausi, kurssinumero, 
      opetusnumero, opettaja),
  constraint fk_tyonkohde
   foreign key
    (kurssikoodi, lukuvuosi, lukukausi, 
     kurssinumero, opetusnumero) 
     references Opetustehtava
     on delete cascade,
  constraint fk_tyontekija
   foreign key (opettaja)
    references opettaja
);