Firstly, I want to say how great I think the article on normalization is - for the most part I found it very clear. There were a few parts where I wasnt completely sure what was intended, but for the most part, it was great.
One area that I found hard to understand was the final stage 5 of normalization .. where it was suggested that the initial table be reconstructed from the normalised information .. i am not sure what is intended here, and hopefully someone can help, becs I think that my tables need this final stage to work efficiently.
So .. to the problem .. I have a very large table of data on different organisations and their contact detail, with a lot of fields that will not necessarily be used by every organisation, but with sufficient numbers requiring them that they need to be included. It also includes organisation that have numbers of branches or departments, and occassionally branches with different departments (with different functions and different contact details).
The number of organisations is expected to exceed 100,000, and so scalability is vital.
These are the fields I need (and please, refrain from questioning my choice unless you have a better way of doing it .. I have been collecting the data for 2.5 years, and they are ALL required)
organisation name
organisation branch
organisation dept
service description
keywords
category
date entered
last checked
location address1
location address2
location suburb/city
location state/province
location postcode
location country
postal address1
postal address2
postal suburb/city
postal state/province
postal postcode
postal country
contact name
email
url
voice phone
tty/ttd phone
fax
freecall voice
freecall tty/ttd
freecal fax
mobile/cell
pager
Now... obviously things like postcode, suburb name etc would all benefit from a table with them, and given an id, to save space ... so..... this is how far i have gone .. I am feeling that it is incredibly complex, but having followed the rules of normalisation 1 - 4, this is what I have.....(*primary key)
tbl_uniquelisting
fld_ulid*
fld_orgname
fld_deptname
fld_branchname
fld_description
fld_entered
fld_lastchk
fld_keyword
fld_url
fld_email
fld_contactperson
rel_phonelistid
tbl_loc
rel_ulid*
fld_locst
fld_locst2
rel_placeid
rel_countryid
tbl_post
rel_ulid*
fld_post1
fld_post2
rel_placeid
rel_countryid
tbl_place
fld_placeid*
rel_suburbid
rel_stateid
tbl_suburb
fld_suburbid*
fld_suburbname
tbl_state
fld_stateid*
fld_statename
tbl_country
fld_countryid*
fld_country
tbl_phonetype
fld_phoneid*
fld_phonetype
tbl_phonelisting
tbl_phonelistid*
rel_ulid
rel_phoneid
tbl_categories
fld_catid*
fld_cattype
tbl_ulcat
fld_ulcatid*
rel_catid
rel_ulid
Think that's it ... comments?
Cate