
Explore relational database design from defining entities and attributes to applying normalization, keys, and table relationships, culminating in third normal form for a blog application.
Explore how relational databases organize data with tables and relationships, and how the relational database management system supports design, data integrity, and the data lifecycle.
Learn how entities and tables express the same concept in relational database design, from logical design to implementing these entities as tables in an RDBMS such as MySQL.
Capture all requirements and define the database purpose to identify entities, attributes, and relationships; apply normalization to follow standards and reduce redundancy while avoiding null values.
Explore practical database design by modeling a blog application, aligning theory with a guided project, and translating functional requirements into a 9-item specification to support blog features.
Identify entities as objects with distinct or independent existence and attributes, linking them to tables and an application domain, as the first step of database design.
Identify preliminary blog entities such as post and user, with attributes like text, image, date created, and status, while planning secure access, authors, categories, and date-based queries.
Explore practical database design by modeling blog posts and users, assigning content, image, date created, author, category, status, and user details, using approach one to normalize to 3NF.
Apply approach two to identify entities from attributes, naming post content, post image, image URL, alternative text, date created, post status, and category name to design blog tables.
Explore how to illustrate a database design with an entity relationship diagram (ERD) in lucidchart, including creating entities, attributes, and defining one-to-many, many-to-many, and one-to-one relationships.
Develop a naming convention at the start of your project for tables and fields, and apply formats like snake case or camel case consistently.
Explore how normalization uses first, second, and third normal forms to reduce redundancy, manage dependencies on the primary key, and safeguard data integrity in relational database design.
Identify and resolve multivalued fields by moving the multiple values into a new subject table, ensuring each attribute contains a single value and supporting 1NF with table relationships.
Apply the multi valued field rule to the post table, identify potential multi value fields, and create separate image and category tables by removing those fields.
Identify multipart fields in relational tables and resolve them by creating atomic attributes, such as splitting name into first name and last name, to meet the first normal form.
Identify and resolve multipart fields in the project design by confirming four entities and ensuring each attribute is atomic, achieving the first normal form.
Identify and differentiate candidate, primary, foreign, and non-key fields to uniquely identify records and establish cross-table relationships, using user ID and course relationships as examples.
Identify a candidate key and evaluate fields for uniqueness, nullability, and stability to select a primary key, including composite keys. Explore surrogate keys when no candidate key fits.
Select the primary key from candidate keys, ensuring uniqueness and non-null values, and avoiding multi-valued fields. Prefer single, numeric, fixed-width or surrogate keys to minimize changes and avoid sensitive data.
Learn how to establish surrogate primary keys for blog schema entities, using auto-incremented IDs for category, image, post, and user tables, while treating names and URLs as non-key candidates.
Explore database dependency and functional dependencies to move toward second and third normal form, using primary and candidate keys to ensure non-key attributes depend on the whole key.
learn how second normal form requires all non-key attributes to be fully functionally dependent on the whole key, including when the key is composite.
Reinforces partial key dependencies and second normal form, showing how non-key attributes depend on the whole key, and demonstrates splitting into student and subject tables to reduce redundancy.
Identify and resolve partial key dependencies to design tables that meet first and second normal forms, ensuring non-key attributes depend on the whole primary key.
Explore how table relationships link normalized tables using primary and foreign keys, connecting entities like student and subject, and distinguish 1-to-1, 1-to-many, and many-to-many relationships.
Identify and map table relationships in a blog schema, determine one-to-one, one-to-many, and many-to-many connections, and use these relationships to normalize data toward 3nf.
Identify the many side in a one-to-many relationship and set up a foreign key to link related rows. Enforce referential integrity to ensure data accuracy between student and subject.
Identify a many-to-many relationship between students and subjects and resolve it with a link table using a surrogate key and two foreign keys, enforcing uniqueness to prevent duplicates.
Identify and resolve a 1 to 1 relationship between product and stock tables, linking via a unique foreign key and treating stock as a dependent entity in the normalization process.
Establish and define relationships between blog project entities, including posts, categories, images, and users. Create link and foreign keys to support many-to-many and one-to-many connections in the schema.
Explore third normal form after mastering first and second normal form, ensuring non-key attributes depend directly on the primary key and avoiding transitive dependencies.
Explore transitive dependency and move data toward third normal form by removing transitive links, such as linking books to genres via a foreign key and reducing redundancy.
Identify and resolve transitive dependencies in the blog schema. Confirm no transitive dependencies exist and explain functional dependencies that keep the design in third normal form.
Build an event log to audit user actions on blog posts, capturing action type, timestamp, user, and post, while normalizing to third normal form with foreign keys.
Design a blog flagging system with a flag table linked to posts, storing type, description, date-time, and status; allow optional email, support 3NF, and plan audit logs.
Learn to model post metadata with a key-value attributes table linked by a foreign key to posts, supporting template-specific custom data via a one-to-many relationship.
Design a blog comment system for authenticated users to create, edit, and delete their own comments, with nested comment levels, status, and moderation flags aligned to 3nf.
Databases or relational database systems have always been a subject with a "steep learning curve". Students tend to find it challenging, and learning takes much more effort than other subjects.
To my surprise, I am one of many people who have observed this trend. There is, in fact, a small niche of research papers written on this topic.
So why is it so challenging? When I think of how we might overcome some challenges when learning databases instantly, I think of one fact that remains true, which goes back to even when I started learning database systems. There needed to be more examples or actual database design in practice.
This course aims to help support anyone starting their journey into relational database systems by establishing underpinning skills and concepts of database and database design by working through practical scenario reasoning and providing the rationale to design decisions. Nothing beats experience in most subjects. That is amplified in the realms of relational database development. With the knowledge and experience gained in the course in hand, I hope that on completion of this course, it will provide the scaffolding, underpinning knowledge to support your endeavours in the world of relational database development.