|
Какая схема лучше, кто как делает
|
|||
---|---|---|---|
#18+
Рассмотрим гипотетический пример доставки товара клиентам по разным адресам, когда у любого клиента может быть некоторое количество адресов доставки. В этом случае в таблицу - шапку документов отгрузки (ТТН) можно в дополнение к коду клиента ввести поле - внешний ключ со ссылкой на таблицу адресов, в которой будет присутствовать также код клиента и признак IsDefault, указывающий, что данный адрес для данного клиента используется по умолчанию. Немного отличающийся вариант - ввести поле, специфицирующее адрес конкретного клиента, так что внешний ключ - ссылка на таблицу адресов -состоял бы уже из двух полей - поля кода клиента и этого поля. Какой вариант вы предпочтёте, уважаемые спецы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2003, 00:16 |
|
Какая схема лучше, кто как делает
|
|||
---|---|---|---|
#18+
т.е. есть таблица адресов: (ID, ClientID, Address, ...), причем ID-ключ. Тоды в шапке надо указывать только AddressID, без ClientID (типа борьба с транзитивностью). Но т.к. таким манером обычно не поступают, а хранят в "шапке" непосредственно код клиента, то сделай в таблице адресов составной ключ (ID, ClientID), а поле ID сделай минимально возможным - 1 байт. Думаю, что 256 пунктов доставки вполне хватит на клиента. Ну и ссылайся из шапки по (ClientID, ClientAddressID). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2003, 08:48 |
|
Какая схема лучше, кто как делает
|
|||
---|---|---|---|
#18+
Таблица Клиент (ID_Klient, ...) Таблица АдресаКлиентов (ID_Adress, ID_Klient, blnDefault,...) Таблица Отгрузка (ID_Otgruz, ID_Klient, ID_Adress,...) Вроде так бы сдел я (если конечно не брать во внимание, что по одному адресу м.б. несколько клиентов - но это уже другая задачка:) Хотя ID_Klient в Отгрузке лишний (можно выцепить ID_Klient и по ID_Adress в таблице АдресаКлиентов), но это дополнительная таблица при построеннии запросов. А так как данная связка (для вычленения клиента, которому что-то отгружено) будет использоваться достаточно активно, то я бы пошел на такую денормализацию ради маленькой выгоды) Правда тут вижу еще один подводный камень: возможность доставки товара одному клитенту по одному документу, но по разным адресам, но это уже другая задачка:) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2003, 11:39 |
|
Какая схема лучше, кто как делает
|
|||
---|---|---|---|
#18+
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,...) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2003, 03:34 |
|
|
start [/forum/topic.php?fid=32&msg=32234762&tid=1546875]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 256ms |
total: | 394ms |
0 / 0 |