473,421 Members | 1,516 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,421 software developers and data experts.

Are my Table Sturctures Nomalized and will they do what I want?

klarae99
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 correctly and that it is set up to do what I would like it to do. I have some doubts on my current table structure and I would really appreciate any suggestions for improvement before I move on to creating my data entery forms.

The purpose of this database is to record infomation for our annual MIC golf tournament fundraiser. We have three different types of supporters for our golf tournament (sponsors- who donate money, donors- who provide us with raffle prizes and golfers- who actually golf). Some sponsors are entitled to free golfers and some golfers are self sponsored only for golfing. In addition some sponsors also donate to the MIC. So I want to create table that record the contact information for each organization and then have a subtable for sponsors and donors (with golfers being a subtable to sponsors). I also created tables to use in cascading combo boxes and for option groups. I think that most of the setup is pretty basic for this type of database, but there is one area that is causing me trouble.

That area is how to set up the tables that deal with sponsorship levels, their fees, and the program ads they are entitled to. My original thought was to create a table for sponsorship level that would include a fee column and an ad size column. This way I could select the sponsorship level and the other two fields would fill in automatically (a combobox, text box cascade). I thought that this would work well because we typically have the same levels year after year (Title, Emerald, Shamrock, Harp, Green/Tee, Foursome, Golfer, In-Kind, Ad Only and Other) But then I realized that this could cause problems if later MICs had a different fee for each level, changing the level table would change the fee in all the old enteries. In addition I realized that some of our sponsorship levels (Other and Ad Only) have multiple fees and some (Other and In-Kind) have multiple ad sizes. Some sponsors do not get an ad but I am willing to use an ad size of none for them. Currently I have tried to set up as three cascading comboboxes but I am hoping there is a better way to do this; Most of my sponsors will have only one chioce in the last two comboboxes and that seems like a waste of time when data entering. I thought about seperating out Other, Ad Only and In-Kind into their own cascades but that seems be go against normalization and would create a lot of fields that do not apply to all sponsors; additionally it would be harder for me to create a report summarizing the Ads I need for the program.

Any suggestions regarding this setup would be greatly appreciated. If you need me to clarify the reason for a certain field or expand on what I hope to do with this database please let me know and I will get back to you. Thanks for your help with this!

tblOrg
OrgID, AutoNumber, PK
Comp, text, Company Name
Add, text, Company Address
CounID, Number, FK
StateID, Number, FK
CityID, Number, FK
ZipID, Number, FK
Phone, Text, Company Phone Number
Fax, Text, Company Fax Number
FName, Text, Contact First Name
LName, Text, Contact Last Name
Prefix, Text, Contact Prefix
Web, Text, Company website
Mail, Y/N, Should we send them mail
TypeID, Number, FK
tblCountry
CountID, AutoNumber, PK
Country, Text, Name of Country
tblState
StateID, AutoNumber, PK
CountID, FK
State, Text, State Name
tblCity
CityID, AutoNumber, PK
StateID, FK
City, Text, City Name
tblZip
ZipID, AutoNumber, PK
CityID, FK
Zip, Text, Zip Code
tblType
TypeID, AutoNumber, PK
Type, Text, Type of Contact
tblSpons
SponsID, AutoNumber, PK
OrgID, Number, FK
PayID, Number, FK
RegDate, Text, Registration Date
MICID, Number, FK
LevelID, Number, FK
FeeID, Number, FK
AdID, Number, FK
tblPay
PayID, AutoNumber, PK
PayDate, Text, Payment Date
MethID, Number, FK
Amt, Number, Amount Paid
Check, Text, Check Number
CC, Text, Creditcard Number
Conf, Text, Conformation Number
Ref, Text, Reference Number
tblMeth
MethID, Autonumber, PK
Method, Text, Payment Methods
CC, Y/N, is it a credit card method?
tblMIC
MICID, AutoNumber, PK
MICDate, Text, Event Date
LocID, Number, FK
Vol, Memo, List of Volunteers at event
Note, Memo, weather, problems, etc
tblLoc
LocID, AutoNumber, PK
Location, Text, Site Name
FName, Text, Contact First Name
LName, Text, Contact Last Name
Phone, Text, Contact Phone Number
Fax, Text, Contact Fax Number
Email, Text, Contact E-mail Address
Addre, Text, Street Address
StateID, Number, FK
CityID, Number, FK
ZipID, Number, FK
Webs, Text, Location website
tblLevel
LevelID, AutoNumber, PK
Level, Text, Sponsorship Level
tblFee
FeeID, AutoNumber, PK
LevelID, Number, FK
MICID, Number, FK
Fee, Text, Cost of Sponsorship
tblAd
AdID, AutoNumber, PK
FeeID, Number, FK
AdSize, Text, Sizes of Available Ads
tblDonor
DonID, AutoNumber, PK
MICID, Number, FK
Donat, Text, What Donated
Value, Text, Relative value of Item
Prize, Text, Prize Group belong to
PTypeID, Number, FK
RegDate, Text, Date Entered
Received, Y/N, Do we have item?
tlbPType
PtypeID, AutoNumber, PK
Ptype, Text, Prize Type (Auction/Raffle)
tblGolfer
GolferID, AutoNumber, PK
SponsID, Number, FK
Name, Text, Golfers Name
Handicap, Text, golf handicap
Team, Text, Number of Team on
Tee, Test, Starting Tee
Winning Team, Y/N, Win this year?
Score, Text, golfers score
May 2 '08 #1
2 1760
nico5038
3,080 Expert 2GB
To start with a "down to earth" remark, there's no such thing as a "perfect normalized database". :-)
I often use deliberately de-normalized parts in my databases for better performance or easier coding/form design.
The basic idea is that the data model is a model (and not the reality) that suits your needs and that you know it's strengths and weaknesses.

