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