По второму мне видится так. Будем сохранять не каждое место в строке, а каждый сектор с рядом (стадион по-любому делится на сектора и в каждом секторе присутствует ряд). 1ая колонка - номер/ид сектора, 2ая колонка - номер/ид ряда сектора. В 3ью колонку в формате json для удобного хранения и передачи в приложение храним список номеров мест в ряду и признак занято/не занято. Как только все места в ряду имеют признак занятости, на весь ряд в этой строке в 4ую колонку ставим признак полной занятости ряда, тогда даже json не придётся парить, чтобы понять, что все места заняты. Если представить, что в каждом ряду в среднем 10 мест, то кол-во строк сокращается с 15к до 1.5к, а с учётом того, что к моменту полной продажи билетов, большое кол-во мест будет распроданы (особенно в передних рядах), по общему признаку занятости просто закрасим в приложении весь ряд в, условно, красный.
По второму мне видится так. Будем сохранять не каждое место в строке, а каждый сектор с рядом (стадион по-любому делится на сектора и в каждом секторе присутствует ряд). 1ая колонка - номер/ид сектора, 2ая колонка - номер/ид ряда сектора. В 3ью колонку в формате json для удобного хранения и передачи в приложение храним список номеров мест в ряду и признак занято/не занято. Как только все места в ряду имеют признак занятости, на весь ряд в этой строке в 4ую колонку ставим признак полной занятости ряда, тогда даже json не придётся парить, чтобы понять, что все места заняты. Если представить, что в каждом ряду в среднем 10 мест, то кол-во строк сокращается с 15к до 1.5к, а с учётом того, что к моменту полной продажи билетов, большое кол-во мест будет распроданы (особенно в передних рядах), по общему признаку занятости просто закрасим в приложении весь ряд в, условно, красный.