Database design for Time Sheet adopting different weekend
You don't say so explicitly, but I think maybe your concern is that you want to have a timesheet that has one column per day and you don't know what to do about inconsistent weekends.

If that's the case, then you're approaching it incorrectly.  Don't have columns for days.  Have rows in a details table for days.

Your timesheet should use individual entries at a date level, assuming you only want one entry per day.  If you want multiple entries per day (per worker) then have one entry per date and start time.

For weekends you keep a separate table for working days (of the week) per worker.  

Consider something like this:



Note that the WEEKDAY and TIMESHEET_STYLE_DETAIL tables (in blue) are a bit contrived. You could these tables, but really in practice I think a lot of people would probably use something like a bit flag array in the TIMESHEET_STYLE table containing a flag for each day of the week instead.

Note however that some of your SQL queries would actually be simpler if you did have an explicit WEEKDAY table and an intersection table (TIMESHEET_STYLE_DETAIL) that contained a row for each day of the week.  This way SQL functions that convert a date into a day of week number could be used as part of joins against this table.