hochschule ulm sommersemester 2012 database programming thomas oppel matthias schmitt

25
Hochschule Ulm Sommersemester 2012 Database Programming Thomas Oppel Matthias Schmitt Benjamin Brand

Upload: goldy

Post on 24-Feb-2016

30 views

Category:

Documents


0 download

DESCRIPTION

Hochschule Ulm Sommersemester 2012 Database Programming Thomas Oppel Matthias Schmitt Benjamin Brand. Tomabe Student Self - Management Software. Overview. User Stories Feature List Specifications & Requirements Entity Relationship Model Data Definition Language - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Hochschule UlmSommersemester 2012Database Programming

Thomas OppelMatthias SchmittBenjamin Brand

Page 2: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

User Stories Feature List Specifications & Requirements Entity Relationship Model Data Definition Language Data Manipulation Language Select Instruction Stored Procedures / Cursors User defined Functions Triggers

Overview

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Tomabe Student Self-Management Software

Page 3: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Student Self-Management Software

As a student I want ...“to see my timetable to manage the time.”“ to have an overview over my marks and ECTS-Points.”“ to have an overview over my tasks.”“ to be warned when a task deadline is less than seven days.”“ to have a list of my contacts in order to manage them.”“ to take part in a community with students of my semester.”

User StoriesUser Stories

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Page 4: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Create your own profile with an avatar Create an personalized timetable including courses, lectures and

rooms Manage tasks from your courses (e.g. homework) Manage general tasks (e.g. book return) Overview about your open tasks Warning when task-deadline is close to the end Overview of your exam results, calculate the average of the exam

results Overview about your earned ECTS-Points Store E-Mail addresses / phone numbers from important contact

people

In order to manage and organize student´s life, tomabe provides the right features and functions.

Feature List

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Page 5: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Software is based upon the programming language JAVA MySQL-Database to store data Website / Web-Application based on HTML/PHP

Graphical User Interface -> Ease of use clear architecture Well designed database Fast responding database Platform independent

Specifications & RequirementsSpecifications & Requirements

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Some Specifications and Requirements which have to been noticed when implementing the software/database.

Page 6: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Thomas Oppel // Matthias Schmitt // Benjamin Brand

ER-Model

Tomabe

Page 7: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Data Definition Language // Examples

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

# Create the table studentCREATE TABLE student ( nickname VARCHAR(50) NOT NULL, prename VARCHAR(80) NOT NULL, lastname VARCHAR(100) NOT NULL, password VARCHAR(500) NOT NULL, PRIMARY KEY (nickname))

# Create the table course CREATE TABLE course ( courseID INT auto_increment NOT NULL, name VARCHAR(100) NOT NULL, semester VARCHAR(20) NOT NULL, INDEX semester_ind (semester), PRIMARY KEY (courseID , semester))

Page 8: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

# Create the table taskCREATE TABLE task ( taskID INT auto_increment NOT NULL, description VARCHAR(100) NOT NULL, deadline TIMESTAMP DEFAULT CURRENT_TIMESTAMP, courseID INT NOT NULL, nickname VARCHAR(50) NOT NULL, islesssevendays INT DEFAULT 0, done BOOLEAN DEFAULT FALSE, PRIMARY KEY (taskID), FOREIGN KEY (courseID) REFERENCES course (courseID) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (nickname) REFERENCES student (nickname) ON DELETE CASCADE ON UPDATE CASCADE)

Data Definition Language // Examples

Page 9: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

# Insert Into instructionsINSERT INTO student (nickname,prename,lastname,password) VALUES ('matze', 'Matthias', 'Schmitt',SHA1('matze'));INSERT INTO university(name,description) VALUES ('Hochschule Ulm','Hochschule für Technik und Medien');INSERT INTO university_has_student(universityID,nickname) VALUES (1,'benny');INSERT INTO course (name,semester) VALUES ('Informationsmanagement', 'WF4');

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Data Manipulation Language // Examples

