
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.01.2006, 05:27
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
Привет всем спецам! Подскажите, пожалуйста, как решить такую проблему: имеется несколько справочных таблиц, они связаны с одной основной таблицей. Как организовать первичный ключь справочных таблиц, что бы в основной таблице они не совпали? Я видил ключи такого рода as12fde. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 05:48
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
romanich Как организовать первичный ключь справочных таблиц, что бы в основной таблице они не совпали? сразу встречный вопрос - а зачем надо чтобы они не совпали? есть подозрение что на несколько разных справочников ссылается одно поле - если это так, то надо сильно подумать на правильностью такого решения :) romanichЯ видил ключи такого рода as12fde. вообще подходов как минимум два: 1. Сделать чтобы ключи в все справочники заносились из одного источника (generator, sequence, etc.) 2. GUID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 08:41
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
Извините, наверное неясно выразился, поясню: есть справочные таблицы - двигателя, выключатели, трансформаторы и т.п.. И есть основная таблица, содержит в себе список материалов для ремонта этого оборудования. Ключи в справочных таблицах у меня автоинкрементируемые поля и соответственно могут совпасть с другими ключами из др. таблиц. вообще подходов как минимум два: 1. Сделать чтобы ключи в все справочники заносились из одного источника (generator, sequence, etc.) 2. GUID А можно подробнее про генерацию? вопрос проиллюстрирован ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 11:00
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
"засунь" все справочные в одну... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 11:17
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
Да, выбран неправильный подход и под него пытается найтись правильное решение. Все справочники нужно объеденить в одну таблицу, а для различия добавить поле обозначающее тип справочника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 11:17
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
romanich В общем-то правильный ответ прозвучал - нарисованная Вами структура как правило неудачна. Генерация непересекающихся значений не представляет никакой проблемы - запитать таблицы от одного sequence, и всего делов-то. Но у меня, например, сразу возникает вопрос, ради чего гробить целостность. В Oracle возможно еще одно неправильное решение - хранить в ссылающейся таблице не id, а rowid. И одно теоретически правильное, но (afaik) очень редко используемое - хранить object reference. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 11:19
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
наверное спрашивающий не зря разделил справочники на несколько таблиц. наверное были причины? (это вопрос) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 12:37
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
gardenman прав, таблицы разделены из-за того что каждое обордование имеет один тип, напр. двигатель ДВ-100, а таких двигателей 100 шт, различаются они инв. номерами, на рис. было бы еще по одной таблице, хранящих специфику двигателей, выключателей и т.д. Т.е. здесь вариант решения только по генерации ключей. Как это сделать, подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 12:42
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
Ничего лучше чем SEQUENCE для этой цели не было придумано... А у вас база какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 12:44
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
база на ms sql 2000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 14:20
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
Вот человек, сначала разложит грабли, а затем вырабатывает методу их обхода, вместо того, чтобы держать грабли в специально отведенном месте :) Не вижу причин (кроме упрямства автора), мешающих объединить эти справочники с их типизацией по группам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.01.2006, 14:59
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
2Slider_spb Извините, но хранить такую инфу в одной таблице, по моему, не практично: Двигатели Название обороты напряжение мощьность дв-100 1000 380 500 выключатели название секций напряжение вк-1 2 380 трансформаторы название вх. напр. вых. напр. тр-380 10000 380 ПРичем у каждого 100-ни инвентарных номеров. Я не смогу просто это впихнуть в одну таблицу, большая избыточность получается и пустые поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.01.2006, 12:03
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
Э, как все запущено, у вас и таблички не нормализованы… Вас никогда не учили разделять сущности и данные к ним? Например: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.01.2006, 15:00
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
Slider_spbЭ, как все запущено, у вас и таблички не нормализованы… Не то, чтобы я придирался к словам:), но причем тут нормализация? Вы описали типизацию (subtyping). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.01.2006, 15:57
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
Ну, насчет того, что приведенные romanich таблички не нормализированы, я может и погорячился (по тем данным что приведены, однозначно сказать нельзя), а то что я сделал, действительно является типизацией, что было сказано мной чуть выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.01.2006, 17:31
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
romanichИзвините, наверное неясно выразился, поясню: есть справочные таблицы - двигателя, выключатели, трансформаторы и т.п.. И есть основная таблица, содержит в себе список материалов для ремонта этого оборудования. Ключи в справочных таблицах у меня автоинкрементируемые поля и соответственно могут совпасть с другими ключами из др. таблиц. А я пока так и не понял, зачем нужно, чтобы ключи в справочных таблицах не совпали. Ну совпадут они в основной таблице и что? Что является ключом в основной таблице? Какая-то странная, IMHO, проблема. Можете пояснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.01.2006, 21:37
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
mirА я пока так и не понял, зачем нужно, чтобы ключи в справочных таблицах не совпали. Есть такая популярная идея - не включать в ссылающуюся таблицу поле "тип объекта", а вместо этого join-ами кодировать использование того или иного типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2006, 06:26
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
Есть такая популярная идея - не включать в ссылающуюся таблицу поле "тип объекта", а вместо этого join-ами кодировать использование того или иного типа А вот это уже интересно, softwarer , поясните пожалуйста реализацию такого механизма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2006, 16:01
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
Сверхстандартный пример. Физлица, юрлица, непересекающиеся айдишники. В этом случае: Код: plaintext 1. 2. - документы, выписанные на физических лиц. Или, например, Код: plaintext 1. 2. 3. 4. 5. 6. 7. Подчеркну, что практика.. сомнительная с моей точки зрения, но упоминается довольно часто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2006, 16:43
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
2 softwarer Весьма непроизводительное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2006, 17:15
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
gardenman Как Вам сказать... с одной стороны, я не совсем уверен, что Ваше утверждение справедливо для произвольной ситуации. С другой стороны, я решительно не собираюсь говорить что-либо в пользу решения, которое считаю откровенно плохим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2006, 17:17
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
вот и договорились - решение плохое, хотя и рабочее. )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2006, 06:36
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
gardenman вот и договорились - решение плохое, хотя и рабочее. )) Но, часто, такими решениями и приходится пользоваться. Я, думаю, остановлюсь на этом варианте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2006, 07:14
|
|||
|---|---|---|---|
|
|||
Организация ключей |
|||
|
#18+
romanichНо, часто, такими решениями и приходится пользоваться. Я, думаю, остановлюсь на этом варианте. вижу, что автор уже почти определился с решением и всё таки переспрошу ещё раз: зачем делать в одном поле ссылку на несколько таблиц?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2006, 10:33
|
|||
|---|---|---|---|
Организация ключей |
|||
|
#18+
Dimkas romanichНо, часто, такими решениями и приходится пользоваться. Я, думаю, остановлюсь на этом варианте. вижу, что автор уже почти определился с решением и всё таки переспрошу ещё раз: зачем делать в одном поле ссылку на несколько таблиц?! Элементарно, Ватсон. Это - типизация. И когда нужно объекты определенного типа обрабатывать отдельно и по-своему, то может очень сильно повысить производительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&mobile=1&tid=1545427]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 516ms |

| 0 / 0 |
