In Part 1
of this series, I covered the richness of the IBM Explorer and its
unique features that help .NET application developers write applications that run
against the IBM DB2 Universal Database (DB2
UDB) family on any platform. The DB2 UDB add-ins for Microsoft
Visual Studio .NET(VS.NET) also come with a rich set of schema wizards
that allow you to create a number of objects, including tables, views, indexes,
triggers, data adapters, stored procedures, and user-defined functions (UDFs). (Data
adapters will be covered in detail in a future article.)
In this article, I will show you how easy it is to create
database objects for your DB2 UDB databases with the assistance of the IBM Explorer
and a few wizards. I will not cover every step, but I will highlight key
features and productivity enhancements. When features are common across the
various wizards, I will just cover them once and refer you back to the section
where they were covered with subsequent wizards.
The DB2 Create Table wizard
You can invoke the DB2 Create Table wizard by right-clicking
the Tables folder in the IBM Explorer and selecting New->Table. (Note that you can create
Indexes and Triggers on tables as well I will cover those in a bit.)
All of the database schema creation wizards can be invoked
from the database tree in a similar manner.
You can specify the typical characteristics that you would expect
when creating a table. For example, you can select the table name, the schema
where you want it to be created, and the table space where the table will
reside. Additionally, you can add a comment that describes the table you want
Next, you can define the columns for the table you want to create.
The wizard provides a GUI interface where you can add columns and specify
characteristics for them such as default values, sequences (including the
number of values to cache and the increment), and more:
One very useful feature in the DB2 Create Table wizard is
the ability to import column definitions into your table. This provides a fantastic
way to enforce best practices, or easily emulate columns of tables that are in
Using the Import button, you can browse the schema of
multiple tables in your databases and import one or more column definitions
into your table, as the following figure shows:
Note that the columns in the preceding figure come from two
separate tables. After you click OK, the table definition looks like
Some of our clients maintain tables with column definitions
that are used as the basis for new tables. For example, an HR table may contain
all of the data definitions used for HR-based applications, and so on. This
feature is a nice way to leverage that kind of methodology from within the IDE.
Subsequent pages allow you to specify referential integrity
(RI) constraints to enforce key business rules and help the optimizer with more
details for access plan generation. For example, you can create primary keys
(PKs), unique keys (UKs), and foreign keys (FKs) as well as defining DELETE
and UPDATE rules and check constraints, as the following figure shows:
This wizard also gives you the ability to specify scripting
options for the table shown in the following figure. The Specify script
options for the table page gives you the ability to add script headers and
trailers for pre- and post-processing work to the table creation script you are
building. For example, you may have a table generated with a header that drops
the table before it is created (in case it already exists), and grants all
privileges on the table to PUBLIC.
The next page gives you some really cool options from a
When you create any object with a wizard, underneath the
covers a database script file is generated. Note that when you use a wizard,
the Run this script on the database check box is selected. Whenever you
create a database object from the IBM Explorer, this option is always selected
such that the object is created as soon as you click Finish. This is
likely the way you want to create objects in your development environment, which
is why it is the default.
In a production environment, you will typically use scripts
to create your database objects. When you create objects using a DB2 Database
Project and its associated scripts, you will note that the object is not
automatically created; rather, a script file is generated for you. You can use
this page to specify your creation and deployment preferences.
In addition to automatically creating the database object
(the default action), you can also select to deploy the script file, used to
create the object, into an existing project or even create a new one. For
example, you may want to create the table locally and add the script to your
production project in the same step. These scripts can be checked in and out of
most source control programs, such as IBM Rational® Clear Case®
or Microsoft Visual Source Safe, without leaving the IDE.
Finally (although you could have clicked Finish the
moment this button became active), you are presented with a page that summarizes
the options you selected for the table you want to create. Click Show SQL to
see the SQL script that will be used to create the table. This script will also be deployed into a project if you specified for this action to occur.
The DB2 Create View wizard
The DB2 Create View wizard starts with essentially the same
two pages that the DB2 Create Table wizard starts with: introducing the wizard
and giving you the option to name the view, specify the schema, and add a
comment. (These pages also allow you to specify an INSERT or UPDATE row
conformance check for dynamic views.)
Now you are ready to define the SQL statement that forms
the view. The DB2 UDB add-ins for VS.NET provide a specialized DB2 UDB SQL
editor for writing DB2 UDB SQL statements:
Notice that when I typed in the SELECT * FROM PAULZ statement that
forms the basis of the view, and specified a schema that exists in the
database, followed by a period (.), the Intellisense feature of VS.NET was
invoked. The VS.NET add-in for DB2 UDB enhances the VS.NET Intellisense feature
to be "DB2 UDB-aware."
In the preceding figure, you can see that I am building a
view on the STAFF table. In addition to this, note the syntax colorization of
the keywords. The "DB2 UDB-aware" Intellisense feature is provided
for all wizards that give you the option to enter SQL (for example, the DB2
SQL/PL Stored Procedure wizard also includes this feature), and the DB2 UDB SQL
editor (which I will cover in the next article in this series). This greatly
helps developers navigate their schema.
In addition to this, note the presence of the Validate
SQL button. If you click this button, the SQL statements you enter are validated
(before build or run time) and you can find out if you have mistyped a
statement or selected an object that does not exist in the database. Think
about the productivity enhancements of finding errors before build or run time
this neat little feature can save you a lot of time!
If you recall from Part 1
in this series, this feature is possible because the DB2 UDB add-in creates a
cache of the schema underneath the IBM Explorer window; VS.NET leverages this
cache to perform syntax checking, schema validation, enable offline operations,
and more. The remaining options in this wizard are the same as in the DB2
Create Table wizard.
The DB2 SQL Procedure wizard
From the IBM Explorer, you can also create DB2 UDB stored
procedures: both SQL/PL and common language runtime (CLR) procedures. I will
cover CLR procedures in a future article in this series since it involves the
creation of a class file and its subsequent compilation into an assembly.
The DB2 Create SQL Procedure wizard starts like the DB2
Create View wizard in that you can specify options such as the schema where the
procedure should be created, the schema name, and more. There is a special
window for you to enter the routine's SQL statement - it is hooked up to the DB2
UDB-aware Intellisense feature and the SQL validation engine too, as you saw in
the DB2 Create View wizard.
The DB2 SQL Procedure wizard provides developers with the
ability to browse parameters for the stored procedure they are creating (shown next)
in the same manner as developers who browse columns when creating tables:
This helps minimize data type matching errors and promotes
more productivity as developers can simply 'discover' the appropriate data type
for their variables.
The remaining pages in this wizard are the same as those I
have previously covered with the other wizards.
The DB2 SQL Function wizard
The DB2 SQL Function wizard is very similar to the DB2 SQL Procedure wizard
and lets you create both scalar and table functions. There are some pages that
are specific for functions. For example, you have to specify the return type of
the value for a scalar function:
This wizard is smart enough to take a 'best guess' from the
SQL statement it parses to suggest the return type required for the function
you are creating. The remaining pages in this wizard are similar to those in the
DB2 SQL Procedure wizard.
The DB2 Create Index wizard
The DB2 Create Index wizard lets you quickly create
RID-based indexes on your tables. DB2 UDB also supports other types of indexes such
as dynamic bitmap indexes (which are created automatically when needed), grid
indexes, and block indexes.
You can see in the following figure that you can specify the
schema, the name of the index, the table space in which it should reside, a
comment that describes the index, whether the index will be used to enforce unique
rows in the data, and the table on which you want to create the index:
This wizard also lets you select the column on which you
want the index keys to be created, and the ordering of the RIDs for the index
(ascending or descending):
The remaining pages in this wizard are the same as those you
have seen in the other wizards.
The DB2 Create Trigger wizard
The DB2 Create Trigger wizard lets you create BEFORE, AFTER,
and INSTEAD OF triggers. This wizard has all kinds of pages that accelerate the
time it takes to build DB2 UDB triggers.
The remaining details in this wizard are part of your
homework assignment! I want you to download a free copy of DB2 UDB (more on
that in a bit) and try it out for yourself.
The DB2 Data Adapter wizard
As previously mentioned, I will cover data adapters in a
follow-on article, but for completeness, I wanted to at least mention them here.
Data adapters in DB2 UDB can be used to accelerate the time it takes to develop
applications, enforce best practices, and even expose your routines as IIS Web
methods or DB2 UDB Web services with a simple click of a button. Sounds
interesting doesn't it. It is but you will have to wait for those details.
Wrapping it all up
In this article, I hope you have seen that the DB2 UDB
add-in for VS.NET goes beyond simple explorer features. It also includes a set
of rich wizards that truly make working with a DB2 UDB environment transparent
for .NET developers. These wizards are yet another unique and rich feature that
assists .NET developers in DB2 UDB environments.
Are you ready to try it out for yourself? Get a free trial
copy of a DB2 UDB for Windows® server at: www.ibm.com/software/data/db2/udb/support/downloadv8.html.
You can also get a free copy of DB2 UDB Personal Edition for development
purposes at: http://www14.software.ibm.com/webapp/download/search.jsp?go=y&rs=db2udbpde.
About the Author
Zikopoulos, BA, MBA, is
an award-winning writer and speaker with the IBM Database Competitive Technologies team. He has more than nine years of
experience with DB2 products and has written numerous magazine articles and
books about it. Paul has co-authored the
books: DB2 Version 8: The Official
Guide, DB2: The Complete Reference, DB2
Fundamentals Certification for Dummies,
DB2 for Dummies, and A DBA's
Guide to Databases on Linux. Paul is a DB2 Certified Advanced
Technical Expert (DRDA and Cluster/EEE) and a DB2
Certified Solutions Expert (Business Intelligence and Database Administration).
Currently he is writing a book on the Apache Derby/IBM Derby database. You can
reach him at: email@example.com.
IBM, Clear Case, DB2,
DB2 Universal Database, IBM, Rational, and z/OS are trademarks or registered
trademarks of International Business Machines Corporation in the United States,
other countries, or both.
Windows are trademarks of Microsoft Corporation in the United States, other countries, or both.
UNIX is a
registered trademark of The Open Group in the United States and other countries.
Linux is a
trademark of Linus Torvalds in the United States,
other countries, or both.
product, and service names may be trademarks or service marks of others.
International Business Machines Corporation, 2005. All rights reserved.
The opinions, solutions,
and advice in this article are from the author's experiences and are not
intended to represent official communication from IBM or an endorsement of any
products listed within. Neither the author nor IBM is liable for any of the
contents in this article. The accuracy of the information in this article is
based on the author's knowledge at the time of writing.