Soft delete
A soft delete marks a record as deleted without removing it from the database. The row stays; a status column or a deletion timestamp flags it as gone. Normal reads filter it out, so from the user’s point of view the thing has been deleted — but the row is still available for audit purposes, for restoring, and for history.
Syndik8 uses soft delete for cancelled bookings and for several other records where the history matters. A cancelled booking disappears from the calendar but the row, its author, its times, and the reason for cancellation survive for the admin to inspect.
Membership rows also soft-delete: removing a member or leaving a syndicate sets the membership status to former rather than deleting the row. The audit trail of who was a member, when, and what role they held survives. When a membership flips to former, the member’s future bookings on that syndicate are automatically cancelled — past bookings and their usage logs stay so balances and history remain intact.