powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Какая схема лучше, кто как делает
4 сообщений из 4, страница 1 из 1
Какая схема лучше, кто как делает
    #32234762
Sjfx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рассмотрим гипотетический пример доставки товара клиентам по разным адресам, когда у любого клиента может быть некоторое количество адресов доставки. В этом случае в таблицу - шапку документов отгрузки (ТТН) можно в дополнение к коду клиента ввести поле - внешний ключ со ссылкой на таблицу адресов, в которой будет присутствовать также код клиента и признак IsDefault, указывающий, что данный адрес для данного клиента используется по умолчанию.
Немного отличающийся вариант - ввести поле, специфицирующее адрес конкретного клиента, так что внешний ключ - ссылка на таблицу адресов -состоял бы уже из двух полей - поля кода клиента и этого поля.
Какой вариант вы предпочтёте, уважаемые спецы?
...
Рейтинг: 0 / 0
Какая схема лучше, кто как делает
    #32234862
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. есть таблица адресов: (ID, ClientID, Address, ...), причем ID-ключ.

Тоды в шапке надо указывать только AddressID, без ClientID (типа борьба с транзитивностью). Но т.к. таким манером обычно не поступают, а хранят в "шапке" непосредственно код клиента, то сделай в таблице адресов составной ключ (ID, ClientID), а поле ID сделай минимально возможным - 1 байт. Думаю, что 256 пунктов доставки вполне хватит на клиента. Ну и ссылайся из шапки по (ClientID, ClientAddressID).
...
Рейтинг: 0 / 0
Какая схема лучше, кто как делает
    #32236307
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица Клиент (ID_Klient, ...)
Таблица АдресаКлиентов (ID_Adress, ID_Klient, blnDefault,...)
Таблица Отгрузка (ID_Otgruz, ID_Klient, ID_Adress,...)

Вроде так бы сдел я (если конечно не брать во внимание, что по одному адресу м.б. несколько клиентов - но это уже другая задачка:)
Хотя ID_Klient в Отгрузке лишний (можно выцепить ID_Klient и по ID_Adress в таблице АдресаКлиентов), но это дополнительная таблица при построеннии запросов. А так как данная связка (для вычленения клиента, которому что-то отгружено) будет использоваться достаточно активно, то я бы пошел на такую денормализацию ради маленькой выгоды)
Правда тут вижу еще один подводный камень: возможность доставки товара одному клитенту по одному документу, но по разным адресам, но это уже другая задачка:)
...
Рейтинг: 0 / 0
Какая схема лучше, кто как делает
    #32238148
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Viktor

Таблица Клиент (ID_Klient, ...)
Таблица АдресаКлиентов (ID_Adress, ID_Klient, blnDefault,...)
Таблица Отгрузка (ID_Otgruz, ID_Klient, ID_Adress,...)

blnDefault - избыточен, неинформативен в 99%, к тому же заставляет "прочесывать" АдресаКлиентов в поисках Default.

Таблица Клиент (ID_Klient, ID_DefaultAddr...)
Таблица АдресаКлиентов (ID_Adress, ID_Klient,...)
Таблица Отгрузка (ID_Otgruz, ID_Klient, ID_Adress,...)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Какая схема лучше, кто как делает
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]