Isn't it a problem with many-to-many relationships in relational algebra? You have to have this artificial table to relate things in many-to-many way. How would you display it in a better way?
The tables should be better ordered. "speakers" is obviously the primary table here and should be top left. The "session_speakers" should be between it and the table it maps "sessions." Then "reviews" and "events" on the bottom. There's an obvious "top end" and "bottom end" of this structure that this graph completely gets wrong.
You could argue that "events" are primary in which case just switch the order of that and "speakers."
I'd color the table headers differently and different from each other and have the arrows leaving that box match the color of the box it's leaving. Also drop "public:". It's expected and default so it does not need to be displayed here.
Drop the key icon and just make the key fields in bold or with a different style.
Don't make me hunt around to match information and don't be afraid to use differential styling.
That's great feedback! Thank you! I wonder if we can auto-layout in the way you describe. Should be doable. We will look into it.