Categories
Capstone

Capstone Presentation

Welcome to our Information Technology Capstone Presentation.

Here you will find a introduction to the project, a summary poster, and a video about the project.

Introduction

This Capstone Project utilizes a Python Tkinter application that is programmed to go through a database which was created using cPanel and MySQL Workbench, housing over 800 different monsters. The monster information was taken from a Google Sheet and was all put into the database using MySQL code, along with some Python code. The Tkinter application uses CRUD functions (create, read, update, and delete), and presents these CRUD functions in a Graphical User Interface. This interface provides a clean and user-friendly interaction with the database. Rather than the user needing to know how to code in MySQL, they would only need to input in the information they needed and press a button to find information or complete an action.

Video Presentation

The video presentation explaining how the Database works and a demo of how our Graphical User Interface works.

Summary Poster

8 replies on “Capstone Presentation”

I love the infographic design of your poster! Good demo as well, could be very useful for a campaign.

Hi Kylie and Justine,

Really nice job on the project and demonstration. I agree with Nik. The infographic poster looks great!

Prof. Isaacs

Hi Kylie and Justine, nice D&G DB presentation.  I think it’s a good start; I would call it your (MVP) minimal viable product.  If you have plans to further enhance your skills and learning, using your D&G DB project, then may I make the following suggestions:

Using ER Diagrams
Starting using an ER diagramming tool to define and model your MySQL database tables for several reasons:1. It will help you to better see, define and maintain your relationships
2. It will allow you to quickly move from design to SQL without having to right SQL create table statements (depending on the tool)
3. It will also help you see and better understand the design patterns in designing database entities
4. It will allow users to see the topology of your database design (which we were not able to see in your video presentation).  For example, if you want to design a database that is clean in design, flexible to change, open to expansion, and easy to program to, then consider the following design patterns:
* Consider that each table should always have an ‘id’ column as its primary key.  It’s the first key pattern you want to consider.  For examples:
– alignment.id
– stat.id
– master_stat.id (yes, irrespective that your master_stat entity is actually a many-to-many entity, it should also have a primary key of, ‘id’).  There’s a deeper explanation for this which I do not have time to explain here; but, trust me on this suggestion.
* Consider all table names as singular as opposed to plural (e.g. alignment as opposed to alignments. The fact that it’s a database table means that it can and will, most likely, store more than one row of data; thus, plurality is implied.
* Your use of the underscore design pattern to name your table names and column names is an excellent naming convention.  However, consider using lower case for both database names and column names for many reasons. Here are two key reasons:
– some databases are case sensitive and it’s easier to manage when the names are all lowercase
– it’s easier to program to databases where the naming convention is all lowercase

5.You are very close to utilizing many of the design patterns suggested above. For example, in your description of foreign keys, you are correct in using the table name appended with ‘_id’.  So, taking into consideration the design patterns described above, you might end up with the following SQL definition for your monster_stats table (BTW, stats is the abbreviation of statistics, so it’s considered singular and not plural):

CREATE TABLE monster_stats (
    id          INT(10) NOT NULL AUTO_INCREMENT,
    stats_value VARCHAR(255) NOT NULL,
    stats_id    INT(10) NOT NULL,
    monster_id  INT(10) NOT NULL,
    PRIMARY KEY (id),
    CONSTRAINT fk_monster_stats FOREIGN KEY (monster_id) REFERENCES `monster` (`id`) ,
    CONSTRAINT fk_stats FOREIGN KEY (stats_id) REFERENCES `stats` (`id`),
    INDEX ndx_stats (stats_id),
    INDEX ndx_monster_stats (monster_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DEFAULT COLLATE=latin1_swedish_ci;

6. For your ER tool, may I suggest you check out Visual Paradigm’s ER tool. Having designed more databases than I can count, I swear by this particular ER tool as well as many of their UML diagrams.  The subscription version of the Modeler offering is very affordable.  
Here’s the link: https://www.visual-paradigm.com/shop/vp.jsp

Using an MVC Framework
7. Lastly, may I suggest that you consider using an MVC framework for your next version of the UI.  Here, I will not make an explicit suggestion as to which MVC to use as python is not my language of choice for implementing enterprise-level web applications. I will leave that research and choice up to you (I’m very interested to know what you may choose).

Justine and Kylie, I’m very intrigued by the first implementation of your application and hope that you find an opportunity to implement further versions of your application as there is so much you can learn and gain from the experience in ways that you may not be able to fully comprehend now nor can I fully describe here.

Best wishes to you both in your continued success and awesome education,

Hycel Taylor
Founder CTO/Chief Architect
GenRocket, Inc.

Enterprise Test Data Automation

Mail: hycel@genrocket.com
Web: www.genrocket.com

Thank you for the insightful and detailed suggestions! We will definitely consider and implement these suggestions going forward, as this project is something we would enjoy improving upon in the future (along with any other database projects we may come across in the future!). Thank you again for taking the time to provide us with your professional insight into our project.

Leave a Reply to Kurt Zierhut Cancel reply

Your email address will not be published. Required fields are marked *