Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Эксперимент с естественными ключами.. / 5 сообщений из 5, страница 1 из 1
15.12.2016, 20:18
    #39368133
_Гостьи
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эксперимент с естественными ключами..
Eсть месячный отчёт по планированию, который структурировал так

Eсть таблица:
Наименование группы, Неснижаемый остаток

подчинённая таблица
Наименование изделия, план закупок

подчинённая таблица к наим. изделия
Дата, Дозаказ

Неснижаемый остаток, план закупок может пересматриваться от месяца к месяцу (для месяца статичен)
Дозаказы можем добавлять в течении месяца.

позиции Наименование изделия могут добавляться или удаляться
чтобы посмотреть изначальный отчёт в прошлом, первую таблицу разделим и подобавляем поле месяц
т.к. месяц неуникальный склеим его с годом - месяц-год)

Получим структуру
таблица plan (id, name) (id суррогатный ключ)
таблица plan_mnth (month, plan_code, balance) (month, plan_code будем считать естественным ключём)
таблица plan_product (month, plan_code, prod_code, weight) (month, plan_code, prod_code будем считать естественным ключём)
таблица plan_prod_reord (id, month, plan_code, prod_code, weight) (id суррогатный pk ключ, month, plan_code, prod_code естественный fk ключ)

по моему много замут с ведением естественных ключей,
с суррогатными, субъективно намного проще работать и те же join-ы писать?
...
Рейтинг: 0 / 0
16.12.2016, 10:38
    #39368367
DirksDR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эксперимент с естественными ключами..
_Гостьи,

Нарисовали бы сразу и альтернативный вариант:
таблица plan (id, name) (id суррогатный ключ)
таблица plan_month (id, month, id_plan, balance) (month, plan_code - уникальный индекс)
таблица plan_product (id, id_plan_month, prod_code, weight) (id_plan_month, prod_code - уникальный индекс)
таблица plan_prod_reord (id, id_plan_product, weight)
Теперь видно, что если использовать суррогатные ключи для связи, экономится место в базе.
Зато теперь Вы обязаны соединять все таблицы.
В первом варианте для некоторых запросов типа "посчитать максимальный дозаказ для планов за месяц"
можно было соединить только plan и plan_prod_reord.
...
Рейтинг: 0 / 0
16.12.2016, 16:34
    #39368815
_Гостьи
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эксперимент с естественными ключами..
совершенно верно,
получается, чем больше глубина, тем длиннее естественный ключ
...
Рейтинг: 0 / 0
22.12.2016, 08:15
    #39372536
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эксперимент с естественными ключами..
_Гостьи,
в аналитических задачах естественные ключи достаточно часто используется, и, если они есть, можно и нужно пробовать их использовать.
так что не бойся, и вперед!
...
Рейтинг: 0 / 0
22.12.2016, 16:53
    #39373142
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Эксперимент с естественными ключами..
_Гостьипо моему много замут с ведением естественных ключей,
Вы ещё даже не добрались до настоящих замут с ведением естественных ключей.

_Гостьис суррогатными, субъективно намного проще работать и те же join-ы писать?
Намного проще и намного надёжнее. Естественные ключи подходят, по сути, только в одном месте: в витрине данных, которую Вы в любой момент можете полностью перегрузить с нуля.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Эксперимент с естественными ключами.. / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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