Skip to content

Commit fc3a3ed

Browse files
Update README.md
1 parent 3d2bc3e commit fc3a3ed

File tree

2 files changed

+86
-2
lines changed

2 files changed

+86
-2
lines changed

ER_diagram.png

121 KB
Loading

README.md

Lines changed: 86 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,87 @@
1-
# IMDB full-stack clone
2-
live link: https://imdb-full-stack-clone.netlify.app
1+
# IMDB full-stack clone - PMDB 🎥🎬✨
32

3+
[Live Link](https://imdb-full-stack-clone.netlify.app)
4+
5+
Welcome to PMDB, a one-stop destination for all things related to art production in the world of movies, shorts, TV series, and beyond.
6+
7+
Whether you are a filmmaker, a TV enthusiast, or simply an art aficionado, PMDB offers a comprehensive platform for discovering, exploring, and recommending the finest works of art productions.
8+
9+
---
10+
11+
## 🎬 Key Features:
12+
13+
- **Top Productions:** View the top-rated productions for each year and each genre.
14+
- **Detailed Information:** Get comprehensive details about any production or person.
15+
- **Search Functionality:** Search or filter productions or people based on specific criteria.
16+
- **Similar Recommendations:** Receive recommendations for similar productions based on type, genre, year, and crews.
17+
18+
## 🛠️ Project Architecture
19+
20+
### Backend
21+
- **MySQL:** A reliable relational database management system to store and manage data.
22+
- **Node.js:** Server-side runtime to handle API requests and interact with the database.
23+
- **Express:** Web application framework for Node.js to build API endpoints.
24+
25+
### Frontend
26+
- **React:** JavaScript library for building dynamic user interfaces.
27+
- **Material-UI:** React components for faster and easier web development.
28+
29+
## 📊 Database Design
30+
31+
The database design of PMDB is meticulously crafted to handle extensive data related to movie and TV productions, ensuring efficient data retrieval and robust management. Below is an overview of the key tables and their relationships, illustrated by an ER diagram.
32+
33+
### ER Diagram
34+
35+
![ER Diagram](ER_diagram.png)
36+
37+
The database is designed to be in Third Normal Form (3NF) and Boyce-Codd Normal Form (BCNF) to minimize redundancy and improve data integrity. Here's an overview of the structure:
38+
39+
- **Production:** Contains details about movies, TV series, and shorts, including attributes like `titleId`, `primaryTitle`, `isAdult`, `startYear`, `runtimeMinutes`, `averageRating`, and `numVotes`.
40+
- **Person:** Contains details about individuals involved in productions, including attributes like `personId`, `primaryName`, `birthYear`, and `deathYear`.
41+
- **Genres:** Stores genres associated with productions.
42+
- **Ratings:** Stores rating information for productions.
43+
- **Crew:** Stores information about the crew members involved in productions.
44+
45+
To further normalize the original data tables and achieve BCNF, we decompose tables to eliminate any remaining functional dependencies. For example, we split a table that stores both production and genre information into two separate tables: one for productions and one for genres. This process helps ensure that each table contains data related to a single topic and reduces redundancy.
46+
47+
### Benefits of BCNF:
48+
49+
- **Eliminates Redundancy:** Reducing redundancy helps minimize storage costs and avoids data anomalies.
50+
- **Improves Data Integrity:** By organizing data into well-structured tables, we ensure that the data remains consistent and accurate.
51+
- **Enhances Query Performance:** With optimized tables, queries run more efficiently, improving the overall performance of the database.
52+
53+
By adhering to these normalization principles, PMDB maintains a robust and efficient database structure that minimizes redundancy and ensures data integrity.
54+
55+
## 🚀 Optimization Strategies
56+
57+
Given the large dataset with millions of entries, loading times were initially quite long. To improve performance and reduce loading times, we implemented several optimization strategies:
58+
59+
1. **Creating Views:** To optimize query performance, we created views to store the results of joined tables. Since MySQL does not support materialized views, we created tables in the database to cache the join results. This strategy significantly reduced the time spent on multiple joins, leading to faster data retrieval and improved application performance.
60+
61+
2. **Creating Indexes:** We created indexes on the columns used in the WHERE and ORDER BY conditions of our queries. This indexing strategy helped to speed up the search operations and sorting, making the data retrieval process much more efficient.
62+
63+
## 🌟 Recommendation Engine
64+
65+
### How It Works:
66+
- **Top Productions:** Displays the top 250 productions based on average ratings.
67+
- **Production Search:** Allows users to search for productions based on various criteria.
68+
- **Person Search:** Allows users to search for individuals involved in productions.
69+
- **Similar Productions:** Recommends productions similar to the selected title.
70+
71+
## 📘 References and Credits
72+
73+
- **IMDB Datasets:** [IMDB Datasets](https://datasets.imdbws.com/)
74+
- **React:** [React Documentation](https://reactjs.org/)
75+
- **Node.js:** [Node.js Documentation](https://nodejs.org/en/)
76+
- **MySQL:** [MySQL Documentation](https://dev.mysql.com/doc/)
77+
78+
## ✨ Contributors
79+
80+
- 👩‍💻 **Zairui Yang:** [@zairuiy-coding](https://github.com/zairuiy-coding)
81+
- 👩‍💻 **Wen Jiang** [@wenjwj](https://github.com/wenjwj)
82+
- 👨‍💻 **Junwei Yang** [@Stone-face](https://github.com/Stone-face)
83+
- 👩‍💻 **Yihan Zhu** [@YihanIreneZhu](https://github.com/YihanIreneZhu)
84+
85+
---
86+
87+
Thank you for using PMDB. Explore, discover, and enjoy the world of movies and TV series! 📽️

0 commit comments

Comments
 (0)