Я выполнил поиск до публикации этого вопроса и не нашел ничего связанного напрямую, поэтому, если это дубликат, я прошу прощения. Я проектирую бизнес-систему, и, как и любая бизнес-система, у меня есть таблица «Клиенты» со столбцом «Идентификатор клиента PK».
Я работаю над таблицами телефонных номеров / адресов электронной почты, которые я хотел бы нормализовать таким образом, чтобы любой заданный CustomerID мог иметь несколько телефонных номеров и / или адресов электронной почты, когда меня поразила мысль. Большинство предприятий связывают один номер телефона для учетной записи любого человека и называют этот основной номер телефона. Этот номер телефона, скорее всего, будет отображаться в любых выписках, отчетах и т. Д. То же, что и адрес электронной почты.
Я начал думать о том, как будет работать запрос SELECT, если я хочу получить список клиентов с указанием их основного телефона и адреса электронной почты. Очевидно, что я мог бы использовать Inner Join для получения информации, но я бы хотел, чтобы каждый CustomerID появлялся только один раз, если у CustomerID было два телефонных номера, тогда они появлялись бы дважды в списке.
Итак, моей первоначальной мыслью было создание таблицы под названием CustomerCommunications, хранение телефонных номеров и адресов электронной почты и добавление туда столбца FlagPrimary, но это не совсем имеет смысла, потому что как бы вы узнали, была ли одна запись номером телефона или адрес электронной почты. (Очевидно, что контент выдаст его, но с точки зрения запроса это будет сложно). Тогда я подумал о добавлении таблицы CommunicationTypes с отдельными строками для основного телефона и основной электронной почты. Затем в таблицу CustomerCommunications я добавлю внешний ключ CommunicationTypeID, который позволит мне легко определить, какой телефон был основным, а какой - основным. Но потом я начал думать о том, каким CommunicationTypeID будут другие записи телефона и адреса электронной почты. Просто телефон и электронная почта? Дополнительный телефон и электронная почта?
Очевидно, что этот вопрос является субъективным и зависит от собственных дизайнерских идей, но в основном я ищу идеи, которые другие люди использовали при использовании таблицы «1 ко многим», но хотели бы иметь возможность легко выделить строку для отображение или отчетность.