The relational model (RM) for database management is an approach to managing data using a structure and language consistent with first-order predicate logic, first described in 1969 by Edgar F. Codd, where all data is represented in terms of tuples, grouped into relations. A database organized in terms of the relational model is a relational database.
The term database design can be used to describe many different parts of the design of an overall database system. Principally, and most correctly, it can be thought of as the logical design of the base data structures used to store the data. In the relational model these are the tables and views. In an object database the entities and relationships map directly to object classes and named relationships. However, the term database design could also be used to apply to the overall process of designing, not just the base data structures, but also the forms and queries used as part of the overall database application within the database management system (DBMS).
The process of doing database design generally consists of a number of steps which will be carried out by the database designer. Usually, the designer must:
- Determine the data to be stored in the database.
- Determine the relationships between the different data elements.
- Superimpose a logical structure upon the data on the basis of these relationships.
Within the relational model the final step above can generally be broken down into two further steps, that of determining the grouping of information within the system, generally determining what are the basic objects about which information is being stored, and then determining the relationships between these groups of information, or objects.
A good database design starts with a list of the data that you want to include in your database and what you want to be able to do with the database later on. This can all be written in your own language, without any SQL. In this stage you must try not to think in tables or columns, but just think: “What do I need to know?” Don’t take this too lightly, because if you find out later that you forgot something, usually you need to start all over. Adding things to your database is mostly a lot of work.
Where to learn?
There is a book called Database System Concepts. Though the book is mainly about concepts but while reading you get to learn many good practices. The concept of normalization of databases generally lead to better designed databases. This book deals with this in great detail.
Database System Concepts: Abraham Silberschatz, Henry Korth – 6th edition
Database System Concepts – 5th edition in PDF and PPT format.
The most important thing in learning good concepts is practice. While you will not implement you will never know what will went wrong or not good for the project. There are no hard and fast rules for creating good database designs while you might find many query optimization rules.
In the relational model, data is broken down into small chunks which are connected to each other by relationships. By breaking data into smaller pieces, accuracy is ensured by making data entry a one time process, and then reusing the data by connecting it with other pieces. Using this process, a large collection of unorganized data is simplified into its smallest units and then related with many other small units to recreate the big picture in a more organized format. The relational model provides a simple and flexible way to describe data.
These are some courses which can help you:
- Tutorial on Data Modeling, Data Warehouse & Business Intelligence!
- Learning Data Modeling – UdemyIntroduction to data modeling
MySQL is an excellent system for learning, as well as having the power for many enterprise and near-enterprise applications.
- It is free, and available for both Windows and *nix systems.
- It is among the most publicly documented of the available DBs. If you are stuck on anything, the answer is undoubtedly out there on the interwebs.
- It plays nicely with most of the major freeware products, such as Apache and Tomcat.
- There are a large number of available add-ons that can make both learning and developing easier.
- It has a variety of table structures, which can be integrated in the same database, allowing you to experiment with the pros and cons of different organizational methods.
- It can work as a distributed, as well as a single instance database.
- There is almost nothing you will find in the big enterprise DBs, such as Oracle or DB2 that is not also supported by mySQL. As a result, anything that applies to DBs in general, will also apply to mySQL
In short, if you become adept at mySQL, the learning curve for any of the big enterprise level DBs will be much lower than it would be with something like Access, or the Google open docs database.