ALMU-järjestelmä Suunnitteludokumentti

Samankaltaiset tiedostot
CSE-A1200 Tietokannat

Lohtu-projekti. Ylläpitäjän dokumentti. Versiohistoria: Ensimmäinen versio Andreas Asuja

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

HELIA 1 (14) Outi Virkki Tiedonhallinta

Lohdutus - tietokantadokumentti

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

Suunnitteludokumentti

Tietokantakurssit / TKTL

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Tietokantasovellus: drinkkiarkisto

SQL - STRUCTURED QUERY LANGUAGE

3. Taulujen määrittely ja muuttaminen

Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

Tietosisällön tarkempi erittely

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi (

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ylläpitodokumentti. PLAYOFF Jari Anttila Sanna Fröblom Aarno Sandvik Tommi Paavilainen Miikka Kohijoki. Päivi Pääkkö, ohjaaja

Treenitietokannan suunnitteludokumentti

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

Suunnitteludokumentti

1 YLEISTÄ (KS) SQL-TRAINER - KUVAUS NYKYISESTÄ JÄRJESTELMÄSTÄ (HL,KS) JATKOKEHITYKSEN VAATIMUKSET (HL,KS)...7

Tietokannat II -kurssin harjoitustyö

Java ja tietokannan käsittely (JDBC)

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

2. Käsiteanalyysi ja relaatiomalli

Rajapinta (interface)

Toteutusdokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Suunnitteludokumentti

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Ohjelmoinnin jatkokurssi, kurssikoe

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

Kuntokirjuri. Ohjelmistokuvaus. Miika Alonen. Jarkko Laine. Jesse Honkanen. Veli Matti Huovinen. Jani Jäntti. Versio

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

Timo Laakso YHTEISÖN TURNAUSSIVUSTON SUUNNITTELU

HELIA 1 (12) Outi Virkki Tiedonhallinta

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Ylläpitodokumentti Labra

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

Suunnitteludokumentti

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

League of Finnish-American Societies Scholarship Foundation

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

POISSAOLOJEN SEURANTAJÄRJESTELMÄ

Choose Finland-Helsinki Valitse Finland-Helsinki

Työn sisältö Työn rakenne Työhön liittyvä dokumentaatio Työssä käytettävät apuvälineet Ohjauksen organisointi

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Opintopiiritehtävä 3: Verkkohuutokauppa

HELIA 1 (17) Outi Virkki Tiedonhallinta

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Taulukot. Jukka Harju, Jukka Juslin

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

15. Ohjelmoinnin tekniikkaa 15.1

ALMU-järjestelmä Vaatimusdokumentti

18. Abstraktit tietotyypit 18.1

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

ALMU järjestelmä. Vaatimusdokumentti. Helsingin yliopisto TKTL Ohjelmistotuotantoprojekti Marika Korhonen

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

League of Finnish-American Societies' Scholarship Foundation

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

TyontekijaOhjelma. +main() (käyttää) + = public - = private

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Ohjelmointi 1 C#, kevät 2013,

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Testausdokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tietokantojen suunnittelu, relaatiokantojen perusteita

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Metodien tekeminen Javalla

Sisällön automaattinen moniluokittelu

Luokan sisällä on lista

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Toimintaympäristön kuvaus. LTC-Otso Myyjän työkalu (POC)

Testaussuunnitelma NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho

Ohjelmistojen suunnittelu

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Transkriptio:

ALMU-järjestelmä Suunnitteludokumentti Helsingin yliopisto TKTL Ohjelmistotuotantoprojekti Projektiryhmä: Peter Ahlberg, Marika Korhonen, Tomi Kuittinen, Iikka Meriläinen, Jukka Narkiniemi

SISÄLLYS 1 Johdanto... 2 2 Sanasto...3 3 Järjestelmäarkkitehtuuri... 5 4 Osajärjestelmä: Almu applications...6 5 Osajärjestelmä: Servlet-kaavio... 7 6 Osajärjestelmä: Jsp-kaavio...8 7 Tieto-oliot... 8 8 Viestinvälitysoliot...8 9 Apuoliot... 8 10 Tietokanta...9

1 Johdanto Suunniteludokumentti kuvaa toteutettavan järjestelmän sellaisella tasolla, että toteutus on suoraviivainen. Suunnitteludokumentin perusteella jokaisen ryhmän jäsenen täytyy voida keskittyä oman osuutensa koodaamiseen, ilman että tarvitsee jatkuvasti päivitellä osuuksien välisiä rajapintoja. Ensin kuvataan koko järjestelmäarkkitehtuuri, minkä jälkeen järjestelmän osajärjestelmät kuvataan yksi kerrallaan. Kunkin osajärjestelmän kohdalla kuvataan luokat, joiden oliot toteuttavat osajärjestelmän.

2 Sanasto Sana Thesis Study group Fraternity Application foreign Basic student Post graduate student Handling view Scholarship Applying period Suomennos / selitys Pro gradu Opintopiiri Opiskelijajärjestö Ulkomaalaisstipendin apurahahakemus Perustutkinto-opiskelija Jatkotutkinto-opiskelija Käsittelynäkymä Apuraha / stipendi Apurahan hakukerta Turnout Credit unit Degree Realized Reasons for Craduation Appointment HYEmployee Summary Osallistujamäärä Opintopiste Tutkinto Toteutuneet Perustelut jollekin Valmistuminen Virka / työnimike Helsingin yliopiston työntekijä yhteenveto

3 Järjestelmäarkkitehtuuri

4 Osajärjestelmä: Almu applications 4.1Viestinvälitysrajapinta -Application-luokka

5 Osajärjestelmä: Servlet-kaavio -Servlet-kaavio jäi vain servlet-listaukseksi ajan puutteen takia. 5.1Viestinvälitysrajapinta -Luokkakaavioiden oliot tarjoavat get- ja set-metodit tiedon välitykseen ja tallennukseen. Lisäksi Manager-luokka tarjoaa saman rajapinnan metodeillaan, jotka käsittelevät tietokantatasoa.

6 Osajärjestelmä: Jsp-kaavio 6.1Viestinvälitysrajapinta -Servletit tarjoavat get- ja set-metodit jsp-luokille. 7 Tieto-oliot Session-luokka 8 Viestinvälitysoliot Manager-luokka 9 Apuoliot Util-luokka

10 Tietokanta Boolean-tyypin toteutukseen käytettiin CHAR(1)-tyyppiä. Create table-lauseet: CREATE TABLE UserPage ( UnixID VARCHAR2(9) NOT NULL, LastPageVisited VARCHAR2(100), PRIMARY KEY (UnixID) CREATE TABLE UserRightsAndStuff ( UserRightsID INTEGER NOT NULL, UnixID VARCHAR2(9) NOT NULL, Abi CHAR(1) CHECK (Abi IN (0,1)) NOT NULL, Thesis CHAR(1) CHECK (Thesis IN (0,1)) NOT NULL, StudyGroup CHAR(1) CHECK (StudyGroup IN (0,1)) NOT NULL, Fraternity CHAR(1) CHECK (Fraternity IN (0,1)) NOT NULL, Foreign CHAR(1) CHECK (Foreign IN (0,1)) NOT NULL, PRIMARY KEY (UserRightsID, UnixID) CREATE TABLE ViewAbi ( ViewAbiID INTEGER NOT NULL, UnixID VARCHAR2(9) NOT NULL, Attendees CHAR(1) CHECK (Attendees IN (0,1)) NOT NULL, Places CHAR(1) CHECK (Places IN (0,1)) NOT NULL, ReportGotten CHAR(1) CHECK (ReportGotten IN (0,1)) NOT NULL, OtherGrants CHAR(1) CHECK (OtherGrants IN (0,1)) NOT NULL, AppliedPerAttendee CHAR(1) CHECK (AppliedPerAttendee IN (0,1)) NOT NULL, PRIMARY KEY (ViewAbiID, UnixID) CREATE TABLE ViewThesis ( ViewThesisID INTEGER NOT NULL, UnixID VARCHAR2(9) NOT NULL, ThesisTimeDone CHAR(1) CHECK (ThesisTimeDone IN (0,1)) NOT NULL, ThesisTimeLeft CHAR(1) CHECK (ThesisTimeLeft IN (0,1)) NOT NULL, Stations CHAR(1) CHECK (Stations IN (0,1)) NOT NULL, WishedWeeks CHAR(1) CHECK (WishedWeeks IN (0,1)) NOT NULL, PRIMARY KEY (ViewThesisID, UnixID)

CREATE TABLE ViewStudyGroup ( ViewStudyGroupID INTEGER NOT NULL, UnixID VARCHAR2(9) NOT NULL, FieldOfScience CHAR(1) CHECK (FieldOfScience IN (0,1)) NOT NULL, EstimatedStudentCount CHAR(1) CHECK (EstimatedStudentCount IN (0,1)) NOT NULL, ReportGotten CHAR(1) CHECK (ReportGotten IN (0,1)) NOT NULL, HoursTotal CHAR(1) CHECK (HoursTotal IN (0,1)) NOT NULL, TeachingType CHAR(1) CHECK (TeachingType IN (0,1)) NOT NULL, SalaryTotal CHAR(1) CHECK (SalaryTotal IN (0,1)) NOT NULL, PRIMARY KEY (ViewStudyGroupID, UnixID) CREATE TABLE ViewFraternity ( ViewFraternityID INTEGER NOT NULL, UnixID VARCHAR2(9) NOT NULL, OrgName CHAR(1) CHECK (OrgName IN (0,1)) NOT NULL, OrgFieldOfScience CHAR(1) CHECK (OrgFieldOfScience IN (0,1)) NOT NULL, RelationToStudies CHAR(1) CHECK (RelationToStudies IN (0,1)) NOT NULL, Turnout CHAR(1) CHECK (Turnout IN (0,1)) NOT NULL, OtherGrants CHAR(1) CHECK (OtherGrants IN (0,1)) NOT NULL, AppliedPerAttendee CHAR(1) CHECK (AppliedPerAttendee IN (0,1)) NOT NULL, EstimatedExpense CHAR(1) CHECK (EstimatedExpense IN (0,1)) NOT NULL, AppliedAmount CHAR(1) CHECK (AppliedAmount IN (0,1)) NOT NULL, PRIMARY KEY (ViewFraternityID, UnixID) CREATE TABLE ViewForeignBasic ( ViewForeignBasicID INTEGER NOT NULL, UnixID VARCHAR2(9) NOT NULL, Attendee CHAR(1) CHECK (Attendee IN (0,1)) NOT NULL, Nationality CHAR(1) CHECK (Nationality IN (0,1)) NOT NULL, CreditUnitsLastYear CHAR(1) CHECK (CreditUnitsLastYear IN (0,1)) NOT NULL, CreditUnitsEstimated CHAR(1) CHECK (CreditUnitsEstimated IN (0,1)) NOT NULL, EstimatedGraduationTime CHAR(1) CHECK (EstimatedGraduationTime IN (0,1)) NOT NULL, ThesisState CHAR(1) CHECK (ThesisState IN (0,1)) NOT NULL, ThesisTimeLeft CHAR(1) CHECK (ThesisTimeLeft IN (0,1)) NOT NULL, Recommendation1 CHAR(1) CHECK (Recommendation1 IN (0,1)) NOT NULL, Recommendation2 CHAR(1) CHECK (Recommendation2 IN (0,1)) NOT NULL, PRIMARY KEY (ViewForeignBasicID, UnixID)

CREATE TABLE ViewForeignPost ( ViewForeignPostID INTEGER NOT NULL, UnixID VARCHAR2(9) NOT NULL, Attendee CHAR(1) CHECK (Attendee IN (0,1)) NOT NULL, Nationality CHAR(1) CHECK (Nationality IN (0,1)) NOT NULL, CreditUnitsLastYear CHAR(1) CHECK (CreditUnitsLastYear IN (0,1)) NOT NULL, TakesPostGraduateDegree CHAR(1) CHECK (TakesPostGraduateDegree IN (0,1)) NOT NULL, DegreeLeft CHAR(1) CHECK (DegreeLeft IN (0,1)) NOT NULL, ResearchDone CHAR(1) CHECK (ResearchDone IN (0,1)) NOT NULL, Recommendation1 CHAR(1) CHECK (Recommendation1 IN (0,1)) NOT NULL, Recommendation2 CHAR(1) CHECK (Recommendation2 IN (0,1)) NOT NULL, PRIMARY KEY (ViewForeignPostID, UnixID) CREATE TABLE Scholarship ( ScholarshipID INTEGER NOT NULL, Name VARCHAR2(100) NOT NULL, ForBasicStudent CHAR(1) CHECK (ForBasicStudent IN (0,1)) NOT NULL, ForPostStudent CHAR(1) CHECK (ForPostStudent IN (0,1)) NOT NULL, CanApplyManyAtOneTime CHAR(1) CHECK (CanApplyManyAtOneTime IN (0,1)) NOT NULL, CanGetMany CHAR(1) CHECK (CanGetMany IN (0,1)) NOT NULL, HasRecommendations CHAR(1) CHECK (HasRecommendations IN (0,1)) NOT NULL, PRIMARY KEY (ScholarshipID) CREATE TABLE ApplyingPeriod ( ApplyingPeriodID INTEGER NOT NULL, ScholarshipID INTEGER NOT NULL, BeginDate DATE NOT NULL, EndDate DATE NOT NULL, HasRecommendationsOn CHAR(1) CHECK (HasRecommendationsOn IN (0,1)) NOT NULL, PRIMARY KEY (ApplyingPeriodID, ScholarshipID), FOREIGN KEY (ScholarshipID) REFERENCES Scholarship CREATE TABLE ApplicationState ( ApplicationStateID INTEGER NOT NULL, Name VARCHAR2(40) NOT NULL, PRIMARY KEY (ApplicationStateID)

CREATE TABLE BiggestApplicationID ( SingletonID INTEGER NOT NULL, BiggestID INTEGER NOT NULL CHECK (BiggestID > -1), PRIMARY KEY (SingletonID) CREATE TABLE Filler ( ApplicationID INTEGER NOT NULL, /*FillerID:itä on monta samaa, mutta ApplicationID:itä vain yksi samaa.*/ FillerID INTEGER NOT NULL, FillerUnixID VARCHAR2(9) NOT NULL, FillerStudentID VARCHAR2(20) NOT NULL, FillerPostGraduate CHAR(1) CHECK (FillerPostGraduate IN (0,1)) NOT NULL, FillerName VARCHAR2(100) NOT NULL, FillerEmail VARCHAR2(100), FillerPhoneNo VARCHAR2(30), FillerStreetAddress VARCHAR2(100), FillerPostNo VARCHAR2(10), FillerPostOffice VARCHAR2(30), FillerNationality VARCHAR2(50), PRIMARY KEY (ApplicationID) CREATE TABLE ApplicationAbi ( ApplicationAbiID INTEGER NOT NULL, ScholarshipID INTEGER NOT NULL, ApplyingPeriodID INTEGER NOT NULL, ApplicationStateID INTEGER NOT NULL, Signed CHAR(1) CHECK (Signed IN (0,1)) NOT NULL, SignedDate DATE, DeletedBy VARCHAR2(9), DeletedDate DATE, HolderAmount INTEGER, /*tästä alkaa abiin liittyvät tiedot*/ FieldsOfStudy VARCHAR2(250), ReasonsForAbiAmount VARCHAR2(1000), EventDescription VARCHAR2(1000), OtherGrants INTEGER, ApplicantName VARCHAR2(100), ApplicantAccountNo VARCHAR2(30), CONSTRAINT ApplicationAbi_pkey

PRIMARY KEY (ApplicationAbiID), CONSTRAINT ApplicationAbi_f1 FOREIGN KEY (ScholarshipID) REFERENCES Scholarship, CONSTRAINT ApplicationAbi_f2 FOREIGN KEY (ApplyingPeriodID) REFERENCES ApplyingPeriod, CONSTRAINT ApplicationAbi_f3 FOREIGN KEY (ApplicationStateID) REFERENCES ApplicationState CREATE TABLE Abi_info ( Abi_infoID INTEGER NOT NULL, ApplicationAbiID INTEGER NOT NULL, Municipality VARCHAR2(50) NOT NULL, Event VARCHAR2(100), AbiAmount INTEGER, PRIMARY KEY (Abi_infoID), FOREIGN KEY (ApplicationAbiID) REFERENCES ApplicationAbi CREATE TABLE RealizedAbi_info ( RealizedAbi_infoID INTEGER NOT NULL, ApplicationAbiID INTEGER NOT NULL, Municipality VARCHAR2(50) NOT NULL, Event VARCHAR2(100), AbiAmount INTEGER, PRIMARY KEY (RealizedAbi_infoID), FOREIGN KEY (ApplicationAbiID) REFERENCES ApplicationAbi

CREATE TABLE Expenses ( ExpensesID INTEGER NOT NULL, ApplicationID INTEGER NOT NULL, Transport INTEGER CHECK (Transport > -1), TransportDescription VARCHAR2(100), Accommodation INTEGER CHECK (Accommodation > -1), AccommodationDescription VARCHAR2(100), Eating INTEGER CHECK (Eating > -1), EatingDescription VARCHAR2(100), Other INTEGER CHECK (Other > -1), OtherDescription VARCHAR2(100), PRIMARY KEY (ExpensesID), FOREIGN KEY (ApplicationID) REFERENCES ApplicationAbi, FOREIGN KEY (ApplicationID) REFERENCES ApplicationFraternity /*ID CAN REFER TO 2 TABLES*/ CREATE TABLE RealizedExpenses ( RealizedExpensesID INTEGER NOT NULL, ApplicationID INTEGER NOT NULL, Transport INTEGER CHECK (Transport > -1), TransportDescription VARCHAR2(100), Accommodation INTEGER CHECK (Accommodation > -1), AccommodationDescription VARCHAR2(100), Eating INTEGER CHECK (Eating > -1), EatingDescription VARCHAR2(100), Other INTEGER CHECK (Other > -1), OtherDescription VARCHAR2(100), PRIMARY KEY (RealizedExpensesID), FOREIGN KEY (ApplicationID) REFERENCES ApplicationAbi, FOREIGN KEY (ApplicationID) /*ID CAN REFER TO 2 TABLES*/

REFERENCES ApplicationFraternity CREATE TABLE ApplicationThesis ( ApplicationThesisID INTEGER NOT NULL, ScholarshipID INTEGER NOT NULL, ApplyingPeriodID INTEGER NOT NULL, ApplicationStateID INTEGER NOT NULL, Signed CHAR(1) CHECK (Signed IN (0,1)) NOT NULL, SignedDate DATE, DeletedBy VARCHAR2(9), DeletedDate DATE, Subject VARCHAR2(200), /*tästä alkaa thesis-tyypin omat tiedot*/ BeginDate DATE, EndDate DATE, ShortDescription VARCHAR2(1000), ReasonsForGrant VARCHAR2(1000), WishedDate DATE, WishedLength INT, ReasonsForStations VARCHAR2(1000), Station1 INTEGER, Station2 INTEGER, Station3 INTEGER, Station4 INTEGER, CONSTRAINT ApplicationThesis_pkey PRIMARY KEY (ApplicationThesisID), CONSTRAINT ApplicationThesis_f1 FOREIGN KEY (ScholarshipID) REFERENCES Scholarship, CONSTRAINT ApplicationThesis_f2 FOREIGN KEY (ApplyingPeriodID) REFERENCES ApplyingPeriod, CONSTRAINT ApplicationThesis_f3 FOREIGN KEY (ApplicationStateID) REFERENCES ApplicationState

CREATE TABLE Stations ( StationsID INTEGER NOT NULL, Name VARCHAR2(100) NOT NULL, PRIMARY KEY (StationsID) CREATE TABLE RecommendationThesis ( RecommendationID VARCHAR2(100) NOT NULL, IsValid CHAR(1) CHECK (IsValid IN (0,1)), ApplicationThesisID INTEGER NOT NULL, RecommenderName VARCHAR2(100), ApplierGoodForGrant CHAR(1) CHECK (ApplierGoodForGrant IN (0,1)), ReasonsForYes VARCHAR2(500), RecommendationSigned CHAR(1) CHECK (RecommendationSigned IN (0,1)), PRIMARY KEY (RecommendationID), FOREIGN KEY (ApplicationThesisID) REFERENCES ApplicationThesis CREATE TABLE ReportThesis ( ReportThesisID INTEGER NOT NULL, ApplicationThesisID INTEGER NOT NULL, GrantUsedDate DATE, DescriptionOfWork VARCHAR2(1000), PeriodSignificanceForThesis VARCHAR2(1000), SuggestionsForDevelopment VARCHAR2(1000), PRIMARY KEY (ReportThesisID), FOREIGN KEY (ApplicationThesisID) REFERENCES ApplicationThesis

CREATE TABLE ApplicationStudyGroup ( ApplicationStudyGroupID INTEGER NOT NULL, ScholarshipID INTEGER NOT NULL, ApplyingPeriodID INTEGER NOT NULL, ApplicationStateID INTEGER NOT NULL, Signed CHAR(1) CHECK (Signed IN (0,1)) NOT NULL, SignedDate DATE, DeletedBy VARCHAR2(9), DeletedDate DATE, ApplicantName VARCHAR2(100), ApplicantAccountNo VARCHAR2(50), Subject VARCHAR2(100), FieldOfScience VARCHAR2(100), ReasonsForStudyGroup VARCHAR2(1000), AttendeeAmount INTEGER, ReasonsForAmount VARCHAR2(200), FreeText VARCHAR2 (500), CONSTRAINT ApplicationStudyGroup_pkey PRIMARY KEY (ApplicationStudyGroupID), CONSTRAINT ApplicationStudyGroup_f1 FOREIGN KEY (ScholarshipID) REFERENCES Scholarship, CONSTRAINT ApplicationStudyGroup_f2 FOREIGN KEY (ApplyingPeriodID) REFERENCES ApplyingPeriod, CONSTRAINT ApplicationStudyGroup_f3 FOREIGN KEY (ApplicationStateID) REFERENCES ApplicationState CREATE TABLE TeachingHours ( TeachingHoursID INTEGER NOT NULL, ApplicationStudyGroupID INTEGER NOT NULL, Pro INTEGER, Dos INTEGER, Toh INTEGER, Lis INTEGER, HighDegree INTEGER, LowDegree INTEGER, PRIMARY KEY (TeachingHoursID), FOREIGN KEY (ApplicationStudyGroupID) REFERENCES ApplicationStudyGroup /*tästä alkaa StudyGroup-tyypin omat tiedot*/

CREATE TABLE TeachingSubjects ( TeachingSubjectsID INTEGER NOT NULL, ApplicationStudyGroupID INTEGER NOT NULL, Subject VARCHAR2(100), Hours INTEGER, PRIMARY KEY (TeachingSubjectsID), FOREIGN KEY (ApplicationStudyGroupID) REFERENCES ApplicationStudyGroup CREATE TABLE RealizedTeachingHours ( RealizedTeachingHoursID INTEGER NOT NULL, ApplicationStudyGroupID INTEGER NOT NULL, Pro INTEGER, Dos INTEGER, Toh INTEGER, Lis INTEGER, HighDegree INTEGER, LowDegree INTEGER, PRIMARY KEY (RealizedTeachingHoursID), FOREIGN KEY (ApplicationStudyGroupID) REFERENCES ApplicationStudyGroup CREATE TABLE ReportStudyGroup ( ReportStudyGroupID INTEGER NOT NULL, ApplicationStudyGroupID INTEGER NOT NULL, BasicDegreeAmount INTEGER, PostDegreeAmount INTEGER, FieldOfScience VARCHAR2(100), DescriptionOfStudying VARCHAR2(100), StudyGroupSignificance VARCHAR2(1000), TeachingFacilitys VARCHAR2(1000), SuggestionsForDevelopment VARCHAR2(1000), PRIMARY KEY (ReportStudyGroupID), FOREIGN KEY (ApplicationStudyGroupID) REFERENCES ApplicationStudyGroup

CREATE TABLE ApplicationFraternity ( ApplicationFraternityID INTEGER NOT NULL, ScholarshipID INTEGER NOT NULL, ApplyingPeriodID INTEGER NOT NULL, ApplicationStateID INTEGER NOT NULL, Signed CHAR(1) CHECK (Signed IN (0,1)) NOT NULL, SignedDate DATE, DeletedBy VARCHAR2(9), DeletedDate DATE, ProjectName VARCHAR2(100), RelationToStudies VARCHAR2(1000), ProjectGoals VARCHAR2(1000), Schedule VARCHAR2(1000), AttendeeAmount INTEGER, OtherGrants INTEGER, CONSTRAINT ApplicationFraternity_pkey PRIMARY KEY (ApplicationFraternityID), CONSTRAINT ApplicationFraternity_f1 FOREIGN KEY (ScholarshipID) REFERENCES Scholarship, CONSTRAINT ApplicationFraternity_f2 FOREIGN KEY (ApplyingPeriodID) REFERENCES ApplyingPeriod, CONSTRAINT ApplicationFraternity_f3 FOREIGN KEY (ApplicationStateID) REFERENCES ApplicationState /*tästä alkaa Fraternity-tyypin omat tiedot*/