Какова лучшая практика для нескольких типов идентификаторов?- вопрос нормализации - PullRequest
0 голосов
/ 08 июля 2019

Если у меня есть три типа идентификатора, скажем, идентификатор сотрудника, идентификатор клиента, идентификатор поставщика, и все они имеют набор атрибутов. Должны ли я просто иметь их в одной таблице или есть лучший способ организовать их? Могу ли я просто назвать первичный ключ "ID", чтобы включить все тебя? - Это принятая практика? Я узнал, что обычно первичный ключ и внешний ключ должны иметь одно и то же имя, так что, может быть, это не разрешено?

1 Ответ

0 голосов
/ 08 июля 2019

Я бы сказал, что если все они имеют одинаковые атрибуты, то все они будут находиться в одной таблице в общем столбце ID.

Например, таблица person:

  • ID
  • имя
  • тип (employee, customer, supplier)

Это позволит вам запрашивать каждый из отдельных типов с помощью чего-то вроде:

SELECT * FROM person WHERE type = customer

Если есть информация, уникальная для каждого типа идентификатора, вы можете обозначить атрибуты, связав их с другой таблицей. Например, скажем, employee имеет более подробную дополнительную информацию (например, manager). И employee , и * * manager будут находиться в одной общей таблице, и вы создадите 'таблицу мостов' (или 'ассоциативную сущность') , чтобы связать их вместе :

employee_manager Соединительный стол:

  • employee_id
  • manager_id

Таким образом, вы можете найти всех сотрудников, которые принадлежат определенному менеджеру с:

SELECT * FROM employee_manager WHERE manager_id = 1

И сопоставьте их с таблицей person с JOIN в зависимости от типа информации, которую вы хотите получить.

...