473,385 Members | 1,893 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Normalization Table Levels

RockKandee
89 64KB
I need some advice with the normalization of my database.

I am using Access 2013 with Windows 8

I have tables that are different levels. The bottom level table is an in progress table. It has many fields that only hold data for current projects. Once the project is completed, a history table is appended with the appropriate data from other tables and the in progress record is deleted. I have no need to store the in progress data.

I have different project types where I need an in progress table. The in progress fields share a couple of fields but not many.

For example - One project type may need 30 fields and another project type may need 4 of those fields, while another may need 4 fields in common plus 10 additional fields.

My question is:

Should I use one huge in progress table or should I use a separate in progress table for each project?

I am not sure which would be more normalized. Since the in progress table will not have very many records at once, I am not sure if it is better to expand the number of fields, even if some are not needed in every case, or if it is better to have several smaller tables.

Thanks in advance for taking the time to read.
Jan 13 '14 #1

✓ answered by NeoPa

Having a separate table for historical stuff is often a bad approach even. A small amount of info can differentiate the project data in progress and that which is historical. The design of the data doesn't change vastly at that point, so why is another table necessary. When someone wants to enquire of data across live and historical projects you are stuck with non-updatable UNION queries. This is something normalisation does for you if you let it.

It's hard, without knowing your project in as much details as you do, to know if separate tables may be of any benefit when different types require different information. In general though, the more you can fit together into a single table, the more benefit you can get from the RDBMS (in this case Access) being able to manipulate the data for you.

This is not a definitive answer, as I say I don't know your database as well as I would need to to answer reliably, but it's a fairly confident pointer to avoid creating more tables unless called upon to by the concepts of normalisation.

I hope you find that helpful Kandee.

6 1165
zmbd
5,501 Expert Mod 4TB
Have you read thru this: > Database Normalization and Table Structures. ?
Jan 13 '14 #2
RockKandee
89 64KB
Yes I have read this as well as other articles about normalization. My question stands. I am unclear how to handle the in progress table(s). Thanks
Jan 13 '14 #3
zmbd
5,501 Expert Mod 4TB
After a few hundred posts my mind goes a little soft (^_^)

Kind of hard to follow what you have there... this is what I'm thinking:

tbl_project
[project_pk]autonumber
[project_name]text(50)
[project_.... directly related fields no-data]

tbl_progress
[progress_pk]autonumber
[progress_fk_project]numeric(long) 1:m tbl_project
[progress_parameter]
[progress_data]

so, say you have Project = Train ZMBD how to dive
tbl_project
[project_pk]=100
[project_name]="Train ZMBD how to dive"
[project_certificationissued]=#01/01/2014# (I wish (-_^) )

tbl_progress
---record 780
[progress_pk]=780
[progress_fk_project]=100
[progress_parameter]=facemaskfitting(now this might be a related table)
[progress_data]=pass
---record 781
[progress_pk]=781
[progress_fk_project]=100
[progress_parameter]=divetimecalc
[progress_data]=pass
etc....

Now your table progress can have as many records as you need... say 30 steps for me and only 8 to recertify ADezii

Once you're done, DELETE query on [progress_fk_project]=100
Jan 13 '14 #4
NeoPa
32,556 Expert Mod 16PB
Having a separate table for historical stuff is often a bad approach even. A small amount of info can differentiate the project data in progress and that which is historical. The design of the data doesn't change vastly at that point, so why is another table necessary. When someone wants to enquire of data across live and historical projects you are stuck with non-updatable UNION queries. This is something normalisation does for you if you let it.

It's hard, without knowing your project in as much details as you do, to know if separate tables may be of any benefit when different types require different information. In general though, the more you can fit together into a single table, the more benefit you can get from the RDBMS (in this case Access) being able to manipulate the data for you.

This is not a definitive answer, as I say I don't know your database as well as I would need to to answer reliably, but it's a fairly confident pointer to avoid creating more tables unless called upon to by the concepts of normalisation.

I hope you find that helpful Kandee.
Jan 14 '14 #5
RockKandee
89 64KB
I get most of the explanations above, I think ;)

Sounds like both of you agree all info should be in one table.

It would make it easier to keep it all in one table. I can't think of any benefit in using more than one table other than my human brain feels like it should be separated.

I just wanted to make sure that using 1 table still makes it normalized. Sounds like it does, if I understand the above correctly.

Thanks very much zmbd (rest that brain and learn to SCUBA!)

So I should merge my History table in with my In Progress table and let my Forms/Reports/Queries sort it out, correct? I see how that would make life much easier, I was just fighting with the clean up bug. Don't need it = make it go away - LOL

Thanks NeoPa - kisses
Jan 14 '14 #6
NeoPa
32,556 Expert Mod 16PB
It sounds like you get what was being said Kandee. Less is more.
Jan 14 '14 #7

Sign in to post your reply or Sign up for a free account.

Similar topics

3
by: JoeB | last post by:
I found an interesting thread on this from Nov., 2000, but it didn't fully answer my question. I understand normalization, but am trying to find the line between good database design and personal...
1
by: E.U. | last post by:
Hi, I an using MS-Access in order to build a site. I have this item that can have upto 10 pictures (might have none) I want to design a dynamic table which has the ID of the item at the first...
7
by: John Welch | last post by:
I have three tables and the way they are currently set up violates good normalization, but I'm having trouble figuring out a better way. Can someone suggest a more elegant solution? My tables...
9
by: PeteCresswell | last post by:
I've got something called "Reference Rates". The idea is that on a given day, we have various rates of return for various entities. e.g. Libor 3-month return, Libor 6-month return, US Treasury...
2
by: Takeadoe | last post by:
Dear NG, In an earlier post to the group, I was trying to find and easy way to calculate %change estimates between years for a group of variables. My data looks like this: Year County VarA...
76
MMcCarthy
by: MMcCarthy | last post by:
Normalisation is the term used to describe how you break a file down into tables to create a database. There are 3 or 4 major steps involved known as 1NF (First Normal Form), 2NF (Second Normal...
20
by: hippomedon | last post by:
Hello everyone, I'm looking for some advice on whether I should break the normalization rule. Normally, I would not consider it, but this seems to be a special case. I have created an...
2
klarae99
by: klarae99 | last post by:
Hello, I am working in Access 2003 to create a database to record information about an annual fundraiser. I was hoping someone could review my table structure and make sure that it is normalized...
4
by: CD Tom | last post by:
I am using Access 2007. I have a table that has a member number and up to eighteen different times. Table has Col. MbrNumber Time1, time2 etc. I want to be able to eliminate the fastest of the 18...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.