У меня есть некоторая гибкость здесь, поэтому я ищу несколько советов, прежде чем заблокировать вещи.У меня также есть несколько способов решения этой проблемы, но я ищу совет относительно наиболее эффективного способа сделать это.Поскольку специфика моих типов данных немного неясна, я буду использовать более понятную метафору объекта.
Сейчас у меня есть две основные таблицы и большое, но конечное число дополнительных таблиц.Применяется следующая бизнес-логика.
- Каждому конкретному столу животных присвоено уникальное поле, например, «диаметр рыла» для свиньи или «усы» для кошки.Есть также другое поле
- В таблице животных есть поле, обозначающее животных "Роль".
- В клетке может быть несколько животных.
Животныесвязаны с клетками по ограничениям FK.Конкретные таблицы животных связаны с таблицей животных ограничениями FK.
- Клетки
- Животные
- Кошка
- Собака
- Свинья и т. Д.
Основной вопрос, который задают, что находится в клетке?Мне также нужно быть в состоянии найти все клетки как можно быстрее и получить всю информацию о животных, которые попадают в роль «вкусно».Иногда свинья будет «вкусной», иногда это может быть кошка.В зависимости от типа «вкусного» животного мне нужно отобразить его конкретную информацию.
Каков наиболее эффективный дизайн схемы или SQL-оператор для поиска этой информации?
В моей первой попытке были только клетки и несколько таблиц SpecificAnimal.Это казалось плохой идеей, потому что мне нужно было объединить более 10 таблиц, чтобы выяснить, что находится в клетке.Затем я переместил общие атрибуты в таблицу животных, что позволило мне легко увидеть, какие животные были в клетке, хотя для получения всех данных требовался поиск по конкретным таблицам.Я размышлял о сохранении определенных атрибутов в какой-то форме строки CSV (но я еще не настолько отчаялся). Конечно, я мог бы использовать EAV, но это также кажется неэффективным, поскольку на самом деле существует конечное количество животных.
Я беспокоюсь?Должен ли я просто прикусить пулю и принять соединения за 10 столами?Просто беспокоюсь о производительности .... Любые идеи или шаблоны проектирования, которые можно порекомендовать.Страдает от информационной перегрузки и насморка.Помогите пожалуйста.