Normalization Denormalization of tables. Keep it denormalized when it is possible.

The_Doc_Man

I meet some but of course not all your criteria. The main part I meet is it was laid out on paper first. In fact I basically put on the computer what we use to do with cards in boxes. That probably carries through to today with fields such as spouse etc being blank when they are not married.

Mike
 
In fact I basically put on the computer what we use to do with cards in boxes

A good first step.

Now, the next step is to look for sparse-field possibilities - a case in point being spousal data for an unmarried person. Split the table to separate the "always populated" from the "sometimes populated" and save some space. A JOIN query can be a recordsource just as easily as a table, so you lose nothing - except a shorter table that, when you scan it, scans quicker as long as you don't need to sparse data to be included. See, the shorter the record, the more you fit in a working buffer. The more you fit in a working buffer, the more things you can scan in a single disk read, even when doing a non-indexed search. And there is your performance pay-off, the reason why you look at this type of normalization.

Before you say ... "But I always need that data!" - no, you don't. You only need that data when reporting on spousal issues, searching for persons having spouses, or viewing detailed records. But if you are sorting based on postal codes, you do that sort in one query (thus faster 'cause shorter records) and join the spousal data to the query, not the original table.

THIS is what normalization gives you - the ability to isolate on what is important at the moment; the ability to do as Julius Caesar did so long ago - divide and conquer. Paraphrasing, "Omna data in multa parta divisum est."

If I've forgotten the proper declension in a couple of cases, forgive me - my Latin is high-school variety and that's been ... well, a few years, let's say.
 
The_Doc_Man

I could divide this data base into two broad categories, one being related to clients and the other being related to prospects and telemarketing and it is the latter that is most critical for displays. You need to see as much as you can as quickly as you can and the form layout is very critical to results. This section of the data base is also the largest part of it by far.

Currently I have a table that holds clients, prospects and personal, that is, personal could be friends, my accountant, contacts in insurance companies and so on. Each record type has some entries which allows separartion and determines which form they display on.

When a cold call is made there are 14 possible outcomes such as wrong number, not available, make appointment etc. In the main table there is a field for each of these outcomes and the entry made in the field is the "attempt number" So if we phoned you and on the first attempt we got a recorded message then a 1 would go into the field. If the second attempt was also a recorded message then the 1 would be replaced with a 2. If the third attempt was "not available" then a 3 would go in that field.

In another table a new record is created for each call attempt and it is from this table that all our call statictics and so on come from.

The form from which the calling is done is based on a queryon the main table that selects the category of prospect to be called and it also deselects records based on previous call results or other data that might have been entered. For example, it delsects any records where a call attempt has been made in the last 5 days. Or a doctor's secretary might say "only call on Wednesdays and Fridays and only between 3pm and 4.40 pm. Thus is record will only appear on those days and between those times. All entries are being made on the persons record in the main table.

The form layout is basically the name, address, phone etc acros the top of the form. There are 16 fields in 4 colums of 4.

Below these fields are a set of labels all of which have a macro attached. There are 7 sets of them with 3 in each column. These do things such a open the diary, file notes etc as well as opening other stuff for statistal data and so on.

Dead centre in the form are the outcomes. There are 9 to the left of centre for outcomes where we did not actually speak to the prospect himslef and there are 5 to the right of centre for the possible outcomes after speaking to the prospect. This set up so that if there have been 5 attempts and no contact made then the record no longer appears and is appended to another "holding table"

On the far left of the form and level with the outcomes are the dates/times of the first 5 attempts and to the far right of the form are the 4 drop down lists to select days and time such as only call on Wednesdays between 3pm and 4 pm.

The lower section of the form shows various call results and it updates with each call. This data comes from the table that holds a record for each call and also the table that holds the various objectives. It is not a subform but unbound text boxes and a form opens when "next prospect" is clicked and SetValue macro fills the unbound text boxes.

So that is basically what I have. The main objection I have to subforms is the restrictions on field positioning on the form and also I have a lot of Visible/Invisible that runs from an OnCurrect macro. As an example, some of the fields that appear if the prospect is a medical specialist are different to a GP, solicitor and so on and these are mainly the fields that appear at the top of the form.

Mike
 
Regarding the calls with fourteen different responses - here's a quick mock up of a better way to tackle it.
 

Attachments

  • subform.jpg
    subform.jpg
    37.8 KB · Views: 275
Off topic:

Mile - Who is the attractive young lady you have as an avatar?

ken
 
Hi Mike,

It's the little picture some people put by thier user name.

How's you day going?

ken
 
Mile-O-Phile said:
Regarding the calls with fourteen different responses - here's a quick mock up of a better way to tackle it.

Mile-O-Phile

I think that is what we have in the second table that records each call?? If we ring someone 100 times then 100 records are created in the Many table for that person. Is that similar to what you are illustrating.

The call results being entered on the persons record in the main table are to determine when their record displays, when it should be moved to another table and a replacement record brought in etc.and etc.

Mike
 
KenHigg said:
Hi Mike,

It's the little picture some people put by thier user name.

How's you day going?

ken

Ken,

Actually, I had an extremely good day, about to finish now with an early night. 11.35pm here.

Is "avatar" a word that is the product of bulletin boards?

Mike
 
Never seen the word much before, outside computers, but message boards, etc seem to be where the term is used most (I think).

Catch you tomorrow... Only 9am here...

ken
 
Audrey Tatou is a French actress from such films as Amelie and Dirty Pretty Things.
 

Users who are viewing this thread

Back
Top Bottom