Первичный ключ с более чем 3 атрибутами

Рассмотрим отношение, которое изображает бронирование учебной комнаты в университете. Каждый факультет назначает человека для обработки бронирования на все учебные занятия для этого факультета. Адрес электронной почты человека передается в систему бронирования университета в качестве контактного лица. БРОНИРОВАНИЕ (b_date, b_starttime, b_endtime, unit_code, contact_person, room_no, tutor_id).

Упражнение: определите кандидатный ключ (и) и первичный ключ для отношения, если применимы следующие бизнес-правила:

1) Учебные занятия могут длиться 1 или 2 часа.

2) Репетитор может вести только один учебный класс в данном блоке.

3) Параллельных сессий учебных занятий не существует.

Мой ответ: один из возможных ключей - это (tutor_id, d_date). Мой ключ предложения может сделать каждый кортеж уникальным, НО нет ограничений, которые препятствуют неправильному вводу пользователей, как показано ниже:


tutor_id | d_date | b_starttime | b_endtime | unit_code |

AAAA | Пн | 18:00 | 8 вечера | FIT1111 |

BBBB | Пн | 18:00 | 19:00 | FIT1111 |


ИЛИ


tutor_id | d_date | b_starttime | b_endtime | unit_code |

AAAA | Пн | 18:00 | 8 вечера | FIT1111 |

BBBB | Пн | 19:00 | 8 вечера | FIT1111 |


Следовательно, мой ключ не соответствует бизнес-правилу № 3. Затем я добавляю еще 2 атрибута к кандидатному ключу (tutor_id, d_date, b_starttime, b_endtime).

У меня возникает вопрос: когда мы выбираем ключ-кандидат, помимо гарантии уникальности каждого кортежа, нужно ли нам защищать пользователей от возможных неправильных вводов, которые могут нарушить бизнес-правила? Если да, то когда мы устанавливаем, например, 4 атрибута (A, B, C, D) в качестве первичного ключа, блокирует ли СУБД пользователей от неправильного действия ввода, как в таблице выше?

Спасибо.

Здравствуй. Смотрите мой ответ на ваш главный вопрос. Но этот пример трудно обсуждать, потому что вы недостаточно ясны. Читайте и выполняйте действия в поисковой системе Google «stackexchange homework». КК определяются ФД. Каковы ваши FD и все CK и почему & потом, какие еще ограничения и почему? Покажите свою работу в соответствии с определениями и алгоритмами из учебника. PS Форматируйте таблицы в кодовых блоках. См. Справку по редактированию и всегда просматривайте отформатированную версию своего сообщения перед публикацией. Пожалуйста, не редактируйте вопрос таким образом, чтобы сделать уже опубликованные разумные ответы недействительными. Пожалуйста, задавайте только один вопрос для каждого сообщения.

philipxy 11.08.2018 08:21
0
1
34
1

Ответы 1

My questions is when we choose candidate key, apart from guaranteeing the uniqueness of each tuple, do we need to prevent users from possibly wrong input which may break the business rules?

Да, мы должны объявить достаточно ограничений, чтобы запретить все недопустимые состояния. И да, объявления одного или даже всех CK (ключей-кандидатов) не обязательно. (Почему это должно быть? Как вы думаете, у вас есть причина, по которой это должно быть?)

СК не просто заявляет об уникальности набора атрибутов. Он также заявляет о неединственности любого собственного подмножества этого набора.

CK используются для нормализации к более высоким NF (нормальным формам), что избавляет от некоторых проблемных ограничений, которые заключаются в том, что таблица всегда должна быть объединением других таблиц, которые вы могли бы иметь вместо этого. Он удаляет вашу текущую таблицу и представляет эти таблицы и их ограничения CK, а иногда и ограничения FK (внешнего ключа), которые должны отображаться в другом месте как CK. Но могут существовать и другие ограничения, о которых следует объявить.

If yes, when we set, for example, 4 attributes (A, B, C, D) as the primary key, whether the DBMS blocks users from wrong input action as in the table above?

Вы упоминаете, что конкретное ограничение CK не предотвратит определенные недопустимые состояния. Но поскольку вы всегда должны объявлять все CK, вы должны найти их все, прежде чем вы начнете искать недопустимые состояния, которые не предотвращены. Кроме того, фраза «Затем я добавляю еще 2 атрибута к ключу-кандидату» не имеет смысла, потому что 1. это не то, как мы находим CK и 2. CK плюс другие атрибуты не могут быть CK.

(Прочтите и отреагируйте на результаты поиска в Google "stackexchange homework" и опубликуйте новый вопрос, показывающий вашу работу после того, как ваш учебник находит CK.)

Другие вопросы по теме