Database design is the process of producing a detailed data model of database. This data model contains all the needed logical and physical design choices and physical storage parameters needed to generate a design in a data definition language, which can then be used to create a database. A fully attributed data model contains detailed attributes for each entity.
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.
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.
There are a lot of online tools that can help you:
SqlDBM initially started out with inbuilt support for Microsoft’s SQL Server only.
But of course, due to large number of requests for MySQL support from our users, we have been working hard to expand our product.
And now, we are very proud to announce that SqlDBM offers support for MySQL – one of the most popular open-source databases in the world.
- Pricing: Free
- Forward engineering: Use SQLDBM to create a physical model or ERD of your database
- Reverse engineering: Use the reverse engineering feature to export your database schema as a SQL script
- Create database objects like tables, objects, relationships, indexes, quickly and intuitively
- Alter and edit database objects inline in your diagram
- Copy or Move columns across tables
- Zoom in and out of diagrams
- On-the- spot design anywhere on any browser
- Pricing: Free basic version; paid version starting at $50/year
- Supported DB products: Model and generate SQL for MySQL, SQLite, SQL Server, PostgreSQL, Oracle
- Supported browsers: Not specified
- Reverse engineering: Import SQL from MySQL (feature described as “experimental”)
- Pricing: Free basic version; free academic version; advanced version available for a monthly subscription starting at $9/month or on a per-use basis starting at about $1/day; in-house installation starting at $1399 for a one-time license fee
- Supported DB products: Model and generate SQL for PostgreSQL 9.x, Oracle Database 11g, MySQL 5.5, SQLite 3.7.x, DB2 9.7, SQL Server 2012, HSQLDB 2.3; also export model as XML
- Supported browsers: Chrome, Safari (beta)
- Reverse engineering: Free tool available; can also import directly from an SQL or XML file
 Database design – Wikipedia