Обновить

Вопросы к собеседованию (#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

Записки из подполья незаконного архивирования фильмов

«Люди, видоизменяющие или уничтожающие художественные работы и наше культурное наследие ради прибылей или демонстрации власти — это варвары, и если законы США продолжат оправдывать такое поведение, то мы точно войдём в историю, как варварское общество.»

— Джордж Лукас, 1988 год

«Для меня её [оригинальной трилогии «Звёздных войн»] больше не существует. Я задумывал этот фильм именно так, и мне жаль, что вы увидели половину целого фильма и полюбили его.»

— Джордж Лукас, 2004 год

Ванкувер, 2011 год: мы с моей соседкой Виллой Росс сидим в одной из характерно стерильных монтажных студий Университета Саймона Фрейзера и уже не знаем, что делать: мы провели все выходные, ваяя из трёх разных копий вестерна Серджо Леоне 1966 года «Хороший, плохой, злой» одну версию — причём все три копии были незаконными рипами. В начале 2000-х этот фильм пал жертвой «реставрации», выполненной компанией MGM: вырезанные Серджо Леоне сцены были возвращены, увеличив время англоязычной версии с 161 до 179 минут; Клинт Иствуд и Илай Уоллак дублировали недостающие диалоги, а место умершего к тому времени Ли Ван Клифа занял похожий на него голосом дублёр. Монофоническая дорожка была переработана в многоканальный звук с неприятно современными звуками выстрелов. Почти десяток лет эта «дополненная» лента оставалась единственной продаваемой версией фильма; подобное очень часто происходит в эпоху ревизионистских студийных реставраций.

Наша цель была простой: спасти фильм от этой вивисекции. Мы планировали соединить звук уже не издававшегося DVD 1998 года (приблизительно похожий на звук международного релиза 1967 года) с видео из недавно привезённого Blu-ray итальянской версии. После того, как мы успешно преодолели многочисленные подводные камни, связанные с риппингом домашних видеозаписей конца 2000-х, наши надежды рухнули из-за катастрофического открытия: итальянская версия оказалась ещё сильнее отличающейся от международной, чем расширенная версия: печально известная сцена пытки была полностью перестроена, а у некоторых кадров отсутствовали начало и конец. Мы почти на десяток лет отказались от этой затеи.

Записки из подполья незаконного архивирования фильмов

Публикации