Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизВычисление ключа Найти похожие ветки
← →
Atanas (2004-02-25 11:32) [0]Доброго времени суток Всем,
Ситуация следующая: Есть таблица населенных пунктов (Settlements)
в нем ключевое поле - SID, код области - SRegion, и т.д.
Как сделать так, чтобы при заполнении записи пользователем SID - генерировался программно по следующему правилу:Первая цифра это код области, а три остальные просто автоинкремент.
Как это можно сделать?
← →
Соловьев © (2004-02-25 11:35) [1]а почему обязательно одно поле? два сделай
← →
Atanas (2004-02-25 11:41) [2]Это не рационально - каждая таблица использующая эту как справочник должна будет тоже иметь 2 поля ключа вместо одного.
← →
Соловьев © (2004-02-25 11:45) [3]в чем не рациональность? в трате дискового пространства?
← →
Кщд (2004-02-25 11:46) [4]очень даже рационально, коли есть нужда в выборке статистики по каждой области отдельно.
"Первая цифра это код области" - прямо-таки цифра? :)
← →
Atanas (2004-02-25 11:50) [5]Объем да и скорость... Ну не суть в Access это сделать доволно таки легко. В событие до обновления прописываешь типа:
SID=SRegion+DMAX("SID","Settlements","SID<"&Sregion*1000)
(если без проверок) и все работает. А тут ума не приложу :-(
← →
Atanas (2004-02-25 11:52) [6]To Кщд - Там где будет использоваться программа областей на страну всего 7 из них филиалы конторы только в 4. ;-)
← →
Sandman25+1 (2004-02-25 11:59) [7][6] Atanas (25.02.04 11:52)
Ага, а потом понадобится сделать фильтр по региону, и Вы будете спрашивать, как получить первую цифру числа? :)
Делайте 2 поля и не морочьте себе и другим людям голову :)
← →
Anatoly Podgoretsky © (2004-02-25 12:15) [8]С таким сурогатным полем хлебнешь горя по обеспечению целостности и затруднения при выборках
← →
Atanas (2004-02-25 12:42) [9]To: Sandman25+1 -
1. Это не очень то и вежливо с вашей стороны.
2. Я просил помощи, а получил философские размышления о том как все вы круты
3. Неужели это так сложно ответить?
← →
Sandman25+1 (2004-02-25 12:45) [10][9] Atanas (25.02.04 12:42)
Прошу прощения за форму моего сообщения.
Но еще раз обращаю Ваше внимание на тем не менее верную суть того же сообщения. Не той тропинкой идете. Придется использовать генератор или какой-то еще источник уникальных чисел, например, таблица с 1 полем и 1 записью, которая локируется, поле инкрементируется, считывается и таблица освобождается.
← →
Johnmen © (2004-02-25 12:49) [11]Уже ответили. Резюме:
1. Есть уникальный идентификатор населенного пункта - автоинк. поле, первичный ключ.
2. Есть неуникальный идентификатор области для нас.п. - ссылочный ключ.
Другие варианты по большей степени сплошное извращение и гиморой себе на голо... тьфу ! на задницу...
:)
← →
Atanas (2004-02-25 12:53) [12]Можно же получать новый код из предыдущего. Например запрос на нахождение максимального SID для нужного региона. Находим и увеличиваем на единицу.
Из всего того что было сказано ранее я не могу найти как реализовать функцию поиска по подмножеству типа: DMAX, DMIN, DLOOKUP... и т.д. в Delphi + ADO
Буду очень благодарен за информацию
← →
Sandman25+1 (2004-02-25 12:55) [13][12] Atanas (25.02.04 12:53)
При многопользовательской работе будут проблемы, и большие.
← →
Johnmen © (2004-02-25 12:55) [14]Можно, но не нужно, т.к. это ещё один путь к гиморою в многопользовательской системе...
← →
Atanas (2004-02-25 12:58) [15]To: Johnmen
Классно. Резюме:
Если в каждой области будет заполняться такая таблица то при их объединении об уникальности такого уникального ключа можно забыть?
← →
Johnmen © (2004-02-25 13:02) [16]>Atanas (25.02.04 12:58) [15]
Вот наконец-то выясняется, что нужна репликация. Сразу сказать было сложно ?
В этом случае будет один уникальный ключ по указанным двум полям.
← →
Sandman25+1 (2004-02-25 13:03) [17][15] Atanas (25.02.04 12:58)
Если планируется объединение, то уникальной должна быть совокупность полей Integer и region. Причем для Integer нужно будет использовать генератор или его аналог, автоинкремент уже не подходит, потому что это поле не должно быть неуникальным.
← →
Atanas (2004-02-25 13:22) [18]To: Johnman
Не было речи про репликацию. Простое объединение данных репликацией не называется.
← →
Anatoly Podgoretsky © (2004-02-25 13:26) [19]Atanas (25.02.04 13:22) [18]
А вот в Atanas (25.02.04 12:58) [15] это и есть репликация данных.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.031 c