Election Data Management Project

This three-phase project began by tackling the management and accurate loading of real-world voter data from Mecklenburg County, NC, into a MySQL database, navigating challenges such as data inconsistencies and type selection. The second phase centered on restructuring the data into a normalized database, complying with at least third normal form (3NF) and establishing robust inter-table relationships. The final phase saw the development of a full-stack application backed by MySQL.

Minwoo Sohn

8/2/20232 min read

The initial project phase centered on managing real-world data sourced from CSV and TXT formats, with a particular emphasis on detecting data inaccuracies in a substantial dataset.. Drawing on voter data from Mecklenburg County, NC, the project encompassed essential tasks, such as establishing a robust database foundation, crafting a customized "mega table" structure to align with data attributes, and formulating precise strategies for CSV-to-SQL data mapping. Some challenges involved selecting the right data types, considering that the initial rows might not fully represent the dataset variation. Addressing data loading errors was another crucial part. Ultimately, the data was successfully loaded into a MySQL table, marking a significant achievement in the project's progression.

The second part involved dealing with the mega table, fostering an in-depth understanding of database management. It encompasses organizing raw datasets into a structured database for streamlined analysis, delving into crucial concepts like data normalization, analysis, and optimization. The process unfolds with a meticulous breakdown of the prior mega table from Part 1, ensuring adherence to at least third normal form (3NF) based on real-world attribute dependencies. The use of constraints including 'NOT NULL', Foreign Key, and Primary Key fosters robust inter-table relationships to maintain referential integrity. Culminating in the creation of INSERT statements, the project seamlessly populates the refined tables with data from the original mega table, solidifying data accessibility and analytical potential.

The last part of the project, I delved deep into the working with a full stack application powered by MySQL. I integrated several advanced database functionalities tailored for the front-end application. My job was to coupling database functions with the app interface, facilitating seamless interaction between the user and the foundational data. Through this platform, not only were users capable of performing rudimentary analytics, but they could also execute more complex analyses. I implemented several features including 'Search Voter', where users can look up voters using their registration number, with stored procedures processing the requests. Another feature, 'Insert New Voter', enables users to add a voter through a web form, with entries timestamped upon insertion. I also incorporated a Trigger to adjust the Party code to 'N/A' if it didn't align with established party codes. Additionally, the 'Delete Existing Voter' function allowed for comprehensive voter data removal based on their registration number.