Created
February 8, 2020 22:44
-
-
Save superchell/0d532b956ebaa82c4cb325f5ff69511c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Из минусов STI | |
1. Плохо масштабируется : по мере роста данных таблица может становиться большой и, возможно, трудной для обслуживания / запроса | |
2. Требуется осторожность при добавлении новых моделей или полей моделей, которые отличаются от общих полей | |
3. Позволяет создавать недопустимые объекты, если проверки отсутствуют | |
4. Может быть сложно проверить или запросить, если в таблице существует много нулевых значений | |
Из плюсов | |
1.Прост в реализации. | |
2. DRY - сохраняет реплицированный код, используя наследование и общие атрибуты | |
3. Позволяет подклассам иметь собственное поведение при необходимости | |
У полиморфной связи такие минусы: | |
1. Чем больше таблиц, тем больше запросов становится сложнее и дороже. (Поиск всех записей, которые были созданы в определенный период времени, должен будет отсканировать все связанные таблицы) | |
2. Не может иметь внешний ключ. Столбец id может ссылаться на любую из связанных таблиц модели, что может замедлять запросы. Он должен работать вместе со столбцом типа. | |
3. Если ваши таблицы очень большие, для хранения строковых значений для поля type используется много места | |
4. Целостность данных нарушена. | |
И такие плюсы: | |
1. Легко масштабируется по количеству данных: информация распределяется по нескольким таблицам базы данных, чтобы минимизировать раздувание | |
2. Легко масштабируемое количество моделей: больше моделей может быть легко связано с полиморфным классом | |
DRY: создает один класс, который может использоваться многими другими классами |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment