This repository has been archived on 2025-12-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2024-09-20 14:17:13 +03:00

11 lines
7.3 KiB
HTML

<!doctype html>
<html>
<head>
<title>Project description, deadline is 20.2.2022</title>
<meta charset="utf-8">
</head>
<body>
<h3 style="text-align: left;"><strong>General information</strong></h3><p>In the project, you will have to design and develop a relational database for an imaginary user. You can choose the topic yourself, for example sales database, sports database, music database, or anything you want. The database should be operateable with Python console that demonstrates five different database queries, one update, one insert and one visualization. <u>Project is individual work.</u>&nbsp;If there are any questions, contact the teacher or teacher assistant.</p><h4>Parts of the project:</h4><p></p><ol><li>Theoretical, design documentation.</li><ol><li>Design (description of the topic and limitations; ER-model)</li><li>Transformation to a relational model (and integrity constraints)</li><li>Description of the program</li></ol><li>Practical implementation with SQLite and Python</li><li>Video demonstration of the Python interface<br></li></ol><h3>Theoretical part:</h3><p>Use the given report template. The template has the recommended structure and some examples for the content. The template should work with Word and OpenOffice.</p><h4>Structure of the document</h4><p></p><ol><li>Introduction</li><li>ER model and transformation to relational model</li><li>Database implementation. First create the SQLite database and then the required parts with Python. Design where you should use indices to speed up queries.</li><li>Discussion, reflection and conclusion.&nbsp;</li></ol><h4>Design requirements:</h4><p></p><ul><li>ER model should have at least 6 entities and the database should have at least as many tables. Relational model can be larger (because of M:N transformation) but not smaller.</li><li>ER-model should have at least one M:N relationship</li><li>Design part needs to have an ER model as well as a relational model</li><li>Define minimum and maximum cardinalities and integrity constraints</li><li>At least five different queries or views need to be developed for the database. The queries/views need to provide useful information for the imagined end user. Two JOIN-clauses need to be used in at least one query (M:N-relationship) <u><strong>(query = SELECT query)</strong></u></li><li>Design the use of indices and provide justification for them</li><li>There should not be any data structures that go against relational model</li></ul><h3>Practical part</h3><p>In the practical part, you have to do a SQLite-database (an actual .sqlite file, not a sequence of SQL commands) and an interactive Python user interface that demonstrates one aspect of the database functionalities. For example, sports-database could print the information of old matches and then ask if you want to update an old score or add a new match result. The whole database is not required to be usable through the Python user interface. It is enough that you do a linear program that demonstrates five queries, one update, one insert and one visualization (done with bokeh-library). More information regarding bokeh-library is in the Python topic and assignment. Bokeh-visualization could be a bar chart for example.</p><h4>Requirements of the practical part</h4><p></p><ul><li>Database can be tested and used through SQLite and Python user interface</li><li>Python program demonstrates how to read data, update existing or insert new data. Additionally, one visualization demonstration</li><ul><li>Python program has at least 5 queries, 1 insert, 1 update and 1 bokeh-visualization</li></ul><li>Database implements integrity constraints with CASCADE and similar commands</li><li>Database has indices that are reasonable</li></ul><h4>Returnables for the practical part</h4><p></p><ul><li>Python program</li><li>SQLite database that is used by the Python program</li><li>Separate text file that includes the necessary SQL commands to create tables for the database</li><li>Preferably the HTML file created by bokeh (if generated)</li></ul><p><br></p><h3>Video demonstration<br></h3><p>The video demonstration is to show the functionality of the Python interface. You should show all the functionalities of your Python interface (the queries you have implemented and the results). No need to show the document, database, source code, nor anything else than the Python interface. The video length will probably be less than 2 minutes and no audio is required. <br></p><h3><br></h3><h3>Instructions for returning the project</h3><p>The project should be returned to the correct Moodle activity.</p><h4>The returnables include:</h4><p></p><ul><li>Report in PDF format (Theoretical part)</li><li>SQL commands required for creating the designed database that can be executed using SQLite .read -command as well as the SELECT-queries (Practial part - database)</li><li>Python implementation that includes the SQLite database as well as the user interface that accesses the database (Practical part - Python)</li></ul><h4>Returnable file structure</h4><p></p><ul><li>One compressed (ZIP or TAR) file that includes all the material for the project.&nbsp;</li><li>The compressed file includes ONE FOLDER. If you want to be anonymous during peer-review, remove all identifying information from the files. The folder includes the following:</li><ul><li>Report.pdf</li><li>SQL queries.sql (textfile that includes all necesasry commands for creating SQLite database and can be run with SQLite .read-command)</li><li>Subfolder that is called "PythonDBProgram." The folder includes all files that are necessary to run the Python program and preferably the bokeh HTML file. Remember to add a ready-made SQLite database to the folder so that the program can be immediately tested. The built database can include test data.</li></ul></ul><h4>Evaluation criteria</h4><p>In general, if the project fulfills all the requirements given above on an adequate level, you will receive maximum points from the project. The following things are emphasized in the evaluation:&nbsp;</p><p></p><ul><li>ER-model, understanding how they work and demonstrating your understanding</li><li>Reasonable model of the real world situation</li><li>Transforming a conceptual model to a relational database</li><li>Understanding relationships (1:1, 1:N, M:N) and cardinalities and demonstrating your understanding</li><li>SQL database design based on a model</li><li>Integrity constraints, primary- and foreign keys</li><li>Demonstrating M:N relationship on theoretical and practical level</li><li>Flawless Python program that demonstrates the usage of a database (the program is expected to be simple and run without crashes)</li><li>Participating or not participating in peer-review</li></ul><p>Peer-review does not directly determine the grade of the project and it is only a verbal review. However, a good peer-review or not doing the peer-review will affect the grade of the reviewer.</p><h4>Possible problem areas in the project</h4><p></p><ul><li>Problems in the modeling and using wrong models in the wrong phases</li><li>Not having cardinalities in the model</li><li>Not using integrity constraints (CASCADE, CHECK, etc.)</li><li>Not using M:N relationship (or missing the query demonstrating it)</li><li>Python program crashes during runtime</li><li>Missing the SQL commands for creating the tables or they do not work when using .read-command</li></ul><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p>
</body>
</html>