This article presents an algorithm to refresh the contents of database snapshot. a database snapshot is a read-only table whose contents are extracted from other tables in the database. the snapshot contents can be periodically refreshed to reflect the current state of the database. snapshots are useful in many appplications as a cost effective substitute for replicated data in a distributed databse system. when the snapshot contents are a simple restriction and projection of a single base table, differential refresh techniques can redce the message and update costs of the snapshot refresh operation. the algorithm presented annotates the base table to detect the changes which must be applied to the snapshot table annotations is minimal and the amount of data transmitted during snapshot refresh is close to optimal in most circumstances.