![]() | |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
I maintain a small database which contains information about a group of people. Somebody suggested an addition. I proposed an alternate method. My method feels better to me intuitively. I'm trying to figure out if the difference is related to normalization, perhaps the 5th normal form. Every person in the database is uniquely defined by a single key, their userid. Everyone is assigned a category, call them A, B and X. Everyone in category X has a supervisor, who must be in either category A or category B. The proposal is to divide category X into two, call them XA and XB. All the XA people would have A supervisors, and all the XB people would have B supervisors. I immediately noticed that there's redundancy and the possibility of inconsistency. Suppose somebody in category XA somehow gets assigned to a supervisor in category B, contrary to the definition of XA. Murphy's law would require this to happen after a while. When I pointed this out, the response was the the XA people are really different from the XB people, with different rights and responsibilities. This difference ought to be reflected in their own table entries. In my scheme, it would require an extra table lookup to find whether someone's supervisor is an A or a B. My argument would be more impressive if I could say, "Why, that violates the N'th Normal Form rule. That's very bad." But I find the language of the normal forms quite obtuse. This sort of sounds like the 5th form, as described in the Wikipedia, but I'm not sure. All the examples seem to require breaking up a table into multiple smaller ones, and I don't see the need for that here. Am I on the right track? |
#3
| |||
| |||
|
|
I maintain a small database which contains information about a group of people. Somebody suggested an addition. I proposed an alternate method. My method feels better to me intuitively. I'm trying to figure out if the difference is related to normalization, perhaps the 5th normal form. Every person in the database is uniquely defined by a single key, their userid. Everyone is assigned a category, call them A, B and X. Everyone in category X has a supervisor, who must be in either category A or category B. The proposal is to divide category X into two, call them XA and XB. All the XA people would have A supervisors, and all the XB people would have B supervisors. I immediately noticed that there's redundancy and the possibility of inconsistency. Suppose somebody in category XA somehow gets assigned to a supervisor in category B, contrary to the definition of XA. Murphy's law would require this to happen after a while. When I pointed this out, the response was the the XA people are really different from the XB people, with different rights and responsibilities. This difference ought to be reflected in their own table entries. In my scheme, it would require an extra table lookup to find whether someone's supervisor is an A or a B. My argument would be more impressive if I could say, "Why, that violates the N'th Normal Form rule. That's very bad." But I find the language of the normal forms quite obtuse. This sort of sounds like the 5th form, as described in the Wikipedia, but I'm not sure. All the examples seem to require breaking up a table into multiple smaller ones, and I don't see the need for that here. Am I on the right track? -- * Patrick L. Nolan * * W. W. Hansen Experimental Physics Laboratory (HEPL) * * Stanford University * |
#4
| |||
| |||
|
#5
| |||
| |||
|
![]() |
| Thread Tools | |
| Display Modes | |
| |