Встречается на собеседованиях • сегодня

Какие проблемы могут возникнуть при использовании связей one-to-many и many-to-many

При использовании связей one-to-many и many-to-many в ORM (например, SQLAlchemy) могут возникнуть следующие проблемы:

  1. Каскадные операции - при удалении родительской записи могут неожиданно удалиться связанные данные. Нужно явно указывать cascade параметры:
python
class Parent(Base):
    children = relationship("Child", cascade="all, delete-orphan")
  1. N+1 проблема - при ленивой загрузке каждый дочерний объект запрашивается отдельным запросом. Решение - использовать joinedload:
python
session.query(Parent).options(joinedload(Parent.children)).all()
  1. Целостность данных - в many-to-many нужно следить за согласованностью промежуточной таблицы. Лучше использовать association_proxy для упрощения работы.

  2. Производительность - большие связи могут замедлять запросы. Стоит добавлять индексы на внешние ключи.

  3. Круговые импорты - при определении моделей в разных файлах. Решение - использовать строковые имена классов:

python
children = relationship("Child", back_populates="parent")
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы