Awesome Database Design
A comprehensive guide to database design that includes resources, tutorials and tools to help you create an efficient database schema.
Introduction
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.
How to use this list
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.
Topics:
- Awesome Database Design
- Introduction
- How to use this list
- Topics:
- 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
- SQL
- Database Lessons
- Common Database Questions and Suggestions
- Cheatsheets
- Database Design Tools
- Please contribute
Naming Convention
Normalization
- Normalization - 1NF, 2NF, 3NF and 4NF
- Difference between NF, 2NF, and 3NF
- Database Normalization Tutorial with example
- The Difference between 2NF and 3NF
Entity-relationship modeling
- Database Conceptual Design| Entities and Relationships
- Data Modeling - Complex Relationships
- A Quick-Start Tutorial on Relational Database Design
Conceptual database design
- Database Conceptual Design| Entities and Relationships
- Database Conceptual Design
- conceptual, logical and physical design for a database
Hierarchical data modeling
- Models for Hierarchical Data in SQL
- Storing hierarchical data in a relational database
- Managing hierarchical data in mysql
- Managing hierarchical RDBSM
Logical database design
- Database Conceptual Design| Entities and Relationships
- Data Modeling - Complex Relationships
- conceptual, logical and physical design for a database
- Premade Database Designs and Models
Views
Database Indexes
- 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
Inheritance in database design
- 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
Multi-language database design
- Database design for multiple language
- Best practices for multi-language database design
- Managing hierarchical RDBSM
- Multilingual Database Design in MySQL
Subtype/supertype design pattern
Database Sharding
SQL
Database Lessons
Common Database Questions and Suggestions
Cheatsheets
Database Design Tools
- 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
Please contribute
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!
Follow these steps to contribute
- 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.