A number of folks have asked me to create a post of a PostgreSQL installation on Windows. So, here is my step-by-step PostgreSQL 9.3 installation.
Download PostgreSQL Database
You can start the download of PostgreSQL from this site. It leads you to the EnterpriseDB site, where you can download the prepackaged software.
Install PostgreSQL 9.3 on Windows
These steps walk you through installing PostgreSQL and the the pgJDBC v9.3, psqlODBC (32 (more...)
There are good places and bad places for an IT department in an organization.
Some organizations tuck the IT department away in some corner of the org chart, but that means that they miss out on IT as an engine of growth.
The above graphic is from my weekly “Technology That Fits” newsletter, where this week’s issue explains more about how IT fits into an organization. You can sign up for the newsletter here.
Somebody asked me if there was a cheaper alternative to using the Embarcadero data modeling tools. I said sure, you can use the MySQL Workbench. My friend laughed and said, it’s to model Oracle databases and they use different data types. I broke the news to him that he can create his own user defined types and use MySQL Workbench to model problems for the Oracle Database 11g.
For example, you can launch the (more...)
is_still_unnormalized_after add (
surrogate_key_id integer primary key,
Normalization is to do with the dependencies between the (business) attributes. As surrogate keys are additional system generated identifiers, they do nothing to change the dependencies between the original attributes!
After a presentation by Lucas Jellema I decided to try something with types in Oracle. One of the issues posed in this presentation was that the type cannot include self-reference. Neither direct nor indirect.
A table like the emp table cannot be expressed as an object type. The table has a column mgr which is a reference to another employee.
So I tried something like this:
I just had dinner with a very successful consulting colleague, and he told me he was returning his new BMW because he hated the software. Instead, was getting a Porsche that has physical buttons for the controls instead the touchscreen in the BMW.
He was happy with everything else about the car, but a poorly designed interface killed the deal. Just because you can add fancy features like a touchscreen doesn’t always mean you should. (more...)
One of my students asked how to convert MySQL Workbench’s default Crow’s Foot (IE) diagram to one of the other supported formats – Classic, Connect to Columns, UML, and IDEF1X. Crow’s Foot is also known as the Information Engineering Model method (covered in Chapter 3 of my MySQL Workbench: Data Modeling & Development.
It quite simple, you open the Model Overview window, click on the Model menu choice. In the dialog, click (more...)
Do any of you use (or plan to use) VirtualBox on a MacBook Pro? If so, be warned that there are some bug reports claiming instability or poor performance of some VMs. In my case, I wanted to use 2 CPUs in my Linux/Oracle VM; when I did, some Oracle tests ran twice as slow […]
Instead of calling a function, when you can get the same effect by accessing a documented PL/SQL variable, you should. For example:
v('APP_USER') = APEX_APPLICATION.g_user
v('REQUEST') = APEX_APPLICATION.g_request
v('APP_ID') = APEX_APPLICATION.g_flow_id
v('APP_PAGE_ID') = APEX_APPLICATION.g_flow_step_id
v('DEBUG') = APEX_APPLICATION.g_debug
g_debug is a boolean, unlike the
There’s more here: documentation for the APEX_APPLICATION package
I suspect that the implementation of
v() is something like this:
FUNCTION v (p_name IN (more...)
A long tail is a distribution of some data point where a few data point have a high value, but most of the data points have a much lower value. When sorting the data points by value, there will be a large “head” and a long “tail”.
Application usage displays the “long tail” characteristic: A few screens are used much more than others.
If you are re-developing your application, for example moving from Oracle Forms (more...)
I dropped a materialized view (without the preserve table option), but the object still exists! Here’s a copy and paste from my session:
drop materialized view gone_for_good;
materialized view GONE_FOR_GOOD dropped.
where synonym_name = 'GONE_FOR_GOOD';
no rows selected
How did this happen? Answers in the comments!
The MySQL DB Development group posed a questions on how to handle images. Naturally, the argument always goes: Should images be deployed in the database or the file system? I believe they should be stored in the database because the cost and time associated is too high with regard to managing files, a file naming schema, and backing up the file system discretely from the database.
Since there’s a significant difference between the backup of (more...)
Back on the film quizzes this time with a mathematical twist for the clues:
where power(e, i * pi) + 1 = 0;
where length = (1 + sqrt(5)) / 2;
where height = width
and width = depth;
where (x * x) + (y * y) (more...)
firstname.lastname@example.org > select banner from v$version;
Oracle Database 12c Enterprise Edition Release 184.108.40.206.0 - 64bit Production
PL/SQL Release 220.127.116.11.0 - Production
CORE 18.104.22.168.0 Production
TNS for Linux: Version 22.214.171.124.0 - Production
NLSRTL Version 126.96.36.199.0 - Production
email@example.com > select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
firstname.lastname@example.org > ! (more...)
There’s no thrill in easy sailing when skies are clear and blue, there’s no joy in merely doing things which any one can do. But there is some satisfaction that is might sweet to take, when you reach a destination that you thought you’d never make. - Unkown Filed under: Quotes, […]
Chris Saxon posted a nice quiz regarding a pitfall when creating tables with VARCHAR2-columns: when you are not explicit in specifying the length-semantics ( CHAR or BYTE ), a session parameter, which may vary, is used.
This is a short follow-up of his story, which shows more pitfalls when creating views and selecting from those.
We end up in a structure which can – by definition – contain only 1 byte, but actually shows containing (more...)