awesome-database-design
:zap: A collection of resources and tutorials to design a better database schema.
https://github.com/sujeet-agrahari/awesome-database-design
Last synced: 6 days ago
JSON representation
-
Database-Specific Resources
-
MySQL
- Awesome MySQL - Curated MySQL resources
- MySQL Documentation - Official docs
- MySQL Performance Blog - Performance insights
- MySQL Workbench Tutorial - Using MySQL Workbench
- MySQL Indexing Best Practices - Index optimization
-
MongoDB
- Awesome MongoDB - Curated MongoDB resources
- MongoDB Schema Design - NoSQL design patterns
-
PostgreSQL
- Awesome PostgreSQL - Curated PostgreSQL resources
- PostgreSQL Exercises - Interactive learning
- PostgreSQL Documentation - Official docs
- PostgreSQL Performance Tuning - Optimization guide
- Proper Use of Arrays in PostgreSQL - Array data type
-
Other Databases
- DynamoDB Best Practices - AWS NoSQL
- Neo4j Graph Database - Graph database concepts
-
-
Tools & Software
-
Database Design Tools
- DataGrip - JetBrains database IDE
- DBeaver - Universal database tool
- QuickDBD - Quick database diagrams
- Valentina Studio - Multi-database tool
- SQL Studio - Modern SQL editor
-
Monitoring & Profiling
- Percona Monitoring and Management - Open-source monitoring
- pgAdmin - PostgreSQL administration
- pg_stat_statements - PostgreSQL query statistics
- Datadog Database Monitoring - Multi-database monitoring
-
Migration Tools
- Sqitch - Database change management
- Flyway - Database migration tool
- Prisma Migrate - Modern migration tool
-
-
Topics:
-
Database Design Tools
-
Database Indexes
-
SQL
-
Hierarchical data modeling
-
Naming Convention
-
Normalization
-
Conceptual database design
-
Entity-relationship modeling
-
Multi-language database design
-
Views
-
Inheritance in database design
-
Subtype/supertype design pattern
-
Database Sharding
-
Database Lessons
-
Common Database Questions and Suggestions
-
Cheatsheets
-
Database Partition
-
-
Learning Resources
-
Books
- Designing Data-Intensive Applications - Modern database systems
- Database Internals - How databases work internally
- The Art of PostgreSQL - PostgreSQL mastery
- Database Design for Mere Mortals - Beginner-friendly book
- High Performance MySQL - MySQL optimization
-
Blogs & Articles
- Planet PostgreSQL - PostgreSQL community blogs
- MySQL Server Blog - Official MySQL blog
- Database Trends and Applications - Industry news
-
Interactive Learning
- HackerRank SQL - SQL practice problems
- LeetCode Database Problems - SQL coding challenges
- SQLPad - Online SQL editor
-
Courses & Video Tutorials
- Udacity Database Courses - Intro to databases
- freeCodeCamp Database Courses - Free certification courses
-
-
SQL & Query Languages
-
SQL Tutorials
- SQL Tutorial - W3Schools - Beginner-friendly tutorial
- Mode SQL Tutorial - Analytics-focused SQL
-
SQL Best Practices
- SQL Style Guide - Writing readable SQL
- SQL Anti-patterns - Common mistakes to avoid
- Parameterized Queries - Preventing SQL injection
-
Advanced SQL Concepts
- Window Functions - Powerful analytical queries
- Common Table Expressions (CTEs) - Recursive and non-recursive CTEs
- Pivot and Unpivot - Data transformation
- JSON in SQL - Working with JSON data
-
-
Scalability
-
Database Sharding
- Consistent Hashing - Sharding strategy
- Vitess: Sharding for MySQL - MySQL sharding solution
- When to Shard Your Database - Decision guide
- Sharding Pattern - Microsoft's guide
-
Replication Strategies
- PostgreSQL Streaming Replication - PostgreSQL replication
- MySQL Replication - MySQL replication guide
- Master-Slave vs Master-Master - Replication topologies
-
Database Partitioning
- Table Partitioning Strategies - PostgreSQL docs
- Partitioning vs Sharding - Understanding the difference
-
-
Community
-
Sample Schemas
- Database Administrators Stack Exchange - Q&A community
- r/Database - Reddit community
- Database Weekly Newsletter - Weekly database news
- PostgreSQL Slack - PostgreSQL community
- MySQL Forums - MySQL community
- r/SQL - SQL discussions
-
-
Getting Started
-
Fundamentals
- Database Types Comparison - SQL vs NoSQL and when to use each
- What is a Database? - Oracle's comprehensive guide
- Database Design Basics - Introduction to database design concepts
- Relational Database Concepts - Understanding the relational model
- ACID Properties Explained - Transaction properties every developer should know
-
Database Design Process
- Database Design Process - Step-by-step guide
-
-
Reference Materials
-
Cheatsheets
- Database Normalization Cheatsheet - Normal forms reference
- MySQL Cheatsheet - MySQL quick reference
- SQL Join Visualizer - Visual join guide
-
Sample Schemas
- MySQL Sample Databases - Example schemas
- Northwind Database - Classic sample database
- PostgreSQL Sample Databases - Practice databases
- Sakila Database - DVD rental schema
- Premade Database Designs and Models - Real-world examples
-
-
Core Concepts
-
Entity-Relationship Modeling
- Entity-Relationship Diagrams - Complete guide to ER diagrams
- ER Model Tutorial - Step-by-step ER modeling
- Cardinality in Data Modeling - Understanding relationships
- Crow's Foot Notation - Popular ER diagram notation
-
Naming Conventions
- SQL Naming Conventions - Comprehensive naming guide
- Database Naming Standards - Industry standards
-
Normalization
- Normalization vs Denormalization - When to use each approach
-
Keys and Relationships
- Primary Keys, Foreign Keys, and Relationships - Understanding keys
- Composite Keys - When and how to use them
- UUID vs Auto-increment - Primary key strategies
-
-
Star History
-
Database Design Tools
- ![Star History Chart - history.com/#sujeet-agrahari/awesome-database-design&Date)
-
-
Performance & Optimization
-
Query Optimization
- N+1 Query Problem - Common pitfall
- SQL Query Optimization Techniques - Practical tips
- Explain Plan Analysis - Understanding query plans
-
Database Indexes
- Index Types Explained - Different index types
- Partial Indexes - Conditional indexes
- Full-Text Search Indexes - Text search optimization
-
Views and Materialized Views
- Materialized Views vs Tables - When to use each
- Indexed Views in SQL Server - SQL Server perspective
-
-
Best Practices
-
Security Considerations
- SQL Injection Prevention - OWASP guide
- Encryption at Rest - Data encryption
- Row Level Security - Fine-grained access control
-
Common Pitfalls
- Database Design Mistakes - Common errors
- ORM Anti-patterns - ORM best practices
- Boolean Field Naming - Naming conventions
-
Data Integrity
- Check Constraints - Data validation
- Triggers for Data Integrity - Automated validation
- Soft Delete Pattern - Logical deletion
- Temporal Tables - Historical data tracking
-
-
Design Patterns
-
Inheritance in Databases
- Class Table Inheritance - Martin Fowler's pattern
- Concrete Table Inheritance - Alternative approach
-
Subtype/Supertype Pattern
- Polymorphic Associations - Understanding the pattern
-
Hierarchical Data Modeling
- Nested Set Model - Popular hierarchical pattern
- Closure Table Pattern - Efficient hierarchy storage
- Materialized Path - PostgreSQL ltree extension
-
Multi-language Database Design
- Translation Table Pattern - Common approach
-
Programming Languages
Categories
Sub Categories
Database Design Tools
18
Sample Schemas
11
SQL
9
Database Indexes
8
Database Lessons
8
Normalization
6
Database Sharding
6
PostgreSQL
5
Books
5
Fundamentals
5
MySQL
5
Cheatsheets
5
Monitoring & Profiling
4
Advanced SQL Concepts
4
Entity-Relationship Modeling
4
Inheritance in database design
4
Data Integrity
4
Multi-language database design
3
Hierarchical Data Modeling
3
Common Pitfalls
3
Query Optimization
3
SQL Best Practices
3
Interactive Learning
3
Conceptual database design
3
Security Considerations
3
Keys and Relationships
3
Replication Strategies
3
Blogs & Articles
3
Migration Tools
3
Common Database Questions and Suggestions
3
Naming Convention
2
SQL Tutorials
2
Naming Conventions
2
Views
2
Other Databases
2
Courses & Video Tutorials
2
Subtype/supertype design pattern
2
Database Partitioning
2
Entity-relationship modeling
2
Inheritance in Databases
2
Views and Materialized Views
2
Hierarchical data modeling
2
MongoDB
2
Database Partition
1
Database Design Process
1
Subtype/Supertype Pattern
1
Contribution Guidelines
1
Multi-language Database Design
1