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

start [/forum/topic.php?all=1&fid=32&tid=1545427]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 391ms |

| 0 / 0 |
