Uniqueness-like constraint but with limit greater than 1
Not all things can be easily achieved in SQL.  I think the best approach is to do the test in the application.  In pseudo code:

START TRANSACTION;
$ct = SELECT COUNT(*) FROM booking WHERE ...
if ($ct &gt;= 5)
    error to user
else
    INSERT ...
COMMIT;


OK, I guess this could be encapsulated in a Stored Procedure, plus error handling in your application.