hbaxmann:

You are clearly learning relational theory in an academic setting.  What school are 
you attending?  What is your major?

For one, no one completely normalizes data in the real world, and by real world, I 
mean business applications.  When someone does, it's clear it's a college student or 
grad that hasn't had the experience beyond what he learned in school.  

Null columns exist because the user is not always required to provide them.  Like you 
said, it gives us the ability to detect that there is no data for it.  It's a very 
nice concept and works really well in relational databases.  There's no normalization 
problem because you have optional columns.  If I wasn't using EJB-QL, but DynamicSQL, 
as someone suggested, or direct JDBC, I wouldn't have a problem at all.  

Using the example of customer registration, here are columns I might make optional 
because I wanted customers to register even if they didn't have or want to provide the 
information:

- All address information.  Definately second address line if I chose to require 
address information.
- Second email address.
- Additional phone numbers.

Now, all this info could be normalized, but with an OO front-end, the benefits are 
near nill.  Take the phone number, for instance.  Phone numbers can be handled in a 
standard way via application objects.  This mutes the benefits of normalization.

However, even if I normalized it, I would still have optional foreign keys... and thus 
nulls.  This would not resolve the problem EJB-QL has, as it applies to relationships 
as well as regular columns.  Optional is optional, whether they are regular columns or 
relationships.  Optionality is defined by the business requirements.  If the phone 
number is not required information, then either a column for phone number data or a 
foreign key can be null.  

As for ER modeling, I've been developing relational applications since the early 80s 
prior to SQL's definition in 89.  I've read quite a few books over those years, 
including the adademic books you're reading now, as I have a degree in IS.  I've used 
ERwin, Oracle Designer, Rational Rose and other tools for ER modeling.  Last year, I 
lead the effort to create a 150+ table data model for a large commercial payroll 
company for DB2.  We used Rational Rose to create an ER model.  When that was 
complete, we generated the data model, and then revamped it some more.  Then we 
generated it in DB2 migrated an entire commercial payroll system to use it.  It was 
successful.  We did a lot of normalization of the data coming in, which came from the 
mainframe in over 100 formats.  Creating a practical normalized model was one of our 
goals.  But knowing when to normalize and when not to normalize isn't something you 
can learn in an academic book on relational theory.  It's something you learn by 
repeatedly doing it in the real world for many years.  Building data models for large 
businesses over and over again is the real world.  Learning relational theory in a 
class is not.  

Using views to try to normalize a single table is rediculous in this case, both in 
terms of practability and the end result's ability to actually solve the EJB-QL issue. 
 Even if it did somehow miraculously help, it would run completely counter to why I'm 
using CMP, and the database vendor independence required by the application.  Please 
read comments I made earlier on why I am using CMP.

It's exciting to see you learn relational theory.  Clearly, you are grasping the 
concepts your class is teaching you.  However, I highly recommend you try to learn 
from others who have applied it in business environments, and give them the benefit of 
the doubt until you have a chance to learn the practicality of some of the academic 
ideas when developing large business applications.  


View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3836518#3836518

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3836518



-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id149&alloc_id66&op=click
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to