Results 1 to 4 of 4
  1. #1
    kd2017 is offline Well, I tried at least.
    Windows 10 Access 2016
    Join Date
    Jul 2017
    Posts
    1,142

    Normalization Exceptions

    Purely for sake of discussion I'm curious to hear some different perspectives on this:

    • under what circumstances do you break normalization rules?
    • To what degree do you normalize? Which minimal 'normal form' do you strive to achieve?


  2. #2
    Minty is offline VIP
    Windows 10 Office 365
    Join Date
    Sep 2017
    Location
    UK - Wiltshire
    Posts
    3,002
    I think June (and others) have frequently used the expression
    "Normalise until it hurts, then denormalise until it works!"

    There is a lot of good reading directly related to this question in this thread
    https://stackoverflow.com/questions/...ize-a-database

    In my experience there are times when for the sake of performance or simplicity of design, you deliberately store something somewhere you shouldn't.
    E.g. a grand parent ID in a "child of a child" table that is available through the first child because I have to duplicate all the sub-records and it simplifies the process.
    DLookup Syntax and others http://access.mvps.org/access/general/gen0018.htm
    Please use the star below the post to say thanks if we have helped !
    ↓↓ It's down here ↓↓

  3. #3
    kd2017 is offline Well, I tried at least.
    Windows 10 Access 2016
    Join Date
    Jul 2017
    Posts
    1,142
    Quote Originally Posted by Minty View Post
    In my experience there are times when for the sake of performance or simplicity of design, you deliberately store something somewhere you shouldn't.
    E.g. a grand parent ID in a "child of a child" table that is available through the first child because I have to duplicate all the sub-records and it simplifies the process.
    This is exactly what I'm experimenting with at the moment and what prompted this post.

    I'm testing whether or not it's reasonable to some how use grandparent id to simply enforce data integrity.

    For example, [Table A] has children [Table B] and [Table C], and [Table B] and [Table C] together have child [Table D].
    For each row in [Table D], the parents in [Table B] and [Table C] must have the same grandparent from [Table A]. How to *easily* enforce this without code or triggers? Include [Table A]'s id within [Table D] and link up relationships by using multiple fields...?
    For illustrative purposes only:
    Click image for larger version. 

Name:	Untitled.png 
Views:	22 
Size:	7.0 KB 
ID:	50295

    We have redundant unique indexes in B and C, and a redundant grandparent key in D which is a normalization violation, but as far as I can tell it's a *hack* that enforces the rule given above... after all, enforcing *data integrity* is the prime directive isn't it?

  4. #4
    Amicron's Avatar
    Amicron is offline Access Guru
    Windows 7 32bit Access 2010 32bit
    Join Date
    Nov 2011
    Location
    Amherst, New York (near Buffalo)
    Posts
    31
    I will denormalize tables sometimes in order to speed up a really slow performing database. For example if you run a lot of reports that depend on the amount that a customer has spent with you over their lifetime you may want to store that value in the customer table which goes against normalization rules but will definitely speed up your reports. I made a video about it here.

Please reply to this thread with any new information or opinions.

Similar Threads

  1. Proper Case and Exceptions
    By bcarter17 in forum Access
    Replies: 31
    Last Post: 09-24-2021, 01:58 PM
  2. Adding Exceptions to SQL's ORDER BY Statement
    By ohmydatabase in forum Access
    Replies: 9
    Last Post: 08-23-2017, 02:27 PM
  3. Allow edits with exceptions
    By boboivan in forum Access
    Replies: 11
    Last Post: 05-30-2016, 07:27 AM
  4. Replies: 4
    Last Post: 11-02-2012, 11:00 PM
  5. delete query with exceptions
    By Jerseynjphillypa in forum Queries
    Replies: 3
    Last Post: 07-11-2012, 08:07 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums