How can I create blog specific database table in multisite?

The basic process – on activation, check if is_multisite, get all of the sites with wp_get_sites, loop over the results with foreach and switch_to_blog for each site ID, and create the table.

You’ll also need to hook the wpmu_new_blog action, check if is_plugin_active_for_network, switch to that blog ID and run your activation code, so sites added after activation have their table created. Don’t forget to switch back to the original blog ID after you run your activation.