We may earn an affiliate commission when you visit our partners.
Caleb Curry

This course will cover design concepts for all relational database management systems. This course is designed for those who want to download this course or watch it ad free. This is a course for relational database design. Here are some examples of the most popular databases:

  • MySQL
  • Oracle
  • Microsoft SQL Server
  • PostgreSQL
  • SQLite
  • MiariaDB
  • and MORE.
Read more

This course will cover design concepts for all relational database management systems. This course is designed for those who want to download this course or watch it ad free. This is a course for relational database design. Here are some examples of the most popular databases:

  • MySQL
  • Oracle
  • Microsoft SQL Server
  • PostgreSQL
  • SQLite
  • MiariaDB
  • and MORE.

We introduce SQL and talk about data definition language and data manipulation language. After about 4 solid videos of explaining databases and SQL, we dive into learning about entities and attributes. We apply all of these concepts to structure tables and relationships. We learn to design all of the relationships and I explain everything in depth.

This is because it helps to fully understand database design before you dive into designing your own database. Once we go over all of the concepts of database design we will be designing databases from start to finish.

No programming skills are required. This course does not program a database. This course will only be teaching how to best design your database. You may be wondering why such a large course is required for only designing a database. Well, designing a database is an extremely important part of database management. The best design will get us the best results and make programming our database really easy.

Keep in mind though that learning database design takes a lot of time and effort. Be sure to take notes and stop after each video to reflect on what you've learned. Keeping notes will make this video course a whole lot easier.

Enroll now

What's inside

Learning objectives

  • Learn the definition of relations, tuples, attributes, and over one hundred other vocabulary words!
  • Learn all of the types of relationships and how to properly design them all within a database. this includes one to one, one to many, and many to many. you will also learn about the difference between a parent table and a child table
  • Learn about all of the types and categories of keys including superykeys, candidate keys, primary keys, alternate keys, natural keys, surrogate keys, simple keys, compound keys, composite keys, and foreign keys
  • Learn database normalization. we will be learning the first 3 normal forms of database normalization. this will reduce redundant and incorrect data as well as protect our database integrity
  • Learn about data, data types, foreign key constraints, and other important concepts used to create the best database
  • Learn to design a database from beginning to end!
  • Show more
  • Show less

Syllabus

Introduction to Databases and Database Design

Complementary database design content can be found here - http://calebcurry.com/series/database-design-blog-series/. This series is going to be fun! We will be talking about a whole lot of cool stuff. The first part of this series will be concepts explained on the chalkboard and then the second part of this series will be going through examples on the computer. If at any point you have questions or comments, just leave me a comment!

Read more

A database is used to store large amounts of data. It differs from a spreadsheet in that it can be manipulated and managed in so many ways. A database will give us security, control, flexibility, and backups for our data. This is the first instructional video in the database design course.

In this video we talked about a relational database. A relational database is a database that sorts all information in relations. A relation is physically represented by a table. A table will have rows and columns organizing all of our information.

This video will talk about the relational database management system (RDBMS). The RDBMS is what allows us to do awesome things with our database. The RDBMS adds features as well as security. With a RDBMS we do not only have a database to store information but we can run queries and do things with our data. We use our RDBMS with SQL, a database programming language. We will be discussing SQL in the next video!

This video will be an introduction to structured query language (SQL). SQL is a language used to talk to any relational database management system. Although I didn't mention this much in the video, SQL is just a standard. Each database system, whether it be MySQL, SQL Server, Oracle, etc..., has its own implementation of SQL that may break from the standards slighty. But if you know general SQL, you can easily program in all RDBMS!

This video will be explaining what naming conventions are in general and then proceed to explain what naming conventions we will be using. It is important to realize that many relational database management systems have different naming conventions. Because this course is supposed to be able to be used for any RDBMS, my naming convention might not be the best for you. I use the convention that I use for MySQL programming, but I know many other RDBMS will be used for this course.

Database Design is the process of structuring your database in a way that will reduce errors, incorrect data, and redundant data. This will give us an optimized, fast, safe, reliable database. Database design largely implements relationships and normal forms. We will be discussing this in future videos.

Integrity is important because it is what keeps our database functional and relaible. This video will discuss three areas of integrity that you should be thinking of when you design your database.

Donate!: http://bit.ly/DonateCTVM2. This video will go over some of the most common database terms. Learn these because you don't want to have to look anything up during this series!

