Основные случаи информационного моделирования:
Случай А. Каждый клиент может иметь более одного номера телефона.
В этом случае номер телефона принадлежит отдельной таблице.
Дело А1. Это не тот случай, когда клиент обязан иметь номер телефона. то есть "отношение" - это от 1-1 до 0-n (т.е. при условии, что весь номер телефона всегда должен быть "для" какого-либо клиента). Ничего не поделаешь.
Дело А2. Это случай, когда каждому клиенту действительно требуется , чтобы иметь номер телефона. Вы можете смоделировать это как отношение, которое является 1-1 к 1-n, но "1" части 1-n очень трудно обеспечить в системах SQL (и в самой дешевой из них, наверное просто невозможно). Это не означает, что вы не должны надлежащим образом документировать бизнес-правило в том виде, в каком оно есть.
Случай В. Каждый клиент имеет НАИБОЛЕЕ один номер телефона.
Дело B1. Каждый клиент обязан иметь номер телефона. Это означает, что у каждого клиента всегда есть точно один номер телефона. Номер телефона лучше всего указывать в таблице клиентов. (Обратите внимание, что «иметь номер телефона» означает «иметь номер телефона, который известен магазину!)
Дело B2. Клиенту не обязательно иметь номер телефона. В формальной теории отношений требуется определить отдельную таблицу, в которой будут храниться только известные телефонные номера. В неформальных методах моделирования, таких как ER и UML, вы можете смоделировать это как «необязательный атрибут». В системах SQL многие могут определить для этого атрибут, допускающий значение NULL.
Что касается «телефонных номеров,« принадлежащих »адресам»: существует ли какая-либо «связь» между телефонными номерами и адресами, которая имеет отношение к вашему бизнесу? Я имею в виду, скажем, у одного клиента есть два адреса и два телефонных номера. Важно ли знать, какой из этих двух телефонных номеров принадлежит какому-либо из этих двух адресов? К какому адресу будет принадлежать номер мобильного телефона?