Как лучше спроектировать связь один ко многим в данном случае?
Доброго времени суток.
У меня есть задача создать проект базы данных. В базе данных около двух десятков таблиц, в которых описаны объекты хранения с различными характеристиками. Объединить таблицы в одну нельзя, поскольку они разнородны в плане хранимых данных. Но есть необходимость производить поиск по всем таблицам сразу относительно одной таблицы. Эта таблица указывает место хранения объектов (условно говоря: определённая полка в определённом углу склада). Я хотел бы задавать запрос по этой таблице и понимать, имеется ли что-то на этой полке и что конкретно.
На мой взгляд есть несколько решений. Либо создавать дополнительную таблицу, где все поля - внешние ключи на таблицы с объектами хранения и с местом хранения. Или же в таблице мест хранения указывать id объектов и их типы для последующей обработки логикой и поиска в соответствующих таблицах.
Помогите пожалуйста советом, как лучше сделать и нет ли более удачного решения данной проблемы. Хранить двадцать NULL неохота в случае с внешними ключами, но и дёргать дополнительные запросы тоже не хочется.
EVGENY T., Вот да, я хочу создать промежуточную таблицу, которая реализует связь многие ко многим, но останавливает то, что нужно будет по ряду полей хранить NULL, поскольку такие типы объектов там просто не хранятся. Ну и это нормально таблица примерно в двадцать полей, где все внешние ключи?
Роман, Вопрос, насколько каждый запрос много стоит, насколько большой результат и надо ли его сортировать. Эксперимент покажет :). Если результат уложится в ваши требования по быстродействию - почему бы и нет. Еще надо подумать про перспективы разрастания количества этих таблиц.
Если я правильно понял вопрос - вы можете сделать вьюшку (VIEW) в которой соберете необходимую для поиска информацию из табличек. Структуру базы менять не придется, а поиск будете выполнять по вьюшке