if you want to see the ludicrous ends to which the concept of portability can be pushed, check this article --
Database design for platform independence
It starts out with great intentions, but immediately makes two suggestions that I would call "howlers" -- don't use stored procedures and don't use joins. I can understand where the author is coming from, but that's ridiculous, and as one person stated in the comments posted to the article, it shows "how a corporate dictum like 'All database applications must be independent of vendor specific features' is not only impractical but dangerous. What pointy headed manager came up with this?"
Even more hilarious were the descriptions of the types of joins (as if that mattered, since you shouldn't be using them) --
* Join
Joins are powerful SQL commands for creating tables from data that is retrieved from multiple sources.
* Equi-Join
Equi-Joins are formed by retrieving all the data from two separate sources and combining it into one, large table.
* Inner/Outer Join
Inner Joins are joined on the inner columns of two tables. Outer Joins are joined on the outer columns of two tables.
* Left/Right Join
Left Joins are joined on the left columns of two tables. Right Joins are joined on the right columns of two tables.
* Compound/Complex Joins
There are also other kinds of joins -- left/inner, left/outer, right/inner, and right/outer.
In the comments posted after the article, the author gets duly reamed for those definitions. It's sad, really.
There was a nice attempt to identify "safe" datatypes. Anyone who has migrated an autonumber or identity field to an Oracle sequence number will know the effect that this can have on SQL. But would you avoid using a generated number just to make the application "cross-database"? That'd be silly. Even the author says some datatypes, like Microsoft Access' AUTONUMBER, "are quite handy."
rudy
(the bulk of the above is from my sql blog entry,