Skip to Content
Enterprise Rails
book

Enterprise Rails

by Dan Chak
October 2008
Intermediate to advanced
352 pages
10h 30m
English
O'Reilly Media, Inc.
Content preview from Enterprise Rails

Chapter 8. Composite Keys and Domain Key/Normal Form

So far we have improved our data model and Rails model layer substantially from the small set of tables we began with. Specifically, we have:

  • Added constraints everywhere

  • Enforced referential integrity

  • Added basic indexes

  • Factored out repeated data model chunks with database inheritance, and created an analogous Rails plugin to facilitate reuse

  • Factored out columns that were teetering on the edge of violating third normal form into fully fledged tables

  • Created domain tables for our domain data, and analogous Rails models and constants

We have done quite a bit, but our data model is still not enterprise solid. In this chapter, we will discuss two related topics that can help us get closer to our goal. The first is the idea of keys made up of multiple columns, otherwise known as composite keys. The second is a topic that proverbial wars have been fought over, which boils down to whether primary keys should be simple id columns, as is the Rails default, or the more complex composite or natural keys, which rely on unique identifying information in the records themselves.

In Rails, as it comes out of the box, the decision to use id columns has been made for you. However, composite keys have inherent benefits over simple id keys. In reality, both conventions have pluses and minuses. In this chapter, we’ll learn the pros and cons of each convention. We’ll learn how to make composite keys work in Rails through use of a plugin. Then, we’ll have ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Advanced Rails

Advanced Rails

Brad Ediger
Rails Crash Course

Rails Crash Course

Anthony Lewis
Ajax on Rails

Ajax on Rails

Scott Raymond

Publisher Resources

ISBN: 9780596515201Errata Page