I am building a government database from a massive amount of data. Now I am following the standard approach of the ESRI Local Government Data Model, but modified to fits the needs and wants of a specific government.

I've noticed that in the Local Government Data Model ESRI uses a lot of relationship classes. I've used relationship classes in the past, but tend to steer clear of them. This is because I usually don't see a reason why I would want attributes about a shape in a separate table from the feature class.

For almost all of the data I am assembling I still cannot see a reason for this. For Parcel Fabric I can see some reasons where it would be helpful, but still I believe it would be best to still keep the attributes directly in the feature class.

Now to be clear I am going to use relationship classes to reference feature classes to feature classes, this question is more specified to why I would store data in a non-spatial table that could just as easily be store in a feature class.

Anyways thanks for any input folks!

2 Answers 2


The reason that people organize data in separate tables is because of Database Normalization principles (follow the link, all the rationale is there). That being said, ESRI Relationship Classes are a GeoDatabase-level implementation of a those principles. Honestly, I would personally only use them in two instances:

Although people may claim that referential integrity is one of the benefits, the truth is that it can be circumvented with a SQL prompt, so the benefit of this really depends in the workflow that you have for modifying that (i.e do people use only ArcMap to edit vs do people also edit with SQL queries or non-ESRI tools).

  • 2
    Wow, great answer. The great big world of database theory has just blown my mind. Thanks a ton for the input!
    – Cody Brown
    Commented Nov 12, 2012 at 13:53

Think about the bigger picture - GIS data is just a means to an end for most people, especially when it comes to government entities. My experience has been that relationship classes are primarily useful (and appropriate) when you need to incorporate non-spatial data with one:many relationships to your spatial data, especially if it is from an external source or changes constantly. Some real-world examples I have encountered with government entities may help illustrate this:

  • Storing multiple, non-spatial records about a feature (e.g. monthly inspection records for a hydrant or valve)
  • Referencing related records from a data source you don't control (e.g. reading maintenance records from the database of a third-party asset management program)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.