1

How can you tell when a database is over normalized? Example: I have a database for employee. These are the following tables involved:

User - contains email, password, companyId

Profile - profile of the employee (first name, last name, address)

Group - Department list

Company - list of companies

Position - List of positions

Employee - employee information like id numbers, height, weight, contract info, etc.

closed as too broad by Max Vernon, Paul White, RolandoMySQLDBA, Mark Storey-Smith, Kin Shah Apr 10 '14 at 16:10

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Over normalized? Only you can decide that. If it makes sense for the system to have those tables, and performance is at the desired level, then fine, otherwise make some changes. – Max Vernon Apr 8 '14 at 3:44
  • For what it's worth, I don't believe what you've posted is over-normalised. You could normalise further, like taking the address out of employee profile as employees could share an address...Like Max says, it really depends on whether or not you're happy with performance – Mark Sinkinson Apr 8 '14 at 9:22
2

First, if it ain't broke, don't fix it. If no-one is complaining about the speed of the system then leave it alone. Spend time and money on other things.

Second, no, I don't think it is possible to over-normalise. That is, I think it is possible to spend more time on the normalisation process than your application might need, but unless you've spent tens and tens and tens of hours doing so I don't think the time is really wasted. The time getting to 3rd normal form is most certainly never wasted.

In my (admittedly limited) experience, the problem is usually under-normalisation, otherwise known as "laziness". Database designers often claim it is for speed purposes, throwing the term "denormalised" about like a holy mantra, but if you investigate closely, all they've actually done is half a job.

Denormalisation is not "stopping before you reach a certain normal form"; it is "reaching a certain form (usually 3NF or BCNF) and then undoing some of that normalisation for well-documented, well-benchmarked reasons."

Links

Tony Davis, The myth of over-normalization.

Louis Davidson, Can you over-normalize?.

Not the answer you're looking for? Browse other questions tagged or ask your own question.