---
title: "Free E-Book: Developing Time-Oriented Database Applications in SQL"
url: "https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.md"
canonical: "https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html"
published: "2006-08-21T20:09:36"
updated: "2006-08-21T20:09:36"
tags: [".NET", ".Net 2.0", "ADO.Net", "Free book chapters"]
author: "Roy Osherove"
description: "One of the books I mention in my Amazon Wish List is Developing Time-Oriented Database Applications in SQL (Morgan Kaufmann Series in Data Management Systems) . A few days ago I got an email from Steven Gravitz telling…"
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# Free E-Book: Developing Time-Oriented Database Applications in SQL

By Roy Osherove August 21, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [ADO.Net](https://osherove.com/blog/category/ado-net), [Free book chapters](https://osherove.com/blog/category/free-book-chapters)

**Historical article** · Originally published August 21, 2006; technical details may be outdated.

One of the books I mention in my Amazon Wish List is [Developing Time-Oriented Database Applications in SQL (Morgan Kaufmann Series in Data Management Systems)](https://www.amazon.com/exec/obidos/ASIN/1558604367/iserializable-20) .

A few days ago I got an email from Steven Gravitz telling me that the book is actually available in downloadable PDF form for free. [Here's the direct link](http://www.cs.arizona.edu/people/rts/tdbbook.pdf) (PDF).

One of the reasons I was once interested in such a book was that I had to build and design a payroll system, which had many interesting facets relating to time. Mainly, it had to keep track of the past 7 years of payrolls, terms of employment and raises in salaries, with each month having it's own total history (that is - the 12 months that count for doing salaries in February 2002, may be totally different that the 12 months that count for calculating the salaries for March 2002 - it's really an amazing concept. I call each such month a "comet" with it's preceding history as the "tail" - each month is its own comment with its own tail.)

It was head-squeezing fun for me, as I learned all the hard stuff the hard way. This book seemed to be talking about just these kinds of problems. In fact, here are a couple paragraphs from the preface:

"This is how it goes.
We develop a database application, and initially the project proceeds  smoothly enough.There are alternatives to weigh during the schema design,problems to contend with while writing the SQL code,and constant reconfiguration and interaction with other programs and legacy data, but all in all the project is under control.Then we decide that one of the tables needs another DATE column, recording when the row was valid. ( After all, we added a birthdate column a few weeks ago, with no surprises.) So we rework the part of the application that maintains that table, noticing that the code is getting more complicated. During testing, we discover that the primary key no longer is sufficient.We add the DATE column to the primary key, acknowledging that this is only a stop gap measure, and hope that the input data will be well formed, as there isn't  time to write code that checks those constraints properly. In the back of our mind is the lingering doubt that perhaps referential integrity checking isn't working quite right either. We soon realize that we need another DATE column to record when the row
was no longer valid. In doing so we encounter a raft of off-by-one bugs..."

"...Around this time, users start complaining that reports aren't  consistent, that copies of the end-of-the-year summary have different numbers in them..."

And so he goes on to describe a situation that many of us had faced in the past or will face in the future...

I'll get to reading it before bedtime..

Thanks for the tip, Steven!

## More in .NET

[All posts in .NET](https://osherove.com/blog/category/net)

- Sep 9, 2006

    ### [How to create your own Auto Login Remote Desktop Application](https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.html)

- Aug 27, 2006

    ### [16 Features in Resharper Every Developer Needs To Learn](https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html)

- Aug 19, 2006

    ### [Nice Threading in .NET 2.0 E-Book and online reference](https://osherove.com/blog/2006/8/19/nice-threading-in-net-20-e-book-and-online-reference.html)

- Aug 16, 2006

    ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
