2014-12-06 4 views
0

У меня есть база данных, использующая PostgreSQL, которая содержит данные о студентах, приложениях и предложениях о работе.Ограничить студента, чтобы выбрать только одно предложение о работе

Есть ли какое-то ограничение, которое будет означать, что студент может принять только одно предложение о работе. Таким образом, выбрав «да» в атрибуте «принят на работу», они больше не могут делать это для любых других заданий, которые они могут получить?

+0

Добавить образец ввода и вывода –

ответ

0

Это не совсем «ограничение». Это всего лишь столбец. В таблице Student есть столбец AcceptedJobOffer. Это решает прямую проблему. Кроме того, вы хотите следующее:

AcceptedJobOfferId int references JobOffers(JobOfferid) 

А, а затем создать уникальный индекс на Applications для StudentId, JobOfferId и включают в себя:

foreign key (StudentId, AcceptedJobOfferId) references Applications(StudentId, JobOfferId) 

Это гарантирует, что предложение работы является действительным работа и что она ссылается приложение (при условии, что приложение является требованием - 100% времени - для принятия).

+0

Спасибо за ответ, я все еще новичок в этом! Итак, внешняя ключевая часть, которую я положил в таблицу приложений? –

+0

Внешний ключ находится в таблице «Студент». Это еще одна ссылка, которая гарантирует, что принятое задание имеет приложения (если это требование структуры данных). –

0

Я предполагаю, что у вас есть какая-то таблица приложений приложений, в которой есть поле is_accepted или что-то в этом порядке. Вы можете добавить на него exclude constraint. Example here.

Альтернативой является добавление столбца accepted_job_id (в идеале внешнего ключа) к таблице студентов, как уже было предложено Гордоном.

Замечание: если это будет иметь дело с реальными данными, а не с теоретическими данными в курсе базы данных, вы, вероятно, не захотите вообще принудительно применять ограничение. Иногда люди хотят или нуждаются в нескольких работах, поэтому ограничение системы таким образом, чтобы они не могли применяться к нескольким заданиям, вводит искусственное ограничение, которое может вернуться и укусить вас по дороге.

+0

Спасибо, за ваш ответ. Он предназначен для курса базы данных, и в нем указано, что студент может принять только одно предложение о работе. –

+0

@ elle_00: Да, подумал. :-) Выделите потенциальную проблему для своего профессора, хотя, если это уместно, вы можете получить бонусные баллы за то, что ожидаете проблемы, которые могут возникнуть в будущем. –

Смежные вопросы