Some of the schema decisions that must be made by the database designer include:
Whether to use an attribute or an entity set to represent an object.
Whether a real-world concept is most accurately expressed as an entity set or relationship set.
Whether to use a ternary relationship or a pair of binary relationships.
Whether to use a strong or a weak entity set.
Whether using aggregation is appropriate.
Whether using generalization is appropriate.
Design phases
Different authors will have different names for the different phases, however all of them are essentially describing the Software Development Life Cycle:
Requirements specification
There can be a series of specifications that can use defined:
User requirements
Functional requirements
Software requirements
System/Subsystem requirements
Analysis
The result of analysis should be the input and output of the systems, as well as the E-R Diagram with the entity and relationship sets.
Design
The results of design should be the definition of all the database components and the logical description of the processing that the system will provide.
Implementation
Here is where the tables are actually created, and the databases are populated with data. The software is developed. This will be the shortest phase if all of the other phases are correctly executed.
Test
Testing is necessary to provide the development team built the correct system and built the system correctly.
Documentation
Actually, the documentation should been included in other phases and finalized during this phase.
Modification and Enhancement
This is the most expensive time to correct bugs!
This is also the phase where the system evolves to meet new and unforeseen requirements.