This repository contains the design and documentation for a database to support a blog application, developed as part of a practical database design course.
This course covered the fundamentals of database design, from initial requirements analysis through to normalization and practical application in developing solutions for web applications. Key topics included:
- Introduction to relational databases and RDBMS
- Entity and attribute identification
- Establishing table keys (primary, candidate, foreign)
- Normalization (1NF, 2NF, 3NF)
- Identifying and resolving dependencies (functional, partial key, transitive)
- Establishing table relationships (one-to-one, one-to-many, many-to-many)
- Practical application to a blog schema
The main project involved designing a database schema for a blog application. The design process included:
- Initial entity and attribute identification
- Normalization to 3NF
- Establishing relationships between tables
- Expanding the design to include additional features
- Post management (creation, editing, categorization)
- User management (authors, editors, admins)
- Image handling for posts
- Comment system (including nested comments)
- Post rating system
- Flagging system for inappropriate content
- Event logging for user actions
- Custom post attributes (meta data)
- Database Design:
- Importance of thorough requirements analysis
- Techniques for identifying entities and attributes
- Methods for resolving various types of dependencies
- Strategies for expanding a database design to accommodate new features
- Practical considerations in designing for scalability and maintainability
This design serves as a foundation and can be expanded to include:
- User authentication and authorization
- Tag system for posts
- Search functionality
- Analytics features

