Добрый день, два варианта структуры базы данных. Какой из них лучше выбрать со всеми за и против.
1) Одна таблица Stop_time ( ID, ID_ROUTE, ID_STOP, TIME)
2) Две таблицы. Time(ID, TIME) Stop_time ( ID, ID_ROUTE, ID_STOP, ID_TIME)
Две таблицы в этом случае не нужны. Совершенно никому не нужный, бессмысленный и беспощадный оверинжиниринг. Только замучаетесь LEFT JOIN делать с поводом и без, и поддерживать целостность такой связки.
Оптимизировать нужно в первую очередь так, чтобы проще было работать. И уж только потом, когда это работает, и в случае, если это тормозит, тогда и только тогда оптимизировать быстродействие.
Да и если в таблице всего 40к записей, то это тормозить не будет (разве что если Вы на калькуляторе запускаете базу) и небольшие проблемы с производительностью решатся грамотной расстановкой индексов в таблице.
Для правильного вопроса надо знать половину ответа
Если TIME - реальное время, то одна таблица, если ограниченный нерасширяемый список ("утро', 'день', 'вечер', 'ночь')- одна таблица с ENUM, если расширяемый список, то две таблицы.
Таблица представляет собой время остановки транспорта. Время представлено INT'ом и равно час*60+минуты. Количество записей в таблице около 40к. Разных значение TIME до 1к.
Теперь посчитайте сколько занимает места один TIME, и сколько один ключ (int), и поймёте, что столько же. А раз столько же, то в чём экономия. Наоборот, экономии здесь нет, только растрата на ключ. К томе же помните, что если вы захотите поменять содержимое таблицы TIME, то все пользователи TIME будут затронуты, а это ведь время!