hochschule ulm sommersemester 2012 database programming thomas oppel matthias schmitt
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 PresentationTRANSCRIPT
Hochschule UlmSommersemester 2012Database Programming
Thomas OppelMatthias SchmittBenjamin Brand
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
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
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
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.
Thomas Oppel // Matthias Schmitt // Benjamin Brand
ER-Model
Tomabe
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))
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
# 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
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
# 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
# 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 !
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');
# 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
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 !
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
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
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
# 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
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
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');
# 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
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
# 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
Hochschule UlmSommersemester 2012Database Programming
Thomas OppelMatthias SchmittBenjamin Brand