Повторяя ваши предположения
Это не предназначено для изменения ваших предположений, а просто для их уточнения.
У вас есть схема отношений:
Employee
: Emp_Id
, Name
, E_mail
, Phone_Number
, Date_Of_Joining
, Address
и для этого вопроса вы предусматриваете:
- Каждый сотрудник имеет один адрес электронной почты, и он уникален для них.
- У каждого сотрудника есть один номер телефона, и он уникален для них.
Таким образом, у вас есть три «основных атрибута» (в нотации Кодда) или три ключа-кандидата для этой схемы:
Emp_Id
E_mail
Phone_number
Учитывая идентификатор сотрудника, сотрудник определяется однозначно; по номеру телефона сотрудник определяется однозначно; учитывая адрес электронной почты, сотрудник определяется однозначно.
Ваша схема отношений в 3NF
Если то, что сказано выше, является правильной интерпретацией схемы отношений, то ваше замечание о «Мне нужно разделить информацию E-mail и Phone_Number в отдельную таблицу (для 3NF)» неверно. Нет необходимости их разделять.
При указанных условиях ваша схема отношений уже находится в 3NF; действительно, это также в BCNF (нормальная форма Бойса-Кодда). Отношение в 2NF и нет транзитивных зависимостей.
Ответ на вопрос 1
Да, вы можете оставить таблицу такой, какой она есть, потому что она уже в 3NF.
Ответ на вопрос 2
Нет - потому что 3NF не требует ни одного ключа-кандидата, который, по-вашему, необходим. Кроме того, нет особого требования хранить идентификатор электронной почты в основной таблице; таблица адресов электронной почты будет иметь первичный ключ, который является идентификатором сотрудника, и не требует идентификатора электронной почты, поскольку адреса электронной почты являются уникальными для сотрудника (в соответствии с правилами взаимодействия для этого вопроса). Аналогично для телефонных номеров.
На практике у сотрудника может быть несколько адресов электронной почты, и он может иметь несколько телефонных номеров, даже для личного пользования (отдельно от корпоративного адреса электронной почты и корпоративного номера телефона). При таких обстоятельствах у вас будет «непустой список адресов электронной почты» и «непустой список телефонных номеров» для конкретного сотрудника, а затем вам понадобятся отдельные таблицы для их записи. Номер телефона будет основным ключом таблицы информации о телефоне, а идентификатор сотрудника будет FK в таблице номеров телефонов; адрес электронной почты будет основным ключом таблицы электронной почты, а идентификатор сотрудника будет FK в таблице адресов электронной почты.
Ваша схема отношений должна как-то перечислить эти несколько записей, и это не будет 1NF, не говоря уже о 2NF или 3NF (при некоторых разумных предположениях относительно того, как списки могут быть представлены). И критерий «непустой» потребует тщательного применения.