I wish you had posted actual DDL instead of making us do your typing for you. Did you read the Netiquette at the at the start of the forum?
The point you missed is the time as a continuum. And that his status is a state of being. This means that an entity has a particular status during a time. The time period is shown as (start_time, end_time) pairs.
If the status you are dealing with, has a lot of values, or frequently changes, then use a reference to another table. If the status you are dealing with, has a few static values, then put it in a check constraint. I would guess yours is the second case.
CREATE TABLE Doors
(door number integer nOT NULL.
door_status char (5) not null
check (door status in ('open', 'close')),
Open_date date not null,
primary key (door number, open_date),
check (open_date <= close_date)
What you have is a design error called "attribute splitting" and it is very common. What you have done is mimic in SQL. What would have been on the clipboard with a sign out sheet.
What other people are suggesting is the kludge that you always get stuck with in a split design – – reassembling the fact that you split into pieces. Do not do that, this is like a mop. This is like mopping the floor but not fixing the leak in the roof.