Bitemporal design denotes both the valid time and transaction time of the data in two timelines with timestamps for both valid times in a temporal database.
In simple words, bitemporal is a way to maintain historical/timeline data and timestamps of the change in data. For example, you can create and save the historical/timeline record of a row every time it changes with a active/inactive flag or using a modified/touched timestamp to the old and newly modified row; either you save every change in the same table or create another(log/archive) table to save the historical changes(and the present table will have only the latest updated row).