Быть очень просто: выпиливаем поле is_main, т.к. оно вносит избыточность, за которой надо следить (собственно, ваше условие, что только одна запись может иметь is_main, равное 1). Вместо этого впиливаем таблицу main_data (назовите как считаете верным), такой структуры: (item_id, id), поле item_id - первичный ключ, плюс вся пара является внешним ключом на my_table. Итого, у вас две таблицы одинаковой структуры (id, item_id). Однако в первой (которая my_table) у вас ключ (id), т.к. может быть несколько таких записей на один item_id, а во второй (main_data) у вас ключ (item_id). Во вторую таблицу вы сможете вставить максимум один элемент для заданного item_id (может правда такой записи не быть вообще, это придется контроллировать в коде). Кроме того, за счет предложенного внешнего ключа вы не вставите в main_data элемент, которого нет в my_table.