This video covers these terms:

  • Data
  • Database
  • Relational Database
  • DBMS
  • RDBMS
  • NULL
  • Anomalies
  • Integrity
  • Entity integrity
  • Referential integrity
  • Domain integrity
  • Entity
  • Attribute
  • Relation
  • Tuple
  • Table
  • Rows
  • Columns
  • File
  • Record
  • Field
  • Value
  • Entry
  • Database Design
  • Schema
  • Normalization
  • Naming Conventions
  • Keys

Here we will cover more terms that you should know when working with databases. These terms include:

  • SQL
  • DDL
  • DML
  • SQL Keywords
  • Front end
  • Back end
  • Client
  • Server
  • Client Side
  • Server Side
  • Server Side Scripting Language
  • View
  • Join

This video will talk about Atomic values. Atomic values store only one individual thing. As long as the value can be considered as an individual value then it is considered atomic. For example, a phone number is considered atomic even though it consists of a bunch of numbers. Atomic values allow for best database design and are part of the first normal form (we will discuss first normal form in future videos).

Relationships

This video will be an introduction to relationships. The three kinds of relationships are:

  • one-to-one
  • one-to-many
  • many-to-many.

We will learn that many-to-many relationships cannot be stored within a database practically. The rest of this course section will be teaching you how to design each relationship. I will also be giving you the solution to storing many to many relationships (stay tuned).

This video will go over the basics of one-to-one relationships. One-to-one relationships are very easy to understand. Watch this video and this course in its entirety to fully understand designing relationships.

One to Many relationships are when one row from tableA can have a relationship with multiple rows of tableB but each row of tableB can only have a relationship with one row from tableA.

Many-to-Many relationships cannot be stored in a database practically. The only way we can think of many-to-many relationships is logically. This video will be explaining the logical design for a many-to-many relationships.

This video will go over designing one-to-one relationships. This video will be useful for you when you're actually designing you database. One-to-One relationships (over multiple tables) are not as common because it is easier to store as a column within the parent table. When it comes to one-to-one relationships over two tables you must decide which is the parent and which is the child (child has the foreign key).

One-to-Many relationships will have a parent table and a child table. The child table will have a foreign key referencing the primary key in the parent table.

Child tables reference a primary key using a foreign key. This helps us design our relationships properly. Later in this series we will learn how the child table inherits values from the parent table and (in some instances) cannot exist without the parent (FK constraints).

The secret to designing many-to-many relationships is to use an intermediary table (junction table) to break a many-to-many relationship into two one-to-many relationships.

This video will sum up everything we learned from the last videos over relationships!

Keys

Keys are a big thing in database design and programming. Keys keep everything unique and are used to make connections between tables. Watch this video to begin our study of keys!

Primary key will automatically create an index used for database optimization!

A look up table is a table with a list of all possible values for a column in a different table. These values are then accessed through a foreign key. This is often used for one to many relationships where the many has only so many possibilities.

A superkey is any number of columns that forces every row to be unique. A candidate key is taking the superkey and removing unnecessary columns to get the least number of columns possible for row uniqueness.

A primary key are the candidate key that you select to be used as the main key for that table. All other candidate keys can be assigned as an alternate key. The Primary must be specified upon table creation. The alternate keys may be an official type of key in your RDBMS or it may be defined as simply a unique index.

Surrogate keys are auto incremented numbers that have no real world meaning. Auto incremented means that each row will have the next highest number. Natural keys are keys created from the columns already present within your table.

This video will be talking about the pros and cons of using surrogate or natural keys. Keep in mind that the one that you should use can vary depending upon the purpose of your database. Which one should you use?

Every row within a foreign key column references a primary key value of another table. This is used to make connections between tables within our database.

Foreign key columns with NOT NULL as a column characteristic will prevent any rows that do not have a parent primary key. This will force a relationship for every column.

Foreign key constraints are used for referential integrity. Referential integrity protects the connections between tables. The three possibilities talked about in this video are

  • RESTRICT
  • CASCADE
  • SET NULL.

Simple keys are keys with only one column. Composite keys are keys with multiple columns where at least one column is not a key in itself. Compound keys are keys where all columns are themselves keys. Compound keys are most commonly seen in intermediary tables (junction tables).

This video is a summary of all of the keys that we have learned. We will be discussing the key types and the key categories.

The types of keys we learned are:

  • superkey
  • candidate key
  • primary key
  • foreign key
  • foreign key

The categories of keys we learned are:

  • surrogate key
  • natural key
  • simple key
  • compound key
  • composite key
Introduction to Modeling

Entity relationship modeling is the process of designing your entire database structure. This video will be going over the basics of EER models.

