Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1078728474
rxman
2004-03-08 09:47
2004.03.28
Примеры к Indy...


3-1077370184
Nous Mellon
2004-02-21 16:29
2004.03.28
Сортировка и ADO


8-1060287687
Игорь Г.
2003-08-08 00:21
2004.03.28
Поворот изображения


8-1069085167
g-l-u-k
2003-11-17 19:06
2004.03.28
ListBox DoubleClick


7-1072264252
nester
2003-12-24 14:10
2004.03.28
Как внедрить свой тулбар в оутлук?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский