How would you select the most recent record?  Like this?

    select *
    from tbl
    where StartDate = (select max(StartDate) from tbl)

That's a little cumbersome and seems inefficient though I haven't tested it.

Consider having a boolean `isMostRecent` column.  This column is 0 for all records except the most recent record.  In this way, here's how you'd select the most recent record:

    select *
    from tbl
    where isMostRecent = 1

To affect this, you'll need a two step insert procedure (with a transaction):

    update tbl set isMostRecent = 0 where isMostRecent = 1
    insert into tbl (..., isMostRecent) values (..., 1)

With this approach, you're storing calculated fields.  [Here's some discussion][1] on the pros and cons of storing calculated fields.  With an index on isMostRecent, this could speed up performance.  It depends on how you're using this table.

Edit: This doesn't preclude you from having StartDate and EndDate columns.  You'll probably still want a StartDate column at least so you can look back in time.

  [1]: https://dba.stackexchange.com/questions/290/is-it-better-to-store-calculated-values-or-recalculate-them-on-request