[Home] [By Thread] [By Date] [Recent Entries]

  • From: Ghislain Fourny <ghislain.fourny@2...>
  • To: "Costello, Roger L." <costello@m...>
  • Date: Tue, 2 Dec 2014 13:56:11 +0100

Hi Roger,

I have two thoughts on this:

1. I think normalization or denormalization has a wider scope than exchanging data. In NoSQL data stores, it is very common to denormalize data, because queries can run much faster (less joins). You exchange once (e.g., ETL), but you query many times.

2. Also, I would not be so sure that the association denormalized=flat, normalized=fat always holds. Actually, I would even have spontaneously made the opposite binding: consider flat data (that you could store in a relational table) that is, say, in third normal form (3NF), and you can then denormalize it by nesting pre-computed joins, i.e., making it fat.

Just two quick thoughts.

Does it make sense?

Kind regards,
Ghislain


On Tue, Dec 2, 2014 at 11:30 AM, Costello, Roger L. <costello@m...> wrote:

Hi Folks,

 

The flat design is about creating XML documents that consist of a long series of standalone components:

 

 

A component in the document can be combined with other data (mashup):

 

Let’s take a concrete example to compare the flat design versus the fat design.

 

Here is a flat design:

 

<Iowa>
   
<house>
       
<street>1009 Arlington Court</street>
       
<city>Davenport</city>
       
<style>Ranch</style>
       
<porch>open</porch>
       
<year-built>1951</year-built>
       
<square-feet>1700</square-feet>
   
</house>
   
<house>
       
<street>1008 Arlington Court</street>
       
<city>Davenport</city>
       
<style>Ranch</style>
       
<porch>closed</porch>
       
<year-built>1955</year-built>
       
<square-feet>1850</square-feet>
   
</house>
    ...
</Iowa>

 

The document consists of a long series of standalone <house> components. Any of those <house> components could be mashed-up with other data, e.g., mashup a <house> component with a <GPS> component.

 

Here is a fat design:

 

<Iowa>
   
<city name="Davenport">
       
<street name="Arlington Court">
           
<house>

               <street-number>1009</style>
               
<style>Ranch</style>
               
<porch>open</porch>
               
<year-built>1951</year-built>
               
<square-feet>1700</square-feet>
           
</house>
           
<house>

                <street-number>1008</style>
               
<style>Ranch</style>
               
<porch>closed</porch>
               
<year-built>1955</year-built>
               
<square-feet>1850</square-feet>
           
</house>
       
</street>
        ...
   
</city>
   
<city name="Cedar Rapids"> ... </city>
    ...
</Iowa>

 

The flat design and the fat design are radically different!

 

In the fat design the houses have been grouped into streets and the streets have been grouped into cities. The street name data has been removed from each <house> and also the city name data has been removed from each <house>. Consequently, each <house> is no longer a standalone component. House data is now fragmented, scattered over the document. The ability to do mashups has been lost (or, at least, greatly hampered). The fat design has normalized the data and, as I argued in my last message: Normalization is horrible for data exchange formats.

 

It’s best to exchange the data in the flat design. Consumers can transform it into the fat design, if needed.

 

Recommendation: When designing a data exchange format create a flat design.

 

Comments?

 

/Roger




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member