This is a relatively known and generally widely accepted drawback to using DB files. As another poster mentions, the overhead involved in
re-building the DB file after the deletion of a row within it would make using the DB file horribly slow and expensive. Space
is re-used where it can. In other words if you come back later and insert a new row, it will try to re-use some of the space already allocated (but 'deleted'), but it's not going to make an effort to shift everything else around to accomodate. This is precisely the same problem that leads to filesystem fragmentation.
If you want efficient data storage, consider using a real database instead.