Database Projects - Modern Approach in Database Development
Contents
Database projects in brief
Database projects have significantly improved database development, giving developers
a number of great opportunities.
A database project is offline representation of a database schema with extended opportunities
for offline schema development. It is a collection of logically organized SQL scripts and query files,
which are used both to create a new database and update the existing one.
Database development is clear and logical within a database project. It takes you to do the following:
- Create a database project guided by the wizard, either empty or with database objects imported from
a required database.
- Manage SQL scripts and query files in the project and edit their contents.
- Build the ready project to create a script that will deploy all the project changes
to the database on the server.
- Deploy either the entire project or only required changes to the server.
This article describes how you can use database projects, provided in
dbForge Studio for MySQL and
dbForge Fusion for MySQL, and benefit from them.
We will use a project based on a sample database Sakila to illustrate project handling.
Benefits of database projects
We recommend using database projects as they fully meet modern database development
standards. Projects allow using version control system for database team development, which is
critical for efficient development.
As much work in database development accounts for working with SQL scripts, database projects offer
a great number of features for quick and convenient SQL editing. You will appreciate automatic syntax
check in SQL scripts, check of schema objects references in all statements, check of any object duplicates,
etc.
You can leverage more features while working with objects. One of them is refactoring, a form of editing
aimed at improving readability while preserving meaning. You can use the refactoring option to accurately
rename tables, views, columns of tables and views, aliases, stored routines, local variables, triggers,
events, and users. Statements that reference a renamed object will be automatically updated in all
the project scripts. Text strings and comments, containing the object's name, will be updated too.
Settings and syntax differences in various versions of SQL servers can put obstacles in
the phase of deploying the ready tested database to the server. Projects can have multiple
configurations, they allow you to customize the database project for deploying
to various versions of SQL server. You should select the required connection and settings
in a project configuration once, and next time just use the required configuration.
Creating a database project
You can create either an empty project or one with database objects imported from an existing database.
To create an empty project:
In the top menu select File->New->Project. The New Database Project Wizard opens.
- Enter a name and a location of the project.
You can also select a connection to use for the project deployment. (By default, the current connection is
selected.)
- Click the Create button to close the wizard and see the created project in the
Project Explorer window. To save the project, click the Save button on the toolbar.
To import database objects into a project:
Select the Import schema objects from the existing database check box in the wizard and
click the Next button to specify a connection and a database where the imported database objects are located.
You can select only required database objects from the list of database objects on the next wizard's page.
- Click the Create button to close the wizard and see the created project with imported objects
in the Project Explorer window. To save the project, click the Save button on the toolbar.
Managing project’s files
You can see and manage your project’s files using Project Explorer. It is a special window
where you can work with your project with clear understanding at a first glance. Project Explorer allows
you to do the following:
- See and quickly access all SQL and query files of the project, as they are
accurately organized as a tree.
- Add new files to the project.
- Add existing SQL and query files to the project.
- Edit or delete files in the project.
- Drag-and-drop files to ensure their best location within the project tree.
- Create and then rename folders and subfolders in the project to neatly distribute multiple files into them.
- Delete folders and subfolders from the project.
- Move folders by drag-and-dropping them to include one into another, creating subfolders
and getting the desired folder structure.
Note, you can right-click in Project Explorer and select the required option to manage project's files.
In the Object View window, you can see and easily navigate through database objects, created by the
scripts in your project, sort them either alphabetically or by object type, and rename. To apply these
options, use the right-click menu.
Object View allows you to quickly find and see the Create statement of each object in the script. Double-click
the object or right-click it and select Go To Definition from the menu. The script opens with the carriage at
the beginning of the required line.
You can edit project’s files in a convenient SQL editor, which provides a wide range of options for quick and efficient
SQL code editing. Read the details in dbForge Studio: Enhanced SQL
Management article.
Building a project
After you have edited your database project, you should build it to create a script that will deploy
all the project changes to the database on the server. A project can be built to a single ready-to-deploy
script or a set of scripts with a batch to run it in the MySQL Command-Line Tool or in DbForge Studio or
dbForge Fusion.
To build a project:
- Choose a project configuration to build on the Build tab of the Project Properties window.
(To open the window, use the top menu Project->Properties.)
- Right-click in the Project Explorer window and select Build from the menu.
Project building is enhanced with the following features:
- Syntax check in project scripts. (If any errors are found, the build is stopped.)
- Check of references to schema objects in all statements.
- Check of any object duplicates.
Each new project has one configuration named Default. Configurations can be created, renamed, and deleted
using the Configuration Manager. You can have several configurations each one with its own
options. They will allow you to deploy the same database project to various servers. For example, you
can test the project on one server and deploy the final version to another one.
Before building the project, you can set project options to customize build results.
- Right-click in the Project Explorer window and select the Properties option or use
the top menu: Project->Properties. The Project Properties window opens. It contains three
tabs: Build, Build Order, and Database.
Use the Build tab to define the settings for the generated SQL file with project changes.
For example, you can select whether to generate a single SQL script file or a batch script file, etc.
The Build Order tab lets you manage the order of files in the build script and deploy execution.
You can manage dependencies between objects in different files using build order. For example, table film2
in film_text.Table.sql references table film1 in film_Table.sql, so you should move film_text.Table.sql to locate
under film_Table.sql on the Build Order tab.
Move to the Database tab to manage target database settings. For example, you can set Server version
to generate SQL statements, using syntax of this server version.
Deploying a project to a server
You can deploy either the entire project or only the changes in the project to the database on a server.
To deploy the entire project:
- Check if the project has a connection assigned for deployment, otherwise, the deployment fails.
- Right-click the project in the Project Explorer window and select Deploy or select
Project->Deploy in the top menu.
Use Always re-create a database option to guarantee database integrity.
To deploy the changes from your project:
When you want to deploy only the changes from your project to a server, you should compare your
project with the database on the server and create a special schema synchronization script. The script
will deploy only required changes to the server.
Right-click in the Project Explorer window and select the Synchronize Project with Server option.
The document with comparison results opens.
- By default, the synchronization actions are automatically selected
for each compared object. You can change them, for example, selecting the Skip action to not apply the
change.
- Select Comparison->Synchronize in the top menu to deploy the project’s changes to the database.
You can synchronize the changes from the database on the server with
your project.
It is also simple. Do the following:
Right-click the required database in the Database Explorer window and select the New Schema
Comparison option. The wizard opens.
- Select the database on the server as Source and your project as Target.
- Click OK and see the comparison results in the opened window.
- Analyze the differences. By default, the synchronization actions are automatically selected
for each compared object, but you can change them, if required.
- Click the Synchronize button on the toolbar to synchronize the database with the project.
While comparing, the project can be either Source or Target. Note, the project is automatically built
during comparison, so if any errors occur during this process, the comparison fails. (For detailed information about
comparison, read The Basics of Qualitative Schema
Comparison article.)
Summary
Projects greatly facilitate database development. They organize your scripts in one logical
structure, good for navigation and management, offers offline database development with a set
of useful features, such as syntax check and code completion in SQL code, refactoring, etc.
You can generate either a single SQL script file or a set of files (a batch script file) for
deploying to the server. Deployment of only required project changes is one more benefit.
Empower yourself with database projects, while developing databases, and feel difference.