<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Blog Response: Lookup fields in Access are evil?</title>
	<atom:link href="http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/feed/" rel="self" type="application/rss+xml" />
	<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/</link>
	<description>Upgrading the software development process one reader at a time.</description>
	<lastBuildDate>Tue, 01 May 2012 06:08:29 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: hazymat</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-1330</link>
		<dc:creator><![CDATA[hazymat]]></dc:creator>
		<pubDate>Mon, 16 Apr 2012 14:39:30 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-1330</guid>
		<description><![CDATA[Hey - NICE reply :)]]></description>
		<content:encoded><![CDATA[<p>Hey &#8211; NICE reply <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: K.Townsend</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-1329</link>
		<dc:creator><![CDATA[K.Townsend]]></dc:creator>
		<pubDate>Mon, 16 Apr 2012 13:42:44 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-1329</guid>
		<description><![CDATA[I agree pretty much with hazy, as well as the assumption about the evils of lookup fields on this particular point: “Lookup fields mask what is really happening, and hide good relational methodology from the user.”

That was a big reason why it took me longer (in the beginning) to understand and implement the true relational db normalization model since it was easier to rely on the lookup fields that others created (and then I created), as a means to link data from other tables.

I’ve seen it happen to many others also, and many have gained a false sense of confidence in being able to build more advanced databases because of the lookup field link to other tables. Fortunately for me, I understood that I didn’t know enough to proceed into deeper waters until the time came.

But cheap imitation practices do delay learning correct practices, as visual conceptualization is a big part of learning and grasping true practices.  Just because Johnny can drive the car around the driveway, doesn’t mean he is ready for the highway.  Same goes for “relational” database theory.

Maybe someone is wondering what I am talking about.  Well, for example, many dept managers gain the false belief that just because someone can present them a database that is “RELATIONAL” -- has data from multiple tables being linked (RELATED) through lookup fields from other tables, that that alone proves that one understands relational db theory, when it is not the case at all.

I’ve seen it many times over, many dept Access database hobbyists come in with a supposed relational database, and thus the boss surely thinks they have arrived at the breakthrough ability that others haven’t figured out in being able to make a db relational.  Now, this may sound crazy, as I am not talking about dummies here, but a dept full of engineers in various other disciplines.

Obviously, advanced users will know how to develop a db with or without lookup fields, but not everyone does.  So, it is my opinion that lookup fields ought to be left for novices learning early Access database operations, and not for developmental databases.

As for the other points about lookup fields being evil, I can’t answer that, as I have not tested out those hypotheses or those rebuttals besides this one point I am making.  But I know this one point to be a FACT, as I have seen a number of databases in advanced stages of cancer where chemo couldn’t even help them – all because the “lookup field” gave Johnny a license to drive when he was not ready!]]></description>
		<content:encoded><![CDATA[<p>I agree pretty much with hazy, as well as the assumption about the evils of lookup fields on this particular point: “Lookup fields mask what is really happening, and hide good relational methodology from the user.”</p>
<p>That was a big reason why it took me longer (in the beginning) to understand and implement the true relational db normalization model since it was easier to rely on the lookup fields that others created (and then I created), as a means to link data from other tables.</p>
<p>I’ve seen it happen to many others also, and many have gained a false sense of confidence in being able to build more advanced databases because of the lookup field link to other tables. Fortunately for me, I understood that I didn’t know enough to proceed into deeper waters until the time came.</p>
<p>But cheap imitation practices do delay learning correct practices, as visual conceptualization is a big part of learning and grasping true practices.  Just because Johnny can drive the car around the driveway, doesn’t mean he is ready for the highway.  Same goes for “relational” database theory.</p>
<p>Maybe someone is wondering what I am talking about.  Well, for example, many dept managers gain the false belief that just because someone can present them a database that is “RELATIONAL” &#8212; has data from multiple tables being linked (RELATED) through lookup fields from other tables, that that alone proves that one understands relational db theory, when it is not the case at all.</p>
<p>I’ve seen it many times over, many dept Access database hobbyists come in with a supposed relational database, and thus the boss surely thinks they have arrived at the breakthrough ability that others haven’t figured out in being able to make a db relational.  Now, this may sound crazy, as I am not talking about dummies here, but a dept full of engineers in various other disciplines.</p>
<p>Obviously, advanced users will know how to develop a db with or without lookup fields, but not everyone does.  So, it is my opinion that lookup fields ought to be left for novices learning early Access database operations, and not for developmental databases.</p>
<p>As for the other points about lookup fields being evil, I can’t answer that, as I have not tested out those hypotheses or those rebuttals besides this one point I am making.  But I know this one point to be a FACT, as I have seen a number of databases in advanced stages of cancer where chemo couldn’t even help them – all because the “lookup field” gave Johnny a license to drive when he was not ready!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hazymat</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-1150</link>
		<dc:creator><![CDATA[hazymat]]></dc:creator>
		<pubDate>Sat, 24 Sep 2011 23:05:22 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-1150</guid>
		<description><![CDATA[You make some decent points. However the overall tone seems to suggest that good database design should be user-centric as opposed to developer-centric. I, of course, don&#039;t plan to disagree with this specifically, but I would like to point out that not all databases are - or should be - designed for the &#039;user&#039;.

For example, even in cases where an end user with no knowledge of the underlying database is the primary operator / owner of the data, a database belonging to a business may care more about business continuity than user experience.

Given that business continuity has many aspects; database portability (lookup fields are not common to all database standards), avoidance of assumptions (in your article you wrote &quot;you have to assume that someone writing queries is not the target of the end-user abstraction provided by lookups&quot; - this is quite some assumption for a mission-critical DB for a corporation), not to mention the fact that multiple people maintain and develop large databases owned by businesses and they may have different views on lookup data and may not assume that a given table uses such functionality - given the above, surely it&#039;s best to avoid using lookup fields when there&#039;s an alternative?

Okay, I know your rebuttal will be that businesses tend not to use MS Access for this very reason, and that MS Access is designed for the end user to make more simple databases rather than big business, but why encourage users (who, let&#039;s face it, may tweak with the database as well) to get into bad habits? And why assume that your little one-man database might not eventually develop into something that *could* become mission critical one day?]]></description>
		<content:encoded><![CDATA[<p>You make some decent points. However the overall tone seems to suggest that good database design should be user-centric as opposed to developer-centric. I, of course, don&#8217;t plan to disagree with this specifically, but I would like to point out that not all databases are &#8211; or should be &#8211; designed for the &#8216;user&#8217;.</p>
<p>For example, even in cases where an end user with no knowledge of the underlying database is the primary operator / owner of the data, a database belonging to a business may care more about business continuity than user experience.</p>
<p>Given that business continuity has many aspects; database portability (lookup fields are not common to all database standards), avoidance of assumptions (in your article you wrote &#8220;you have to assume that someone writing queries is not the target of the end-user abstraction provided by lookups&#8221; &#8211; this is quite some assumption for a mission-critical DB for a corporation), not to mention the fact that multiple people maintain and develop large databases owned by businesses and they may have different views on lookup data and may not assume that a given table uses such functionality &#8211; given the above, surely it&#8217;s best to avoid using lookup fields when there&#8217;s an alternative?</p>
<p>Okay, I know your rebuttal will be that businesses tend not to use MS Access for this very reason, and that MS Access is designed for the end user to make more simple databases rather than big business, but why encourage users (who, let&#8217;s face it, may tweak with the database as well) to get into bad habits? And why assume that your little one-man database might not eventually develop into something that *could* become mission critical one day?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-1033</link>
		<dc:creator><![CDATA[Tim]]></dc:creator>
		<pubDate>Thu, 05 May 2011 11:28:00 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-1033</guid>
		<description><![CDATA[Ran, field lookups are useful for display purposes only. If you want to work with the values, rather than just display them, you need to retrieve the &quot;originals&quot; from the relevant table.

In your example, the field spcFullName contains the foreign key, not the data itself, so if you append &quot; (Chair)&quot;, you&#039;re appending it to the key, which is why you get &quot;2 (Chair)&quot;. 

You need to add the table that the lookup refers to (let&#039;s say it&#039;s called FullNames) to the query, and replace spcFullName with Fullnames.FullName. Your calculated field will then display correctly.]]></description>
		<content:encoded><![CDATA[<p>Ran, field lookups are useful for display purposes only. If you want to work with the values, rather than just display them, you need to retrieve the &#8220;originals&#8221; from the relevant table.</p>
<p>In your example, the field spcFullName contains the foreign key, not the data itself, so if you append &#8221; (Chair)&#8221;, you&#8217;re appending it to the key, which is why you get &#8220;2 (Chair)&#8221;. </p>
<p>You need to add the table that the lookup refers to (let&#8217;s say it&#8217;s called FullNames) to the query, and replace spcFullName with Fullnames.FullName. Your calculated field will then display correctly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-1032</link>
		<dc:creator><![CDATA[Tim]]></dc:creator>
		<pubDate>Thu, 05 May 2011 11:14:33 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-1032</guid>
		<description><![CDATA[I have used lookup fields ever since my first database. It was a design feature that I picked up from an MS sample database. They save a lot of time when working directly with tables (which is very useful in the design stage). 

They have never caused me an issue, and although I read the cited article, I happily ignored it because I recognised that none of the objections applied to my design.

For my latest project, I have done without them, as I intend to upsize it. This article is making me suspect that I have added time and complexity to the design job unnecessarily, which is rather annoying.]]></description>
		<content:encoded><![CDATA[<p>I have used lookup fields ever since my first database. It was a design feature that I picked up from an MS sample database. They save a lot of time when working directly with tables (which is very useful in the design stage). </p>
<p>They have never caused me an issue, and although I read the cited article, I happily ignored it because I recognised that none of the objections applied to my design.</p>
<p>For my latest project, I have done without them, as I intend to upsize it. This article is making me suspect that I have added time and complexity to the design job unnecessarily, which is rather annoying.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ran</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-738</link>
		<dc:creator><![CDATA[Ran]]></dc:creator>
		<pubDate>Wed, 15 Sep 2010 19:18:30 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-738</guid>
		<description><![CDATA[Here’s something strange I can’t wrap my head around.  Maybe you can help.

When placing my lookup field into iif function, which appends text to the field value, I get the id value (instead of the name value).   Consider.

Problem: Append text&quot; (chair)&quot; to Full Name field based on role field value
Solution: Use iif function to append text to field via Expression Builder
Assumption: John Doe is the committee chair

Control group:  =IIf([Role]=&quot;Chair&quot;,[spcFullName],[spcFullName])
Result:   Jane Doe, John Doe, Jack Doe

Test group: =IIf([Role]=&quot;Chair&quot;,[spcFullName] &amp; &quot; (Chair)&quot;,[spcFullName])
Result:   Jane Doe, 2(Chair), Jack Doe

As you can see from the control group, the correct full name value is displayed regardless of whether or not the person’s role is ‘chair.’  As you can see in the test group though, appending text to the full name field (where person’s role IS ‘chair’) resulted in function printing the lookup id  (not the name) value.  

Any idea why the lookup field’s ID is displayed when text with appended via iif function?]]></description>
		<content:encoded><![CDATA[<p>Here’s something strange I can’t wrap my head around.  Maybe you can help.</p>
<p>When placing my lookup field into iif function, which appends text to the field value, I get the id value (instead of the name value).   Consider.</p>
<p>Problem: Append text&#8221; (chair)&#8221; to Full Name field based on role field value<br />
Solution: Use iif function to append text to field via Expression Builder<br />
Assumption: John Doe is the committee chair</p>
<p>Control group:  =IIf([Role]=&#8221;Chair&#8221;,[spcFullName],[spcFullName])<br />
Result:   Jane Doe, John Doe, Jack Doe</p>
<p>Test group: =IIf([Role]=&#8221;Chair&#8221;,[spcFullName] &amp; &#8221; (Chair)&#8221;,[spcFullName])<br />
Result:   Jane Doe, 2(Chair), Jack Doe</p>
<p>As you can see from the control group, the correct full name value is displayed regardless of whether or not the person’s role is ‘chair.’  As you can see in the test group though, appending text to the full name field (where person’s role IS ‘chair’) resulted in function printing the lookup id  (not the name) value.  </p>
<p>Any idea why the lookup field’s ID is displayed when text with appended via iif function?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: johnfx</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-705</link>
		<dc:creator><![CDATA[johnfx]]></dc:creator>
		<pubDate>Thu, 22 Jul 2010 15:27:00 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-705</guid>
		<description><![CDATA[While I don&#039;t agree with your general admonition against lookup fields, you make a good point. I&#039;ve updated the article to reflect the sometimes wonky behavior of lookup fields.

Thanks for your input!]]></description>
		<content:encoded><![CDATA[<p>While I don&#8217;t agree with your general admonition against lookup fields, you make a good point. I&#8217;ve updated the article to reflect the sometimes wonky behavior of lookup fields.</p>
<p>Thanks for your input!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jamesL</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-704</link>
		<dc:creator><![CDATA[jamesL]]></dc:creator>
		<pubDate>Thu, 22 Jul 2010 05:36:57 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-704</guid>
		<description><![CDATA[sorting does NOT work

make a table called Customer.  
make a table called Order that has a CustomerID as a lookup field 

now query Order and sort by CustomerID
a developer gets exactly what he expects: a column sorted numerically.
A user gets something completely confusing: the Customer names are NOT sorted alphabetically. The customer sees alphabetic names in the CustomerID column, but they are NOT sorted alphabetically the way he asked.

Do NOT use look up fields]]></description>
		<content:encoded><![CDATA[<p>sorting does NOT work</p>
<p>make a table called Customer.<br />
make a table called Order that has a CustomerID as a lookup field </p>
<p>now query Order and sort by CustomerID<br />
a developer gets exactly what he expects: a column sorted numerically.<br />
A user gets something completely confusing: the Customer names are NOT sorted alphabetically. The customer sees alphabetic names in the CustomerID column, but they are NOT sorted alphabetically the way he asked.</p>
<p>Do NOT use look up fields</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marc M</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-642</link>
		<dc:creator><![CDATA[Marc M]]></dc:creator>
		<pubDate>Sun, 21 Feb 2010 17:41:52 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-642</guid>
		<description><![CDATA[Excellent counterpoints!!  I had stepped away from using lookup fields after I read that article too.  Thanks for providing some additional insight.]]></description>
		<content:encoded><![CDATA[<p>Excellent counterpoints!!  I had stepped away from using lookup fields after I read that article too.  Thanks for providing some additional insight.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Antti R</title>
		<link>http://improvingsoftware.com/2009/10/02/blog-response-lookup-fields-in-access-are-evil/#comment-403</link>
		<dc:creator><![CDATA[Antti R]]></dc:creator>
		<pubDate>Sun, 04 Oct 2009 07:25:13 +0000</pubDate>
		<guid isPermaLink="false">http://softwareplusplus.wordpress.com/?p=38#comment-403</guid>
		<description><![CDATA[The MVPs really made me scared of lookup fields. I never implemented them. Maybe I should give them a try.]]></description>
		<content:encoded><![CDATA[<p>The MVPs really made me scared of lookup fields. I never implemented them. Maybe I should give them a try.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

