-1

I am starting to learn about databases and normalization. The exercise I am addressing at the moment has an unnormalized table and I have to outline the steps to go from un-normalized to 1FN, 2FN, 3FN. table

Here is what I have done so far:

1FN (Per definition 1FN should eliminate repetitive groups-- so I added rows to eliminate the multiple values within one field)

StudentAssoc (StudentID(PK), LastName, FirstName, DOB, Assoc-Name(PK), MaxMem, DateJoined)

2FN (Per definition 2FN should eliminate partial dependencies-- so I created two separate tables-- one for Student entity and one for Association entity)

Student (StudentID-PK, LastName, FirstName, DOB, Assoc-Name-FK)

Association (Assoc-Name-PK, MaxMem, DateJoined, StudentID-FK)

My doubt is, did I eliminate the partial dependencies if I have the FK in both entities?

Java_Paws
  • 13
  • 4
  • Hi. Give your textbook name & edition & algorithm. There's no one definition of 1NF so give yours. Also if you have a non-relation, how do we know how to interpret it? Give all steps of your work with justification & explain where & why you think you have gone wrong. Don't just give milestones, we can't tell you where you went right or wrong getting there. Please [use text, not images/links, for text--including tables & ERDs.](https://meta.stackoverflow.com/q/285551/3404097) Use images only for what cannot be expressed as text or to augment text. Images cannot be searched for or cut & pasted. – philipxy Mar 15 '19 at 12:44
  • "Repetitive groups" can have many meanings & there is no one way to "eliminate" them & "added rows" is not clear. 2NF eliminates partial FDs *of non-prime attributes on CKs*. And what do you claim the FDs to be & why? FKs are irrelevant. (Did you mean FD?) Normalization of a table is independent of other tables. We don't normalize to lower NFs to get to higher NFs unless we were told to as an exercise. Etc etc etc. We don't want to redo your homework & rewrite your textbook when we could just check your work. Please act on all of my last comment. – philipxy Mar 15 '19 at 13:22
  • When you explain to us how to interpret that tablulation of data you can ponder whether the people who gave you your assignment are as confused/sloppy as the people who gave out [the poorly made assignment in the question addressed in this answer](https://stackoverflow.com/a/50557044/3404097). – philipxy Mar 15 '19 at 13:45

1 Answers1

0

You have a choice:

1: Use the complicated "method" called Functional Dependency Analysis"(FDA)

2: Convert your table to a set of formal Fact Types (+ any constraints) using the object-role modeling method. (ORM)

For example:

Student(.id) has LastName()

Student(.id) has FirstName()

Student(.id) was born on Date()

And so on....

An object-role model is a formal model so you can use a mathematical transform to "automatically" generate a fully normalized schema from your model.

Some people seem to think that FDA is the only way to "do" normalization. They are wrong!

References: Information Modeling and Relational Databases, Second Edition, Halpin & Morgan 2008.
Dr Terry Halpin's website.

Ken Evans
  • 362
  • 1
  • 11
  • ORM2 still uses the notions of FD & JD, it just doesn't call them that. Moreover like ER methods it limits the design choices so the best designs cannot always arise. But it's still the best information modeling method. But it doesn't quite understand the relational model. – philipxy Apr 16 '19 at 22:18
  • @philipxy Tell me more, in what way does ORM "limit the design choices"? In what way does it "not understand the relational model?" ORM is not "Like ER methods" because ORM is formal and most if not all ER methods are informal. Maybe you can justify your claims and/or tell me which on which textbook or scientific paper you are basing your claims? – Ken Evans Apr 16 '19 at 22:53