Cardinality is the maximum number of connections a row of one table can have with row(s) of another table. This is basically just a fancy word to describe the two options: 1, or many. Designing the cardinality shows us whether the relationship is a one-to-one relationship or a one-to-many relationship. In the event of a logical many-to-many relationship, the cardinality would be best designed as two separate one-to-many relationships with the intermediary table in the middle (see my video over many-to-many relationships).

Modality is the least amount of relationships one row of a table can have with a row of another table. The only two possibilities are 0 or 1. 1 is the equivalent as marking the foreign key column as NOT NULL.

Introduction to Database Normalization

This will introduce you to the topic of Database Normalization. Over the next few videos we will be covering 1NF, 2NF and 3Nf in more detail!

First normal form is the first step in database normalization. It has to do with making every column and value atomic.

Second normal form has to do with removing partial dependencies. A partial dependency is when a column depends on only part of the primary key. This only makes sense if you have a primary key that consists of multiple columns (composite/compound key).

3rd normal form deals with removing transitive dependencies, A transitive dependency is when a column depends upon a column that depends upon the primary key.

Indexes

Data types are often classified into Dates, Numeric, and string.

Strings are characters (letters and numbers). Even numbers alone can be considered a string. These numbers will be used differently than numeric numbers because they are of string type. It is a common practice to illustrate a string by putting quotes around it such as "Hey!" Most databases classify strings as char, varchar, or text. These can sometimes be broken up further to bigtext, smalltext, etc...

Numeric data types are numbers. The data types usually include int (for integer), decimal, and float/double. Ints work with only whole numbers. Decimal, float, and double all work with numbers with data after the decimal point. Decimal is usually more accurate for calculations. Another thing to think about is whether the number is signed or unsigned. An unsigned number can only store positive numbers. This is good for numbers that are only positive, such as a surrogate primary key. Signed numbers can be negative but keep in mind that the max value is cut in half because you must include negative numbers now.

Dates are split up into datetime, date, time, and timestamp. Datetime is a combination of date and time. time stamp is a data type the stores the exact moment of time and is usually updated automatically when a row is entered or updated.

Joins

Joining is the process of taking data from multiple tables and putting it into one generated view. This video will be pretty slow and easy to follow because I want you to fully grasp the idea of joins.

Inner joins are used to take columns of 1 table and join them with columns of another table. Like you take 3 columns of the first table, 3 of the second table, and end up with a result of a generated table containing the selected columns from both of the tables.
Often these are combined by the primary key. So the primary key of the pk column would only be on the table once, if at all. You can use the primary key to join the table but it doesn't necessarily mean that you have to include it in the result set.

Inner joins across 3 or more tables will only return results that meet all join requirements. This can be a bit confusing so take some time to make some test data and try it out.

The best way to think about this is to imagine the first two tables being joined first. Once you have this new joined table take it and join it with the third table by the second.

Inner Joins across multiple tables can be complicated at first, but when you take the time to think about it, they are very easy to understand!

Outer Joins

Outer Joins will take all rows from either the left, right, or both tables. This is good for when you want to return all of the rows for only one side of the join, but not the other. For example, you could return every single user, but only return some of the rows of an associated table.

Right outer joins are similar to left outer joins. They basically do the same thing. Left is right and right is left and the same effect can be rendered by merely flipping the tables (just like Jesus did). Right outer joins are in no way deprecated they are just not all too common. For consistency's sake it is a common practice to use left outer joins instead of right outer joins.

This video will help you understand the different results you can get when you have foreign keys that are labeled as NOT NULL. Notice how sometimes the type of join you use will return the same result and therefore may not matter which you use.

Outer Joins in situations of multiple tables make things complicated. But with good understanding and a little practice the path will be clear.

This video went over the example of a left and right outer join, but you can use any type of join to do the job. Once you figure out how each of the joins work, you can mix and match to get the result you want.

An alias is another name for a column or table. This is useful for when you want to change the way a a query looks, make it easier to type out, or change the way our view is presented.

This video will dive into the topic of self joins. Self joins are when you join a table with itself. This can be useful for replacing values within the table or having more than one of the same column for some reason. Self Joins can definitely be complicated!

Resources
Blog Posts

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers database normalization up to the third normal form, which is essential for designing efficient and reliable databases and preventing data anomalies
Explores various key types (superkeys, candidate keys, primary keys, foreign keys) and categories (surrogate, natural, simple, compound, composite), which are fundamental for database design
Introduces SQL and its application in data definition and manipulation, providing a foundation for interacting with relational database management systems
Teaches database design principles applicable to various relational database management systems like MySQL, Oracle, and Microsoft SQL Server, offering broad applicability
Requires learners to understand database design before designing their own database, which may require a significant time investment
Focuses on database design rather than programming, which may not suit learners seeking hands-on database programming experience