Page 10: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

# Build the timetable of a studentSELECT DISTINCT student.nickname AS 'nickname', course.name AS 'course name',timetable_has_courses.courseDay AS 'day', timetable_has_courses.courseTime AS 'time',timetable_has_courses.room as 'room'

FROM student JOIN student_takes_course ON student.nickname = student_takes_course.nicknameJOIN course ON student_takes_course.courseID = course.courseIDJOIN timetable_has_courses ON course.courseID = timetable_has_courses.courseID AND student.nickname = 'matze';

LIVE DEMO !

Select instruction

Page 11: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

# Procedure fill data into student tableDELIMITER &&CREATE PROCEDURE fillInStudent (IN nickname VARCHAR(50), IN prename VARCHAR(50), IN lastname VARCHAR(50), IN password VARCHAR(50)) BEGIN

INSERT INTO student (nickname, prename, lastname, password) VALUES (nickname, prename, lastname, SHA1(password) ); END &&DELIMITER ;

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Stored Procedures

Page 12: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

# Procedure show the courses of a teacherDELIMITER &&CREATE PROCEDURE showTeachersCourses (IN teacherName VARCHAR(50)) BEGIN SELECT prename AS 'Prename', lastname AS 'Lastname', name AS 'Course', title AS 'Title' FROM lecturer l JOIN lecturer_teaches_courses ltc JOIN course cou ON l.lecturerID = ltc.lecturerID AND ltc.courseID = cou.courseID WHERE l.lastname = teacherName; END &&DELIMITER ;

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Stored Procedures

LIVE DEMO !

Page 13: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Stored Procedures

# Procedure show the courses of a teacher# RESULT for lecturer “Ottmann”

CALL showTeachersCourses ('Ottmann');

Page 14: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

# Procedure set a flag into task table when task-deadline# is less than seven daysDELIMITER &&CREATE PROCEDURE setTaskFlaglessSevenDays (name VARCHAR(50))BEGIN

DECLARE noMore INT; DECLARE dead DATETIME; DECLARE idTask INT; DECLARE CursorOne CURSOR FOR SELECT deadline FROM task WHERE nickname = name; DECLARE CursorTwo CURSOR FOR SELECT taskID FROM task WHERE nickname = name; DECLARE CONTINUE HANDLER FOR NOT FOUND SET noMore = 1; SET noMore = 0;

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Stored Procedures

Page 15: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

LIVE DEMO !

WHILE (noMore = 0) DO FETCH CursorOne INTO dead; FETCH CursorTwo INTO taskID; IF (noMore = 0) THEN IF (DATEDIFF(dead, now()) < 7) THEN UPDATE task SET lesssevendays = -1 WHERE taskID = idTask; ELSE  UPDATE task SET lesssevendays = 1 WHERE taskID = idTask; END IF; END IF; END WHILE; Close CursorOne; Close CursorTwo; END &&DELIMITER ;

Stored Procedures

LIVE DEMO !

Page 16: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Stored Procedures

# Procedure set a flag into task table when task-deadline# is less than seven days

