нормализация в БД - PullRequest
       16

нормализация в БД

1 голос
/ 09 ноября 2010

Я хотел нормализовать свою таблицу ко всем 3NF. Я полагаю, что все следующее находится в 3NF, потому что нет транзитивности.Пожалуйста, уточните это, если я ошибаюсь

ЗАКАЗЧИКИ (custID, custName, custAddress, custDOB, custEmail)
СОТРУДНИКИ (empID, empName, empPhone, empAddress, BranchName)

Все предположения являютсяодин сотрудник работает в нескольких филиалах, и в каждом филиале работает один или несколько сотрудников

Ответы [ 3 ]

5 голосов
/ 09 ноября 2010

Допущения: каждый сотрудник работает в нескольких филиалах, а в каждом филиале один или несколько сотрудников

Но это не то, что вы смоделировали. В вашем отношении существует функциональная зависимость от филиалов и сотрудников.

Чтобы понять это, давайте подумаем, как бы вы представили сотрудника, который работает в нескольких филиалах в ваших отношениях. Единственный способ сделать это - несколько строк с одной и той же информацией о сотруднике, при этом меняется только поле BranchName. Что касается сотрудника, который вообще не работает в филиале (например, генеральный директор), то для этого сотрудника нет строк, и он полностью исчезает!

Позволяет разбить это на части.

BRANCHES(branchID, BranchName)
EMPLOYEES(empID, empName, empPhone, empAddress)

Но теперь нам нужно иметь много-много соответствий между ними. Предпочтительный способ сделать это с помощью таблицы соединений.

BRANCHES_EMPLOYEES(branchID, empID)
3 голосов
/ 09 ноября 2010

", но это уже в 3NF?"

Ваш вопрос не подлежит ответу.

Для того, чтобы он был формально ответственным, вы должны предоставить:

  • FULL схема вашей базы данных (т. е. схема, которая также моделирует / представляет отношения многие-ко-многим между сотрудниками и филиалами) и
  • полный наборидентифицированные зависимости атрибутов.

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

2 голосов
/ 09 ноября 2010

Или вы можете иметь одну таблицу Person с таблицей ролей, которая показывает, какие из них являются клиентами, а какие - сотрудниками. Такой дизайн позволит кому-то быть и клиентом, и сотрудником. Нет повторения имен, лучше нормализация. Роль «человек-много-много» имеет роль (человек может иметь много ролей; роль может принадлежать многим людям).

...