<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Tony's Microsoft Access Blog : Database Design</title><link>http://msmvps.com/blogs/access/archive/tags/Database+Design/default.aspx</link><description>Tags: Database Design</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Building Scalable Databases: Perspectives on the War on Soft Deletes</title><link>http://msmvps.com/blogs/access/archive/2009/11/23/building-scalable-databases-perspectives-on-the-war-on-soft-deletes.aspx</link><pubDate>Tue, 24 Nov 2009 06:01:54 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1741889</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1741889</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1741889</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/11/23/building-scalable-databases-perspectives-on-the-war-on-soft-deletes.aspx#comments</comments><description>&lt;p&gt;This blog posting titled &lt;a href="http://www.25hoursaday.com/weblog/2009/11/23/BuildingScalableDatabasesPerspectivesOnTheWarOnSoftDeletes.aspx" target="_blank"&gt;Building Scalable Databases: Perspectives on the War on Soft Deletes&lt;/a&gt; is interesting reading describing what to do with deleted data.&amp;#160; The author comes to the correct conclusion, because he agrees with my viewpoint &amp;lt;smile&amp;gt;, that you model the business situation and mark records as inactive, canceled, etc.&amp;#160;&amp;#160; You seldom need or want to truly delete data.&lt;/p&gt;  &lt;p&gt;I used to have an inactive flag on the equipment in the &lt;a href="http://granitefleet.com/" target="_blank"&gt;Granite Fleet Manager&lt;/a&gt;.&amp;#160; That worked for quite a while until I had someone tell me that they have reserve equipment that is only used when the California wild fires are rampant.&amp;#160; These fire engines are paid for by the state of California and stashed at various fire halls in strategic locations.&amp;#160; They are all identical.&amp;#160; Thus fire crews from outside the affected crews have already trained on that equipment and know how to use it.&amp;#160;&amp;#160; So now I have a status combo box which includes Reserve and Out of Service.&amp;#160; The Out of Service is meant for the situation where a given unit will be unavailable for a period of time longer than a few days.&amp;#160; For example maybe the boiler needs an inspection or the mechanic is waiting for parts to come from overseas.&lt;/p&gt;  &lt;p&gt;P.S.&amp;#160; I almost always add a general purpose comment memo field to strategic tables such as the equipment and the service order field.&amp;#160; And you can search in those fields.&amp;#160;&amp;#160; Because no matter how many explicit fields you create the users can always think up a few more but don’t have any place to put the random data.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1741889" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Database+Design/default.aspx">Database Design</category><category domain="http://msmvps.com/blogs/access/archive/tags/Granite+Fleet+Manager/default.aspx">Granite Fleet Manager</category></item><item><title>School sends letter to parents of dead teenager complaining about her poor attendance</title><link>http://msmvps.com/blogs/access/archive/2009/03/25/school-sends-letter-to-parents-of-dead-teenager-complaining-about-her-poor-attendance.aspx</link><pubDate>Thu, 26 Mar 2009 04:04:09 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1681500</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1681500</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1681500</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/03/25/school-sends-letter-to-parents-of-dead-teenager-complaining-about-her-poor-attendance.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.mirror.co.uk/news/top-stories/2009/03/25/school-sends-parents-of-dead-teenager-letter-complaining-about-her-poor-attendance-115875-21227064/" target="_blank"&gt;School sends letter to parents of dead teenager complaining about her poor attendance&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The relevant paragraph is:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;He said: &amp;quot;Unknown to the school, Megan&amp;#39;s details had remained in a different part of the computer system and were called up when the school did a mail merge letter to the parents of all Year 11 students. The letter called up details of each student&amp;#39;s attendance for the whole year to date and because Megan had been on roll in September, she was included.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;As heartbreaking as this story is I can see how easily this could happen.&amp;nbsp; Furthermore if a power user created their own query and did their own mail merge that makes this problem even easier to happen.&lt;/p&gt; &lt;p&gt;Mind you that bit about details in a different part of the computer system sounds like bad data normalizing.&lt;/p&gt; &lt;p&gt;I frequently have an Inactive Yes/No field on my tables as appropriate.&amp;nbsp;&amp;nbsp; And frequently it&amp;#39;s somewhere near the end of the list of fields so it&amp;#39;s easy to miss for someone not thinking about such.&lt;/p&gt; &lt;p&gt;In the &lt;a href="http://www.granitefleet.com/" target="_blank"&gt;Granite Fleet Manager&lt;/a&gt; on the equipment table I went a step further.&amp;nbsp; I have a status field linked to a status table.&amp;nbsp; This handles the situation where equipment is temporarily out of service due to lengthy maintenance/rebuilds, loaned out to other organizations or whatever the client desires.&amp;nbsp; That status table has a Yes/No Inactive flag.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1681500" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://msmvps.com/blogs/access/archive/tags/Database+Design/default.aspx">Database Design</category></item><item><title>"Slacker DBs" Vs. Old-Guard DBs</title><link>http://msmvps.com/blogs/access/archive/2009/03/24/quot-slacker-dbs-quot-vs-old-guard-dbs.aspx</link><pubDate>Tue, 24 Mar 2009 20:06:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1681099</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1681099</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1681099</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/03/24/quot-slacker-dbs-quot-vs-old-guard-dbs.aspx#comments</comments><description>&lt;p&gt;A very interesting summary at &lt;a href="http://tech.slashdot.org/article.pl?sid=09/03/24/1744227&amp;amp;from=rss" target="_blank"&gt;Slashdot - &amp;quot;Slacker DBs&amp;quot; Vs. Old-Guard DBs&lt;/a&gt; on an InfoWorld article &lt;a href="http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&amp;amp;A=/article/09/03/24/12TC-databases_1.html" target="_blank"&gt;Test Center: Slacker databases break all the old rules&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I saw this problem from a different perspective in 2000 or so when I purchased my &lt;a href="http://en.wikipedia.org/wiki/Palm_Vx" target="_blank"&gt;Palm Vx&lt;/a&gt;.&amp;nbsp;&amp;nbsp; I was taken aback to only see room for exactly five phone numbers and/or email addresses.&amp;nbsp;&amp;nbsp; But when I thought about it I realized that was a reasonable limitation given that the concept of Joins almost certainly isn&amp;#39;t built into the Palm OS and program.&amp;nbsp; I quite liked the Palm desktop interface and so that&amp;#39;s where I entered much of my information.&lt;/p&gt; &lt;p&gt;A while later my sister purchased a Palm but was using the contact manager built into Outlook.&amp;nbsp;&amp;nbsp; She occasionally had more than the five contact means in Outlook and was rather ticked that the sixth or seventh wouldn&amp;#39;t import.&amp;nbsp; &lt;/p&gt; &lt;p&gt;But getting back to cloud computing.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Microsoft is joining the cloud as well with SQL Server under the name &lt;a href="http://www.microsoft.com/azure/data.mspx" target="_blank"&gt;Microsoft SQL Data Services&lt;/a&gt; as part of the Azure Services Platform.&amp;nbsp;&amp;nbsp; This is a good thing as I really, really like relational data systems.&amp;nbsp; With all the other utilities and safeguards available when MS comes at this problem from the SQL Server perspective. &lt;/p&gt; &lt;p&gt;The perspective that folks with no relational database experience bring rather concerns me.&lt;/p&gt; &lt;p&gt;An example of this is MS bringing in &lt;a href="http://en.wikipedia.org/wiki/Windows_NT" target="_blank"&gt;Dave Cutler to lead the Windows NT 3.1 team&lt;/a&gt; with their multi user, multi tasking experience.&amp;nbsp; The DOS based folks at MS would&amp;#39;ve stumbled badly and, in my not so humble opinion, could&amp;#39;ve done a better job in the Windows 95, 98 and ME family.&lt;/p&gt; &lt;p&gt;For example, formatting a floppy in Windows 95/98 or ME took over the entire system.&amp;nbsp; You couldn&amp;#39;t do anything else.&amp;nbsp; And yet within OS/2, a true multi tasking system, you didn&amp;#39;t notice a floppy being formatted and the task manager showed it only took a few percentages of the CPU.&lt;/p&gt; &lt;p&gt;That all said I can understand why Facebook or other huge non critical sites with hundreds of millions of records would deliberately denormalize their data.&amp;nbsp;&amp;nbsp; For example denormalizing the contact info or website&amp;#39;s would drastically reduce CPU and disk access times thus improving response times.&lt;/p&gt; &lt;p&gt;On the fourth hand all my apps are going to be properly normalized!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1681099" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://msmvps.com/blogs/access/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://msmvps.com/blogs/access/archive/tags/Database+Design/default.aspx">Database Design</category></item><item><title>The Manga Guide to Databases</title><link>http://msmvps.com/blogs/access/archive/2008/10/09/the-manga-guide-to-databases.aspx</link><pubDate>Fri, 10 Oct 2008 05:32:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1650403</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1650403</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1650403</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2008/10/09/the-manga-guide-to-databases.aspx#comments</comments><description>&lt;p&gt;&amp;quot;Want to learn about databases without the tedium? With its unique combination of Japanese-style comics and serious educational content, The Manga Guide to Databases is just the book for you. &lt;/p&gt; &lt;p&gt;Princess Ruruna is stressed out. With the king and queen away, she has to manage the Kingdom of Kod&amp;#39;s humongous fruit-selling empire. Overseas departments, scads of inventory, conflicting prices, and so many customers! It&amp;#39;s all such a confusing mess. But a mysterious book and a helpful fairy promise to solve her organizational problems—with the practical magic of databases. &amp;quot; &lt;p&gt;More at &lt;a href="http://www.amazon.com/gp/product/1593271905" target="_blank"&gt;The Manga Guide to Databases&lt;/a&gt; (That&amp;#39;s a link to a page at Amazon but I did not put in any associate code of any sort.) &lt;p&gt;&amp;lt;rhetorical comment&amp;gt;But will it teach Access subforms?&amp;lt;/rhetorical comment&amp;gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1650403" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Database+Design/default.aspx">Database Design</category></item><item><title>No indexes on a 2.2 million record table?</title><link>http://msmvps.com/blogs/access/archive/2008/07/08/no-indexes-on-a-2-2-million-record-table.aspx</link><pubDate>Tue, 08 Jul 2008 23:46:22 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1639876</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1639876</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1639876</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2008/07/08/no-indexes-on-a-2-2-million-record-table.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://thedailywtf.com/Articles/Hastening-an-Inevitable.aspx" target="_blank"&gt;Hastening an Inevitable&lt;/a&gt;&amp;nbsp; Now this is truly ridiculous and very worth of a WTF page.&amp;nbsp; &lt;/p&gt; &lt;p&gt;This page also illustrates how CPU speed isn&amp;#39;t that important.&amp;nbsp; 150 Mhz systems.&amp;nbsp; Hard drive speed is where you should be spending the money on a server.&amp;nbsp; RAM is also important but relatively inexpensive.&amp;nbsp; Of course I&amp;#39;m over simplifying as there are many other factors such as network interface, switches and so forth.&lt;/p&gt; &lt;p&gt;I had a 10,000 record table of names and addresses in Access 2.0 on a 486.&amp;nbsp; To lookup a name with no index took 25 seconds.&amp;nbsp;&amp;nbsp; Once I added the index it was so fast I couldn&amp;#39;t really time it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1639876" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Wry+Humour+maybe/default.aspx">Wry Humour maybe</category><category domain="http://msmvps.com/blogs/access/archive/tags/Database+Design/default.aspx">Database Design</category></item><item><title>Duplicate names and birth dates</title><link>http://msmvps.com/blogs/access/archive/2008/05/03/duplicate-names-and-birth-dates.aspx</link><pubDate>Sun, 04 May 2008 05:13:33 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1612740</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1612740</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1612740</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2008/05/03/duplicate-names-and-birth-dates.aspx#comments</comments><description>&lt;p&gt;Ken Sheridan, long time resident of the Microsoft Access newsgroups, posted a &lt;a href="http://groups.google.ca/group/microsoft.public.access/msg/6b3c623ec973ff55" target="_blank"&gt;very interesting paragraph in a thread title Duplicates&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;A year or so ago I witnessed a remarkable coincidence when attending a&amp;nbsp; hospital clinic.&amp;nbsp; Two patients, both female, both with the same date of birth&amp;nbsp; and both with the same names were attending.&amp;nbsp; I happened to overhear the staff talking about it and it appeared that the &amp;#39;key&amp;#39; used for identifying&amp;nbsp; patients was a combination of name, gender and date of birth, so the staff were having difficulty distinguishing the medical notes of one from the&amp;nbsp; other.&amp;nbsp; One wonders what might have happened if they hadn&amp;#39;t spotted the problem!&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;My brother, who shares my last name Toews, has a very troublesome time whenever stopped by the police, which seldom happens, or whenever he crosses the border into the U.S.A.&amp;nbsp; Turns out he has the same first, middle and last name and birth date with a Canadian who has a lengthy criminal record.&amp;nbsp; My brother now adds an hour to his estimated border crossing times.&amp;nbsp;&amp;nbsp; Although his last crossing they must&amp;#39;ve had a photo of the bad guy.&amp;nbsp; He was being interrogated in a side room when another US Border guy came in and told them that it was someone else.&lt;/p&gt; &lt;p&gt;Of course then there&amp;#39;s &lt;a href="http://www.georgeforeman.com/familyman.html" target="_blank"&gt;George Foreman&amp;#39;s five boys named George.&lt;/a&gt; &lt;p&gt;The point to my posting being that you can&amp;#39;t use name and birth date as a unique key.&amp;nbsp;&amp;nbsp;&amp;nbsp; This also goes for corporation names.&amp;nbsp;&amp;nbsp; There could conceivably be duplicate names in provinces and states as these are usually provincially/state incorporated.&amp;nbsp;&amp;nbsp; Also if you are dealing with different branches of the same company you will likely want to include city and province in your inquiry screens.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1612740" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Database+Design/default.aspx">Database Design</category></item></channel></rss>