How using many tables and JOINS affect performance vs. using limited number of tables and lesser JOINS?
You are obviously familiar with data normalization and joining tables.  Not to dismiss your question, but I would focus more on a solid design that captures the information in the simplest way and without putting undo constraints on your application.  I think you'll find then the performance works itself out.  I'm wondering what's wrong with this:

TABLE events
  id | shop_id | title | desc | from (DATETIME) | to (DATETIME)


To figure out a day's schedule, you then have to do some work on those DATETIME fields to figure out whether they were on Mon, Tue, etc.  But that's pretty easy,  and now there's all sorts of other ways you could slice this data.  You could even create 7 VIEWS (S,M,T,W,T,F,S) that return only events on each day of the week, if that's so important.