Data model to hold attendance records?
There's a lot of redundancy between the mma and the bjj tables. If the only real data difference between an MMA practitioner and a BJJ practitioner is the belts and stripes, I'd consider pushing the unique fields from mma_practitioner and bjj_practitioner tables into the martial_arts_practitioner table; including adding a field indicating whether a given practitioner is mma or bjj (if mutually exclusive), or small fields (bit or 1 character) mma and bjj (if someone can be in both).

Even if other practitioner types will be added later, I'd still recommend this change; creating and maintaining an entire set of roster and session tables for each practitioner type wouldn't necessarily scale well. If there are more significant differences that aren't obvious, that could change this recommendation, but I can't think of anything off the top of my head.

An additional thought: it looks like instructors and students are both kept in the same table. This may make sense (especially if an instructor can also be a student in some other class or practition type). However, there are likely to be a number of fields unique to teachers (certifications, wages/salary, etc.) that would not apply to students. Similarly, there are likely to be a number of fields unique to students (grades, source [for marketing to other students], etc.) that wouldn't apply to instructors. And, presumably, every class/training session must have an instructor. It might make sense to have students and instructors in separate tables.