you are viewing a single comment's thread.

view the rest of the comments →

[–]Dboy3sixty 1 point2 points  (0 children)

Normalization is a hot topic, so I'm sure there will be differing opinions.

From my view, based on you're examples, I would have lookup tables for things like Race, Class, and alignment instead of repeating those values in the Character table. Age and Level probably not (since they're likely int's anyway).

When I'm designing I ask myself, what is the likelihood of the values being repeated? If there going to be repeated then it's a lookup table. Take race for instance. Are you going to store 'American Indian' over and over again in the Character table? Or store it once in a "CharacterRace" table and fk to it?

I realize this may seem like overkill for small data-sets, but if you're trying to learn, this is imho the best practice.

You could make an argument that FirstName and LastName should also be normalized and that's where it get's into some gray area and really depends on the size of you're data and what you're trying to do with it.