I have tons of details of information about each customer,
like 250 details.
250 *non-repeating*, *independent* details, i.e. different KINDS of
attributes? I'd be very fascinated to see this. I've needed as many as
60 fields in a table, once or twice. Is it possible that you have
several one-to-many relationships embedded within this record - i.e.
fields like CreditCard1, CreditCard2, CreditCard3 or AppointmentDate1,
AppointmentDate2, AppointmentDate3?
I could split out that one main table into sub tables with
a one to one relationship just to keep the tables smaller,
but for two reasons I didn't:
1. Most importantly, for outside audit purposes - those
that could be incredulous, I wanted the details into one
printable file..........perhaps over cautious and from a
programmers world unnecessary and not understandable, but
lawyers aren't smart enough to be programmers and will
always find ways to question whether tables could be
mismatched or created at other times - it just eliminates
one other disputable topic.
DO NOT confuse data *storage* with data *presentation*. A properly
normalized database, with referential integrity enforced, is *more*
secure and verifiable than a huge bedsheet.... ummm spreadsheet. A
table IS NOT INTENDED to be "a printable file".
2. it would still be a one to one relationship so not much
gained by splitting the fields out, just more matching
overhead. No one has told me yet that table processing is
significanlty degraded once the table is bigger than X
number of fields.
Well, I'll tell you, then. Performance WILL suffer. Worse, there is a
hard limit of 2000 bytes *actually occupied* in any record in a table
(exclusive of memo fields, which each count for 16 bytes no matter how
large). You can easily create a table with 250 20-byte text fields -
but the moment you FILL all those fields with an average of 10 bytes
each, you'll get an error message and not be able to save the record.
Seriously - table normalization is not an arcane, academic pursuit.
It's good design and its rules are there for good, thoroughly
validated reasons. Designing a database without using the principles
of normalization (splitting your table into multiple *one to many* -
very rarely one to one - tables) would be like running a law practice
without knowing anything about the concept of precedent.