For designing the table structure it's best to check all the output needed.
When you need to mail the sponsors for ad's you'll need to identify (and record) the needed ad and the date when they accepted/payed for it.
For renewal of the subscription you'll need to have the address and the hight of the fee depending on... etc.
When you need to be able to change fee's, you'll need a start date / end date for the validity of a fee.

Hope this gives a starting point.

Nic;o)
May 4 '08 #2
NeoPa
32,556 Expert Mod 16PB
Klara, this just seems too much of a question for a forum of volunteers. I don't expect anyone to go to this much trouble for a poster.
I appreciate that you've phrased the question helpfully and well, and I have no problem if anyone feels they want to do this much work for you, but for the record, I would not expect anyone to.

What I can do, in case you haven't come across it before, is to post a link to Mary's Normalisation and Table structures thread and hope that it's helpful to you.
May 5 '08 #3

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

Similar topics

61
by: Toby Austin | last post by:
I'm trying to replace <table>s with <div>s as much as possible. However, I can't figure out how to do the following… <table> <tr> <td valign="top" width="100%">some data that will...
10
by: john T | last post by:
Is there anyway to vertically center a html table using css in such a way it does not alter the html table. When I tryied it just screws up.
2
by: Daniel | last post by:
I use an Access database to basically take data exports, import them, manipulate the data, and then turn them into exportable reports. I do this using numerous macros, and queries to get the data...
4
by: Scot L. Harris | last post by:
Currently using Postgresql 7.2.4-5.80 with php 4.2.2.-8.0.8 on a redhat 8.0 system. I am writing some php scripts where I want to generate a list of the column names in a particular table that...
12
by: Prabu Subroto | last post by:
Dear my friends... I am using postgres 7.4 and SuSE 9.1. I want to use auto_increment as on MySQL. I look up the documentation on www.postgres.com and I found "serial" . But I don't know...
6
by: jjturon | last post by:
Can anyone help me?? I am trying to pass a Select Query variable to a table using Dlookup and return the value to same select query but to another field. Ex. SalesManID ...
117
by: phil-news-nospam | last post by:
Is there really any advantage to using DIV elements with float style properies, vs. the old method of TABLE and TR and TD? I'm finding that by using DIV, it still involves the same number of...
7
by: Serge Rielau | last post by:
Hi all, Following Ian's passionate postings on problems with ALTOBJ and the alter table wizard in the control center I'll try to explain how to use ALTOBJ with this thread. I'm not going to get...
0
bilibytes
by: bilibytes | last post by:
hi, I was wondering how to determine whether an information is redundant or not. if you have in a table "Main", the basic information for a thing: thing_id | name | image_id | city_id ok if...
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
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
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...
1
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...

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.