How many transaction deadlocks do you get? I haven't run into any on IHUB, so I don't think it's a big problem. As far as the database goes, it seems to be in good shape. The only thing I would have done differently is the unique message ID that spans all boards. I would have made a two-segment primary key (board_ID, message_ID) and passed that in the URL.