> >> I may just have had an insight over my morning coffee.
> >> How about turning things around and adding a FK -to the customers
table-
> >> on each of the customer type tables (companies, people, charities, etc)
?
> >>
> >> The customers table would have no idea if a customer is corporate or
> >> private, it just has a customer number that can be used in processing
> >> invoices and performing account maintenance.
> >> The companies, people, charities, etc. tables would each have a FK to
> >> the customers table.
> >>
> >> This  does off course mean that creating and sorting  a list of all
> >> customers is more complex, but the database would at least be
normalised.
> >> What do you think ?
> >>
> >>
> > I think you just made my point.
> >
> > You now recognize that designing it "right" introduces other
complexities.
> >
> > With the problem you presented, it is just a matter of where you want to
get
> > tasered.  There isn't a solution that optimizes all parameters.
> >
> >
> Hey,
>
> I have to disagree.
> Any application is and always will be complex.
> Having the database refuse to screw itself up whenever the programmer
> makes a mistake, and he/she always will, is a great step towards the
> goal of simplification and robustness.

Exactly.

> Moreover, apart from the sorting problem in this design, I think the set
> of queries in general is much more simple than it would have been had I
> used one of the options from my previous line of thinking.
> I think you can never go wrong with normalized databases.

Because you can query a table and get data for which you know what
it means instead of having to "guess" that columns are used and what not.

In general, you should not have NULL values in your database (as opposed
to NULLs in your result-sets, that's quite different!). There's no point in
storing what you don't know.

> Anyway, I think my question has been answered. Always nice to answer
> your own questions :)
> Thanks for all the  comments.

Yep, you're setup seems to be the correct one on this, define the properties
for a "customer" that are common and put those in the CUSTOMERS table,
makes perfect sense.

It could be wise to keep track of what type of customer it is in that table
as
well (so you don't have to check all other tables for it) and keep in mind
that
a customer can go from a "person" to a "company" etc...

Good luck.

Martijn Tonies
Database Workbench Lite for MySQL - FREE developer tool for MySQL!
Upscene Productions
http://www.upscene.com
My thoughts:
http://blog.upscene.com/martijn/
Database development questions? Check the forum!
http://www.databasedevelopmentforum.com


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to