Jump to content

How to Document Normalzation


Recommended Posts

I've now completed my database and am pretty sure it's now in third normal form but now I'm basically wondering how does one exactly document normalization to show how the process has been completed? This may seem like I've done it the wrong way around but I simply created my database in 3NF pretty simply and quickly but I now need to show how I've done this somehow. What is the general way to show this, documentation wise? i.e if an erd shows entity relationships what sort of diagram/document is used to outline the normalization process?

 

Here's my already produced erd if that has any relevance:-

 

http://i223.photobucket.com/albums/dd147/jimmyoneshot/erdpic.jpg

Link to comment
Share on other sites

Cheers ignace. I've just found a couple of your posts on the subject actually where you helped somebody else out on normalization. You know your stuff. So I basically take ALL of my field names that I currently have and put them as field names in one big huge table for NF0 and then seperate them out into tables and link tables etc for NF1 2 and 3? What I don't understand is when people say I should put all of the values in there because the values themselves are dynamic i.e. new values can be added, values can be removed and also updated. Does this mean that I should just put a few dummy test values in the NF0 table to show what type of values go into each field?

 

What confuses me is what takes place between each NF in regards to my database i.e. as regards to my db what would take place between NF0 and NF1 and NF1 and NF2 and NF2 and NF3? I mean what exactly would be removed/added in during each of these transactions? Is adding a join/link table (which my userlinks table is) a step of third normal form or second normal form?

 

Sorry it's just all a bit mind boggling to me and when it's explained it's usually never explained in Layman's terms.

Link to comment
Share on other sites

Does this mean that I should just put a few dummy test values in the NF0 table to show what type of values go into each field?

 

database normalization is database independent and therefor you should not mention or write the field types only field names. After you are satisfied with the database design you can think of the database('s) you wish to support and think of the best field types according to your chosen database('s) and your application.

 

Just like in software design you first start to identify your components, and their underlying relations in a domain-model, and afterwards you would create a class diagram which specifies the types of each field.

 

The best would be to find a good book that describes the complete normalization process as described by Codd as Codd specified a few rules you need to adhere to, to create a fully normalized database design.

 

You know your stuff.

 

Thank you. This means much to me knowing that my work is appreciated ;)

Link to comment
Share on other sites

Yep but the thing is it's for a university project and I'm thinking of each system diagram/document as an extra mark so although I may not have actually done it I want to say that I've done it if that makes sense  ;) It's just actually showing it in a tangible format as regards to my database that I'm struggling with doing. The problem with a lot of modelling seems to be that on the internet there are so many different ways people utilize to do the same thing.

 

Thanks for your advice too ignace.

 

While we are on the subject of moddeling I wonder if I could ask you guys a couple of questions about other things I'm trying to do. I'm also doing dfd's and sequence diagrams for my system and here's what I'm wondering.

 

1. The way my system works is when a user creates a new account it adds them as a new userid in the users table then retrives their userid then inserts all of the linkids from the links table to the userlinks table for that specific userid, and if a user logs in with an existing account it gets their userid from the links table and inserts any newly created links that that specific userid may not have in the userlinks table. Have I shown this correctly in the following sequence diagram:-

 

http://i223.photobucket.com/albums/dd147/jimmyoneshot/sequencepic.jpg

 

2. When you draw dfds if it gets too cramped is it possible to move some processes onto another page i.e. at level 1 is it possible to have say 1.1 and 1.2 on one page and have 1.3 and 1.4 on another? I'm also struglling to firt my returning data flows in. Here are my dfds or at least part of them (context level 0 and a partial example of level 1) Am I on the right lines or off track:-

 

http://i223.photobucket.com/albums/dd147/jimmyoneshot/contpic.jpg

 

http://i223.photobucket.com/albums/dd147/jimmyoneshot/0pic.jpg

 

http://i223.photobucket.com/albums/dd147/jimmyoneshot/1pic.jpg

Link to comment
Share on other sites

1. The way my system works is when a user creates a new account it adds them as a new userid in the users table then retrives their userid then inserts all of the linkids from the links table to the userlinks table for that specific userid, and if a user logs in with an existing account it gets their userid from the links table and inserts any newly created links that that specific userid may not have in the userlinks table. Have I shown this correctly in the following sequence diagram:-

 

What you explained here is called Use-Cases except it would be formulated in a more abstract manner and it would also include the steps when something goes wrong depending on the involved actors.

 

Also remember that none of these documents are permanent in software development as your code changes so do these documents. They are not static. They "live" as long as the project is.

Link to comment
Share on other sites

Cheers. I've also done a use case diagram too already but I'm not sure what type of use case it actually is or if it is a use case at all. The one I've done shows user's interactions inside the system domain as well as how other users can interact with these interactions.

 

Here's a screenie of my use case that I have so far. It look ok to you?:-

 

http://i223.photobucket.com/albums/dd147/jimmyoneshot/usecasepic.jpg

 

I thought what you described are known as flow or activity diagrams? i.e. a user logs in and it directs them somewhere a user doesn't log in and it stops there etc? I'm getting them mixed up I think?

Link to comment
Share on other sites

Ah gotchya, right you are. In this case though I'm attempting to use uml modelling techniques and am trying to use as many of the 14 general uml diagrams as possible. Some of them are redundant/a bit tricky to do as my project is a flex desktop application that uses web based data retrieved via php/xml.

 

In your opinion do the diagrams I've made above look coreect/along the right lines as far as uml moddeling goes or have I got them wrong?

Link to comment
Share on other sites

I'm attempting to use uml modelling techniques and am trying to use as many of the 14 general uml diagrams as possible.

 

I think you are taking this a bit too serious. In Agile software development all of these diagrams are optional.

 

In preparing for battle, I have always found that plans are useless but planning is indispensable

 

Like Eisenhower you should plan but don't exaggerate.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.