CSDS 341 Database Project Spring 2021 March 28, 2021
The course project is a team assignment, with a team of 2-5 students working on each project. Needless to say, expectations from a 5-person project are higher as compared to a 2-person project. I prefer that you use a relational DBMS, preferably MySQL or SQLServer, in this project. But, given the special circumstances of this semester, I will also accept a NoSQL database.
Some, but not all, teams found that it is useful to
Divide the tasks to be done to individual team members as early as possible, where each member
frequently informs the team on the progress of the task at hand (via Canvas reports), or call for meetings,
etc. Also, this sometimes eases the task of preparing progress and final reports.
Choose a project leader who, if needed, calls for, sets up meetings, and takes and distributes meeting notes.
And, I suggest that that a team member (a) downloads and installs your project DBMS (MySQL or SQLServer, perhaps), and (b) creates, populates, and queries the database.
Project reports are as follows.
(1) Project Proposal Report. Due: April 5th, Monday. (2) ProjectProgressReport.Due:April20th,Tuesday. (3) Final Project Report. Due: May 7th, Friday.
Final Project Presentations: There will be final project presentations (~8-10 minutes per project) in class during the last 3 lectures of classes. After your presentations, you are to submit them as pdf documents to Canvas.
Project teams and DBMS “Check In”s with TAs: Each project team will be assigned a TA who will help guide the team with their project. You are expected to schedule a zoom meeting with the TA assigned to your project (called “DBMS Check In”), and discuss with him, as early as possible, your design decisions on five steps of Section 4 below, namely, steps 3 (ER diagrams), 4 (relational model), 6 (complexity of SQL queries), 7 (integrity constraints) and 8 (relational database design–to be discussed soon). These “DBMS Check In”s will result in Canvas grades.
Your project proposal report should be no more than 3 pages, and contain the following items.
- Name of the application, team members,
- Application background and what it will be used for, and
- Data description, including at least some of the constraints that need to be enforced—in English and
in an intuitional manner.
3. Project Progress Report
Your progress report is to include, (perhaps incomplete discussions) of steps 1-7 of your final project report, as discussed in Section 4 next.
Below is a list of steps that any application/database design, implementation, and evaluation should have.
1. Introduction: Overview. Give an overview of the environment (i.e., a portion of the “real world” as chosen by you) about which an application that deploys a database needs to be developed.
- Database Requirements Specifications. List the requirements specifications of the database, i.e., discuss in English (a) data (objects and relationships) to be maintained in the database, and their details, (b) queries that the implemented system will employ and the possible frequencies of these queries and transactions, and (c) integrity constraints associated with the database.
- ER Data Model Design. Design the ER data model of your database in detail. List entities and their attributes. Specify the domain of each attribute. Specify the properties of each attribute (i.e., key, composite/simple, single-valued/multi-valued, derived, incomplete with different nulls, roles, weak/strong entity type, etc.). Specify the relationships and their attributes. List the properties of each relationship (i.e., degree of the relationship, cardinality ratio constraints (1-1, 1-N, N-M), key constraints, participation constraints (total, partial), other application-specific constraints). Draw the E-R diagram, and incorporate everything discussed in this step into the E-R diagram.
- Transforming the ER Model to the Relational Model. Translate your E-R model (by using explicit transformation) into the E-R model. Each entity should map to a (entity) relation, and each relationship should be accounted for (either represented in an entity relation or as a separate relation). Each entity/relationship attribute should be accounted for in the transformation. For each relation, list the primary/candidate keys, foreign keys. Specify the entity and integrity constraints, and discuss why they are satisfied for each relation. Explicitly specify each relation using CREATE TABLE commands of SQL.
- Creating your database. Download your DBMS of choice, and use it. Describe what DBMS you use, and the issues encountered in installing/using it. Then create your database schema, and include in your report actual database CREATE TABLE commands from the DBMS you are using. Use a GUI interface to your DBMS, if possible.
- SQL Queries. List the queries of your project in English, and then specify them in SQL. Your queries are expected not to be very simplistic; conversely, they are not expected to be very difficult either.
- Integrity Constraints. List your integrity constraints in general on the entities and relationships as a whole. Explain how you intend to enforce them, i.e, how you will build enforcement mechanisms by
- Applying database dependency theory (e.g., normalization via functional dependencies) (don’t do normalization here; just explain), or
- Applying external integrity enforcement (e.g., transactions/user-defined procedures, etc). If you need to enforce any constraints at database initialization/update time, list them, and specify how they are to be enforced. This section of the report explicitly specifies general constraints, triggers, and stored/external procedures. Constraint specification needs to be complete in the final report.
- Relational Database Design–Applying the Database Design Theory (Ch 8 of your textbook). Perform normalization by applying all those algorithms you have mastered in the class. More specifically, define your functional dependencies, and find the minimal set of f.d.s. Are all your relations in BCNF or 3NF? If not, apply the algorithms you have seen in the class to decompose and make them BCNF/3NF. Note that your decompositions should be lossless and dependency preserving.
- Revisiting the Relational Database Schema. On the basis of the analysis you have done in section 8, the team may perhaps choose to revise the relational database schema (merging/splitting relations) so that (a) the most frequent and most costly queries run faster, and/or (b) integrity constraints are enforced faster/easier.
- DBMS Implementation. Start using the DBMS asap. Create your schema, constraints and queries. Populate your database, and run/test your queries, constraints. Develop and test your stored procedures.
Summarize the main components of your code here with proper explanations. Discuss any problems encountered and how you have solved them. If some of the problems require the team to extensively redesign everything, the team may choose to point them out, and not implement them. If some of the stored procedures are too elaborate, scale down your design, explain your decisions, and implement the scaled down version.
- Application Implementation. Code transactions (and eb forms, web services, if any). Discuss any problems encountered, and how they are resolved.
- Conclusions. Discuss here anything else you want to say, and conclude.
- Appendix 1. Installation Manual. Write an Installation Manual that explains how one can compile and
implement your system.
- Appendix 2. Users manual. Write a Users Manual that explains to a naïve user how to start using your application.
- Appendix 3. Programmers Manual. Write a Programmers Manual that explains the classes, functions, etc and their functionality. Post your report, data, etc., on your Canvas group. Supply any password info that I may need to run your application.
本网站支持淘宝 支付宝 微信支付 paypal等等交易。如果不放心可以用淘宝交易！
E-mail: firstname.lastname@example.org 微信:itcsdx