Save this course

Save Database Design to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Database Design with these activities:
Review Relational Database Concepts
Solidify your understanding of relational database concepts before diving into design principles.
Browse courses on Relational Databases
Show steps
  • Review the definitions of relational database terms.
  • Practice identifying relationships between entities.
  • Work through basic SQL queries.
Review 'Database Design for Mere Mortals'
Gain a solid foundation in database design principles with a widely respected and accessible guide.
Show steps
  • Read the chapters on relational database concepts.
  • Work through the examples and exercises in the book.
  • Take notes on key concepts and definitions.
Design a Database for a Library
Apply database design principles to a real-world scenario to solidify your understanding.
Show steps
  • Identify the entities and attributes for a library database.
  • Define the relationships between the entities.
  • Create an entity-relationship diagram (ERD).
  • Normalize the database design to 3NF.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Practice Normalizing Sample Databases
Reinforce your understanding of database normalization through repetitive exercises.
Show steps
  • Find sample database schemas online.
  • Identify any violations of 1NF, 2NF, or 3NF.
  • Redesign the database to meet normalization requirements.
Create a Presentation on Database Normalization
Deepen your understanding of database normalization by explaining the concepts to others.
Show steps
  • Research the different normal forms (1NF, 2NF, 3NF).
  • Create slides explaining each normal form with examples.
  • Practice presenting the material to a friend or colleague.
Review 'SQL Cookbook'
Expand your SQL knowledge and learn practical techniques for working with databases.
Show steps
  • Browse the table of contents to identify relevant topics.
  • Read the recipes related to database design and normalization.
  • Try out the SQL examples in your own database environment.
Contribute to an Open Source Database Project
Gain real-world experience by contributing to an open-source database project.
Show steps
  • Find an open-source database project on GitHub or GitLab.
  • Review the project's documentation and contribution guidelines.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Database Design will develop knowledge and skills that may be useful to these careers:
Data Modeler
Data modelers design the blueprint for databases, focusing on the structure and relationships between data elements. This course goes in depth with entities, attributes, and relationships, concepts that are central to data modeling. This course teaches the fundamentals of database design, and will show a data modeler how to organize data efficiently. The course's emphasis on normalization also helps a data modeler understand how to reduce redundancy and ensure data integrity, which is crucial in creating robust data models. Those who wish to work as a data modeler should take note of this course, which also teaches relational database theory.
Database Consultant
Database consultants advise clients on how to improve their database systems. This course provides a consultant with necessary knowledge on database design principles. A database consultant must understand how to design databases to meet specific needs, and this course provides a solid foundation on the subject. The course covers entities, attributes, relationships, keys, and normalization, all necessary topics which a database consultant needs to understand in order to offer practical advice. The depth of knowledge in this course means that a database consultant who has completed this course will be well positioned to consult on diverse database designs. This course is highly relevant for those interested in database consulting.
Database Administrator
A database administrator is responsible for the performance, integrity, and security of a database. This course provides a valuable foundation in database design principles, which is essential for a database administrator to create well-structured and efficient databases. The course covers a wide range of topics, like defining relationships, keys, and normalization, that enhance database integrity. Understanding these concepts allows a database administrator to design databases that are reliable, scalable, and maintainable. This course provides instruction on database design, not database programming. This course's focus on database design is exactly what is needed for a solid foundation.
Database Developer
A database developer builds and maintains databases. The database design concepts taught in this course are essential for someone working in this role. While this course focuses on design rather than programming, it provides a solid foundation for a database developer by teaching the fundamentals of relational database design. A database developer needs to understand how to organize data, create relationships, and implement normalization to build efficient and reliable databases. This course’s focus on relational database management systems gives a database developer exposure to several different common systems.
Data Architect
Data architects design and manage an organization's data infrastructure. This course helps a data architect understand how different types of databases are designed, and this is critical for creating data warehouses and other large scale data systems. The course covers entities, attributes, relationships, and normalization, which are essential to design databases that are consistent, efficient, and scalable. The course goes into depth on different kinds of keys as well as different types of relationships. These topics would be beneficial for a data architect, who needs a clear understanding of how databases are structured and how data is stored. This course may be useful to those seeking a career as a data architect.
Cloud Database Specialist
Cloud database specialists manage databases in cloud environments. This course provides the database design principles that are needed to be successful in this career path. A cloud database specialist needs to understand all of the different kinds of relationships, keys, and normalization that are taught in this course. In addition, there are specific concerns that are present when working with cloud databases over traditional databases. Even though this course does not cover these specific concerns it can help a cloud database specialist design databases that are well formed and can be easily moved to the cloud. This course may be helpful for those interested in a career as a cloud database specialist.
Solution Architect
Solution architects design comprehensive technology solutions that integrate various systems. This course may be useful to a solution architect who wants to understand how databases are designed and how they interact with other parts of a system. A solution architect needs to be knowledgeable in systems design, and this course provides a solid foundation in database design. The course covers the various concepts of relational database theory and will help a solution architect make informed decisions about database technology. This course may be beneficial for those who want to become a solution architect.
Systems Analyst
A systems analyst examines business processes and translates them into system requirements. This course may be useful for a systems analyst by providing an understanding of how databases are structured and designed. The course covers topics like database normalization, relationships, and keys which a systems analyst will need to understand when designing new systems or modifying existing ones. A systems analyst will need to understand database design to be able communicate requirements to developers and other technical experts. This course may provide a valuable foundation in the concepts needed for a career in systems analysis.
Data Engineer
Data engineers build and maintain the infrastructure that allows data to be accessed and analyzed. This course helps a data engineer understand how data is structured and stored. Data engineers need to be familiar with relational database design, and this course provides an understanding of the principles of database design. This includes the topics of relationships, normalization, and keys, all of which are necessary for creating effective data pipelines and warehouses. Those seeking a career as a data engineer may find this course useful.
Metadata Analyst
Metadata analysts manage the information about data, ensuring it is well-organized and accessible. This course provides a good foundation for a metadata analyst, by teaching the principles of database design. This course's coverage of entities, attributes, and relationships will help a metadata analyst understand how data is structured and organized. A metadata analyst must understand the structure of various databases in order to improve data accessibility and ensure consistency, and this is where this course proves its benefit. The course may be useful for those interested in becoming a metadata analyst.
Application Architect
Application architects design the structure of software applications. This course on database design may be valuable to an application architect because databases underpin many applications. An application architect must understand how data is structured, and this course will provide a foundational understanding of database design. The course covers the various concepts of database design, such as relationships, keys, and normalization, which are essential considerations for designing an effective application. The course will give the application architect an understanding of how data models map to database structures. This course may be a useful tool for an application architect.
Data Analyst
Data analysts interpret data to identify trends and patterns. This course may be useful for a data analyst by providing a basic understanding of how data is structured in relational databases. A data analyst must understand tables, keys, and relationships to effectively query databases and extract data for analysis. Furthermore, this course covers design which will give the data analyst a better understanding of the limitations of the underlying database. The course's content on data definition language and data manipulation language may be useful for learning SQL, which is important for data retrieval for a data analyst.
Business Intelligence Analyst
Business intelligence analysts analyze data to provide insights for business decision making. This course's focus on relational database design helps a business intelligence analyst understand how data is structured and stored. Business intelligence analysts often work with complex datasets and need to understand the underlying database structures to analyze them correctly. This course on data definition language and data manipulation language will help teach proper SQL. The course's emphasis on normalization and relationships may be helpful to those seeking a career as a business intelligence analyst.
Software Engineer
A software engineer designs, develops, and maintains software applications. Often they must work with databases. This course will help a software engineer build efficient databases and interface with them. While this course does not teach programming, it provides a solid understanding of database design, which is a valuable skill for any software engineer. The course covers relationships, keys, and normalization, which are all important for building applications that rely on data. This course may be useful for a software engineer who works with databases.
Information Architect
An information architect structures and organizes information for usability, often in online environments. This course on database design can help an information architect design the underlying data structures that support the information they are organizing. This course will allow an information architect to understand how databases can be structured in a systematic way that aligns with business needs. The course's focus on relationships, normalization, and keys is relevant to the task of mapping information needs to database design. This course may be useful for those who seek a career as an information architect.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Database Design.
Provides a practical, step-by-step guide to database design. It covers the fundamentals of relational database design, normalization, and SQL. It's particularly useful for beginners and those who want a hands-on approach to learning database design. This book is commonly used as a textbook at academic institutions.
Provides practical solutions to common SQL problems. It covers a wide range of topics, including data retrieval, data manipulation, and database administration. It's a useful reference for those who want to improve their SQL skills and learn new techniques. This book is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser