powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организация ключей
25 сообщений из 35, страница 1 из 2
Организация ключей
    #33501172
romanich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем спецам!
Подскажите, пожалуйста, как решить такую проблему:
имеется несколько справочных таблиц, они связаны с одной основной таблицей.
Как организовать первичный ключь справочных таблиц, что бы в основной таблице они
не совпали?
Я видил ключи такого рода as12fde.
...
Рейтинг: 0 / 0
Организация ключей
    #33501180
Dimkas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
romanich
Как организовать первичный ключь справочных таблиц, что бы в основной таблице они
не совпали?
сразу встречный вопрос - а зачем надо чтобы они не совпали?
есть подозрение что на несколько разных справочников ссылается одно поле - если это так, то надо сильно подумать на правильностью такого решения :)
romanichЯ видил ключи такого рода as12fde.
вообще подходов как минимум два:
1. Сделать чтобы ключи в все справочники заносились из одного источника (generator, sequence, etc.)
2. GUID
...
Рейтинг: 0 / 0
Организация ключей
    #33501308
romanich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, наверное неясно выразился, поясню:
есть справочные таблицы - двигателя, выключатели, трансформаторы и т.п.. И есть основная таблица, содержит в себе список материалов для ремонта этого оборудования.
Ключи в справочных таблицах у меня автоинкрементируемые поля и соответственно могут совпасть с другими ключами из др. таблиц.

вообще подходов как минимум два:
1. Сделать чтобы ключи в все справочники заносились из одного источника (generator, sequence, etc.)
2. GUID

А можно подробнее про генерацию?

вопрос проиллюстрирован
...
Рейтинг: 0 / 0
Организация ключей
    #33501675
Alexey Syrok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"засунь" все справочные в одну...
...
Рейтинг: 0 / 0
Организация ключей
    #33501726
Slider_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, выбран неправильный подход и под него пытается найтись правильное решение. Все справочники нужно объеденить в одну таблицу, а для различия добавить поле обозначающее тип справочника.
...
Рейтинг: 0 / 0
Организация ключей
    #33501731
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romanich
В общем-то правильный ответ прозвучал - нарисованная Вами структура как правило неудачна.

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

В Oracle возможно еще одно неправильное решение - хранить в ссылающейся таблице не id, а rowid. И одно теоретически правильное, но (afaik) очень редко используемое - хранить object reference.
...
Рейтинг: 0 / 0
Организация ключей
    #33501737
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное спрашивающий не зря разделил справочники на несколько таблиц. наверное были причины? (это вопрос)
...
Рейтинг: 0 / 0
Организация ключей
    #33502037
romanich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman прав, таблицы разделены из-за того что каждое обордование имеет один тип, напр. двигатель ДВ-100, а таких двигателей 100 шт, различаются они инв. номерами, на рис. было бы еще по одной таблице, хранящих специфику двигателей, выключателей и т.д.
Т.е. здесь вариант решения только по генерации ключей. Как это сделать, подскажите?
...
Рейтинг: 0 / 0
Организация ключей
    #33502057
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего лучше чем SEQUENCE для этой цели не было придумано...
А у вас база какая?
...
Рейтинг: 0 / 0
Организация ключей
    #33502064
romanich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
база на ms sql 2000.
...
Рейтинг: 0 / 0
Организация ключей
    #33502405
Slider_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот человек, сначала разложит грабли, а затем вырабатывает методу их обхода, вместо того, чтобы держать грабли в специально отведенном месте :)
Не вижу причин (кроме упрямства автора), мешающих объединить эти справочники с их типизацией по группам.
...
Рейтинг: 0 / 0
Организация ключей
    #33502593
romanich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Slider_spb
Извините, но хранить такую инфу в одной таблице, по моему, не практично:

Двигатели
Название обороты напряжение мощьность
дв-100 1000 380 500

выключатели
название секций напряжение
вк-1 2 380

трансформаторы
название вх. напр. вых. напр.
тр-380 10000 380

ПРичем у каждого 100-ни инвентарных номеров.
Я не смогу просто это впихнуть в одну таблицу, большая избыточность получается и пустые поля.
...
Рейтинг: 0 / 0
Организация ключей
    #33504556
