A comprehensive guide to database design that includes resources, tutorials and tools to help you create an efficient database schema.
Being a self-taught programmer can be both challenging and rewarding. But when it comes to database design, finding the right resources and information can be difficult and time-consuming. This is why I've created this list - to help others who may be facing similar difficulties.
Over the past few months, I've accumulated a vast collection of bookmarks, posts, courses, and links related to database design and entity modeling. This list is my attempt to organize those resources and make them accessible to others who are interested in learning database design.
This list is organized into categories for easy navigation. If you're looking for a specific topic, you can use the search function (Ctrl + F
or Cmd + F
on macOS) to quickly find what you're looking for.
Awesome Database Design
Follow these steps to contribute
Naming Convention
Normalization
Entity-relationship modeling
Conceptual database design
Hierarchical data modeling
Logical database design
Views
Database Indexes
Inheritance in database design
Multi-language database design
Subtype/supertype design pattern
Database Sharding
Database Partition
SQL
Database Lessons
Common Database Questions and Suggestions
Cheatsheets
Database Design Tools
Introduction
How to use this list
Topics:
Star History
Please contribute
Database, Table and Column Naming Conventions
Character set and Collation
Normalization - 1NF, 2NF, 3NF and 4NF
Difference between NF, 2NF, and 3NF
Database Normalization Tutorial with example
The Difference between 2NF and 3NF
Database Conceptual Design| Entities and Relationships
Data Modeling - Complex Relationships
A Quick-Start Tutorial on Relational Database Design
Database Conceptual Design| Entities and Relationships
Database Conceptual Design
conceptual, logical and physical design for a database
Models for Hierarchical Data in SQL
Storing hierarchical data in a relational database
Managing hierarchical data in mysql
Managing hierarchical RDBSM
Database Conceptual Design| Entities and Relationships
Data Modeling - Complex Relationships
conceptual, logical and physical design for a database
Premade Database Designs and Models
Why do you create a View in a database?
What are materialized views?
How do database indexes work?
MySQL: Building the best INDEX for a given SELECT
B Trees and B+ Trees
A guide to database performance for developers
PostgreSQL Indexing : How, why, and when?
Represent inheritance in a database
Inheritance in a database I
Inheritance in a database II
Storing hierarchical data in a relational database
Models for Hierarchical Data in SQL
Managing hierarchical data in mysql
Single Table Inheritance Using Sequelize.js
Database design for multiple language
Best practices for multi-language database design
Managing hierarchical RDBSM
Multilingual Database Design in MySQL
Super type/Sub type design pattern I
Super type/Sub type design pattern II
Database Sharding Crash Course (with Postgres examples)
Database Partitioning Guide
SQL Training Videos
Proper use of array in Postgresql
Difference between identifying and non-identifying relationships
Subquery in SQL | Correlated Subquery
Learn SQL in Detail
Interactive SQL Lessons
SQL tutorial and exercises
SQL JOINS - Part 1
SQL JOINS - Part 2
Database Lessons
Introduction to RDBMS and design
Database Design Playlist
Carnegie Mellon University lectures
Things You Should Know About Databases
Stanford Database Courses
Database Journal - FEATURED DATABASE ARTICLES
Using NULL properly- You decide
8 Reasons Why MySQL's ENUM Data Type Is Evil
Understanding Vacuuming in PostgreSQL
SQL Commands
Draw Entity-Relationship Diagrams, Painlessly
DB DESIGNER
ArchiMate models and sketches
PG Modeler
Dia Diagram Editor
Data Modeling with Oracle SQL Developer
MySQL Workbench
dbForge Studio for MySQL
Valentina Studeio 13
Luna Modeler
Draw DB: Free, simple database design tool
Are you passionate about database design? ? Do you have some great resources or topics to share? We'd love to hear from you! Please feel free to contribute to the repository and don't forget to raise a PR or suggest any improvements. ? Thank you for your support!
Clone the repository to your local machine using the git clone command.
Make changes to the README.md
file by editing it in your preferred text editor. You can add new links or suggest modifications to existing ones.
Commit your changes using the git commit
command. Make sure to include a clear and concise commit message that describes the changes you made.
Push your changes to the repository using the git push command.
Create a pull request by navigating to the original repository and clicking the "New pull request" button. GitHub will guide you through the process of creating a pull request.
Wait for the repository owner to review and merge your changes. Be sure to respond to any feedback or comments they provide.
If your changes are accepted, you can continue contributing to the repository by repeating the above steps for additional changes.