Как стать автором
Обновить

Вопросы к собеседованию (#1)

Вопрос про реляционным БД. Уровень - продвинутый. Однозначно верного ответа на вопрос по ходу дела нет, но интересен ход мысли интервьюируемого.

Дано: трех звенная архитектура - клиент, load balancer, несколько stateless серверов, реляционная БД (пусть будет postgres, но критично)

В БД есть таблицы school и subject

У subject поле school_id может быть null - это значит, что предмет относится ко всем школам ассоциации школ. Если school_id не null значит предмет специфичен только для этой школы.

Надо реализовать ограничение:

Нельзя создавать предмет с именем совпадающим с другим предметом для данной школы или с другим предметом в рамках ассоциации.

Например:

  1. У школы id:42 есть предмет "математика викингов" - нельзя создавать еще один предмет "математика викингов" для этой же школы. Но другие школы такой предмет создавать могут

  2. Есть предмет "геометрия" у которого school_id is null. Т.е. предмет относится ко всем школам. В таком случае нельзя создать еще один предмет "геометрия" ни в ассоциации, ни в одной из школ. Это имя полностью уникально.

Вопрос: Как собственно такое ограничение реализовать. Какие есть возможные варианты.

Бонус: В плюс идет вопрос кандидата - "что делать если у школы есть предмет геометрия и теперь такой предмет надо сделать на уровне ассоциации".

Всего голосов 3: ↑3 и ↓0+3
Комментарии3

Публикации

Истории

Ближайшие события

11 – 13 февраля
Epic Telegram Conference
Онлайн
27 марта
Deckhouse Conf 2025
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань