﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Karen Lopez: Musings on Data, Process, and Architecture </title>
    <description>Insights and thoughts about data and IT-related concepts.</description>
    <link>http://www.infoadvisors.com/Home/tabid/36/BlogId/1/Default.aspx</link>
    <language>en-US</language>
    <managingEditor>website@infoadvisors.com</managingEditor>
    <webMaster>karen@Infoadvisors.com</webMaster>
    <pubDate>Thu, 21 Aug 2008 10:32:33 GMT</pubDate>
    <lastBuildDate>Thu, 21 Aug 2008 10:32:33 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 3.4.0.39853</generator>
    <item>
      <title>The da Vinci Code for Relational Theory</title>
      <description>&lt;P&gt;&lt;FONT size=2&gt;From our Book Study of Chris Date's &lt;EM&gt;Database in Depth:&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;I thought that this was a good point in Chapter 1, about why we need to study the foundation upon which our profession is based:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P align=left&gt;&lt;FONT face=Meridien-Roman&gt;&lt;FONT face="Courier, Century" size=2&gt;The point about principles is this: they endure. By contrast, products and technologies (and the SQL language, come to that) change all the time—but principles don’t. For example, suppose you know Oracle; in fact, suppose you’re an expert on Oracle. But if Oracle is all you know, then your knowledge is not necessarily transferable to, say, a DB2 or SQL Server environment (it might even get in the way of your making progress in that new environment). But if you know the underlying principles—in other words, if you know the relational model—then you have knowledge and skills that will be transferable: knowledge and skills that you’ll be able to apply in every environment and that will never be obsolete.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT face=Meridien-Roman&gt;&lt;/FONT&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;So we've all probably studied a bit about normalization, perhaps some about surrogate keys, primary keys, and the specific syntax of our DBMS's implementation of SQL, but have we studied those tool and vendor independent topics that allow our skills to be transferable?&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;I thought that I had a clear distinction in my mind until I sat down one day to work in Oracle.  I needed to get some sample data out of an Oracle database and I normally do this by building a query, then limiting it to the TOP 100 rows.  Guess what?  TOP 100 works just fine in SQL Server, but Oracle doesn't have a clue what to do with that syntax.  It seemed so straight forward to me...&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;Date goes on to say:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier, Century"&gt;Although it’s certainly possible to use SQL relationally (for the most part, at any rate), sometimes you’ll find&lt;/FONT&gt;&lt;FONT face="Courier, Century"&gt;—because existing implementations are so far from perfect—that there are severe performance penalties for doing so...in which case you might more or less be forced into doing something not "truly relational" (like writing a query in some weird and unnatural way in order to get the implementation to use an index). However, I believe very firmly that you should always make such compromises and trade-offs from a position of conceptual strength. That is:&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier, Century"&gt;•&lt;/FONT&gt;&lt;FONT face="Courier, Century"&gt; You should understand what you’re doing when you do have to make such a compromise.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier, Century"&gt;•&lt;/FONT&gt;&lt;FONT face="Courier, Century"&gt; You should know what the theoretically correct situation is, and you should have very good reasons for departing from it.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier, Century"&gt;•&lt;/FONT&gt;&lt;FONT face="Courier, Century"&gt; You should document those reasons, too, so that if they go away at some future time (for example, because a new release of the product you’re using does a better job in some respect), then it might be possible to back off from the original compromise.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier, Century"&gt;The following quote&lt;/FONT&gt;&lt;FONT face="Courier, Century"&gt;—which is attributed to Leonardo da Vinci (1452–1519) and is thus some 500 years old!—&lt;/FONT&gt;&lt;FONT face="Courier, Century"&gt;sums up the situation admirably:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Courier, Century"&gt;&lt;FONT size=2&gt;&lt;FONT color=#a52a2a&gt;&lt;STRONG&gt;Those who are enamored of practice without theory are like a pilot who goes into a ship without rudder or compass and never has any certainty where he is going. &lt;EM&gt;Practice should always be based on a sound knowledge of theory.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier, Century" size=2&gt;(OK, I [Date] added the italics.)&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;I think that is a brilliant quote, and this position (Practice should always be based on a sound knowledge of theory.) forms the beginning of every professional career, except for IT. &lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;Where are your foundations?  In a three ring binder that you threw out to make way for the newest set of language references for you DBMS?  In a help file?  Still looking for them?&lt;/FONT&gt;&lt;/P&gt;</description>
      <link>http://www.infoadvisors.com/Home/tabid/36/EntryID/74/Default.aspx</link>
      <author>website@infoadvisors.com</author>
      <comments>http://www.infoadvisors.com/Home/tabid/36/EntryID/74/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.infoadvisors.com/Default.aspx?tabid=36&amp;EntryID=74</guid>
      <pubDate>Mon, 05 Jun 2006 21:38:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.infoadvisors.com/DesktopModules/Blog/Trackback.aspx?id=74</trackback:ping>
    </item>
  </channel>
</rss>