CALL setTaskFlaglessSevenDays (‘matze');

Value -1 because deadline is less than seven days to current date

Page 17: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

# Procedure set done to a taskDELIMITER $$CREATE PROCEDURE is_done()BEGIN DECLARE isItDone BOOLEAN; DECLARE noMoreDone INT; DECLARE taskIDCounter INT UNSIGNED; DECLARE getDoneCRS CURSOR FOR SELECT done FROM task; DECLARE CONTINUE HANDLER FOR NOT FOUND SET noMoreDone = 1; SET noMoreDone = 0; SET isItDone = FALSE; SET taskIDCounter = 0; OPEN getDoneCRS;

Stored Procedures

Page 18: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

WHILE (noMoreDone = 0) DO FETCH getDoneCRS INTO isItDone; SET taskIDCounter = taskIDCounter + 1; IF(noMoreDone = 0) AND (isItDone is TRUE) THEN UPDATE task SET deadline = '' WHERE taskID = taskIDCounter; END IF; END WHILE; CLOSE getDoneCRS; END $$DELIMITER ;

LIVE DEMO !

Stored Procedures

Page 19: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

# Function calculates the sum of ECTS-PointsDELIMITER //CREATE FUNCTION ectsSum (name VARCHAR(50)) RETURNS INTBEGIN DECLARE sumECTS INT; DECLARE sumNEW INT; DECLARE noMoreECTS INT; DECLARE Cursornew CURSOR FOR SELECT ects FROM student_takes_course WHERE nickname = name; DECLARE CONTINUE HANDLER FOR NOT FOUND SET noMoreECTS = 1; SET noMoreECTS = 0, sumECTS = 0; OPEN Cursornew;

Tomabe Student Self-Management Software

User defined functions

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Page 20: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

LIVE DEMO !

WHILE (noMoreECTS = 0) DO FETCH Cursornew INTO sumNEW; IF (noMoreECTS = 0) AND (sumNEW IS NOT NULL) THEN SET sumECTS = sumECTS + sumNEW; END IF; END WHILE; CLOSE Cursornew; RETURN sumECTS; END //DELIMITER ;

LIVE DEMO !

User defined functions

Thomas Oppel // Matthias Schmitt // Benjamin Brand

Page 21: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

User defined functions

# Function calculates the sum of ECTS-Points# RESULT: Example for the student with the nickname “matze”

SELECT ectsSum ('matze');

Page 22: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

# Function calculates the average of students marksDELIMITER &&CREATE FUNCTION avaMark (name VARCHAR(50)) RETURNS DECIMAL (10,3)BEGIN DECLARE aMark DECIMAL (10,3); DECLARE lMark DECIMAL (10,3); DECLARE nMark INT; DECLARE noMoreMarks INT; DECLARE Curs CURSOR FOR SELECT Mark FROM student_takes_course WHERE nickname = name ORDER BY Mark ASC; DECLARE CONTINUE HANDLER FOR NOT FOUND SET noMoreMarks = 1; SET noMoreMarks = 0, aMark = 0, nMark = 0; OPEN Curs;

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

User defined functions

Page 23: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

WHILE (noMoreMarks = 0) DO FETCH Curs INTO lMark; IF ( noMoreMarks = 0 ) AND ( lMark IS NOT NULL ) THEN SET nMark = nMark + 1, aMark = aMark + lMark; END IF; END WHILE; CLOSE Curs; IF nMark > 0 THEN RETURN aMark / nMark; ELSE RETURN NULL; END IF; END &&DELIMITER ;

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

LIVE DEMO !

User defined functions

Page 24: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

# Trigger set new mark to -1 when if is falseDELIMITER $$CREATE TRIGGER bu_student_takes_course BEFORE UPDATE ON student_takes_course FOR EACH ROWBEGIN IF NEW.mark < 1 OR NEW.mark > 5 THEN SET NEW.mark = -1; END IF;END $$DELIMITER ;

# Trigger set deadline to current date if entry is falseDELIMITER $$CREATE TRIGGER bi_task BEFORE INSERT ON task FOR EACH ROWBEGIN IF NEW.deadline < CURRENT_TIMESTAMP() THEN SET NEW.deadline = CURRENT_TIMESTAMP(); END IF;END $$DELIMITER ;

Tomabe Student Self-Management Software

Thomas Oppel // Matthias Schmitt // Benjamin Brand

LIVE DEMO !

Triggers

Page 25: Hochschule Ulm Sommersemester 2012 Database Programming Thomas  Oppel Matthias Schmitt

Hochschule UlmSommersemester 2012Database Programming

Thomas OppelMatthias SchmittBenjamin Brand