Slider_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э, как все запущено, у вас и таблички не нормализованы… Вас никогда не учили разделять сущности и данные к ним? Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Справочник объектов:
ID Наименование ID_Типа
1  дв-100  1
2  дв-101  1
3  вк-1    2
4  вк-2    2
5  тр-380  3
6  тр-380  3
-----------
Типы:
ID_Типа Наименование
1 Двигатель
2 Выключатели
3 Трансформаторы
-------------------
Данные двигателей
ID обороты напряжение мощность
1  1000  380  500
--------------------
Данные выключателей
ID секций напряжение
3  2  380
----------------------
Данные трансформаторов
ID вх.напр. вых.напр.
5  10000  380
...
Рейтинг: 0 / 0
Организация ключей
    #33505255
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slider_spbЭ, как все запущено, у вас и таблички не нормализованы… Не то, чтобы я придирался к словам:), но причем тут нормализация?
Вы описали типизацию (subtyping).
...
Рейтинг: 0 / 0
Организация ключей
    #33505415
Slider_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, насчет того, что приведенные romanich таблички не нормализированы, я может и погорячился (по тем данным что приведены, однозначно сказать нельзя), а то что я сделал, действительно является типизацией, что было сказано мной чуть выше.
...
Рейтинг: 0 / 0
Организация ключей
    #33505721
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romanichИзвините, наверное неясно выразился, поясню:
есть справочные таблицы - двигателя, выключатели, трансформаторы и т.п.. И есть основная таблица, содержит в себе список материалов для ремонта этого оборудования.
Ключи в справочных таблицах у меня автоинкрементируемые поля и соответственно могут совпасть с другими ключами из др. таблиц.
А я пока так и не понял, зачем нужно, чтобы ключи в справочных таблицах не совпали. Ну совпадут они в основной таблице и что? Что является ключом в основной таблице? Какая-то странная, IMHO, проблема. Можете пояснить?
...
Рейтинг: 0 / 0
Организация ключей
    #33506157
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mirА я пока так и не понял, зачем нужно, чтобы ключи в справочных таблицах не совпали.
Есть такая популярная идея - не включать в ссылающуюся таблицу поле "тип объекта", а вместо этого join-ами кодировать использование того или иного типа.
...
Рейтинг: 0 / 0
Организация ключей
    #33509773
romanich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая популярная идея - не включать в ссылающуюся таблицу поле "тип объекта", а вместо этого join-ами кодировать использование того или иного типа

А вот это уже интересно, softwarer , поясните пожалуйста реализацию такого механизма.
...
Рейтинг: 0 / 0
Организация ключей
    #33511251
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сверхстандартный пример. Физлица, юрлица, непересекающиеся айдишники. В этом случае:

Код: plaintext
1.
2.
select *
from Документы д, "Физ.лица" ф
where д.контрагент = ф.ид

- документы, выписанные на физических лиц. Или, например,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select
  ..
  coalesce (ф.Имя, ю.Название) Контрагент
from
  Документы д, "Физ.лица" ф, "Юр.лица" ю
where 
  д.контрагент = ф.ид (+) and
  д.контрагент = ю.ид (+)

Подчеркну, что практика.. сомнительная с моей точки зрения, но упоминается довольно часто.
...
Рейтинг: 0 / 0
Организация ключей
    #33511434
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softwarer
Весьма непроизводительное решение.
...
Рейтинг: 0 / 0
Организация ключей
    #33511548
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman
Как Вам сказать... с одной стороны, я не совсем уверен, что Ваше утверждение справедливо для произвольной ситуации. С другой стороны, я решительно не собираюсь говорить что-либо в пользу решения, которое считаю откровенно плохим.
...
Рейтинг: 0 / 0
Организация ключей
    #33511557
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот и договорились - решение плохое, хотя и рабочее. ))
...
Рейтинг: 0 / 0
Организация ключей
    #33512227
romanich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman вот и договорились - решение плохое, хотя и рабочее. ))
Но, часто, такими решениями и приходится пользоваться. Я, думаю, остановлюсь на этом варианте.
...
Рейтинг: 0 / 0
Организация ключей
    #33512249
Dimkas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
romanichНо, часто, такими решениями и приходится пользоваться. Я, думаю, остановлюсь на этом варианте.
вижу, что автор уже почти определился с решением и всё таки переспрошу ещё раз: зачем делать в одном поле ссылку на несколько таблиц?!
...
Рейтинг: 0 / 0
Организация ключей
    #33512579
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimkas romanichНо, часто, такими решениями и приходится пользоваться. Я, думаю, остановлюсь на этом варианте.
вижу, что автор уже почти определился с решением и всё таки переспрошу ещё раз: зачем делать в одном поле ссылку на несколько таблиц?!
Элементарно, Ватсон. Это - типизация. И когда нужно объекты определенного типа обрабатывать отдельно и по-своему, то может очень сильно повысить производительность.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организация ключей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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