Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 21.07.2013, 21:47   #1
st_yak
Пользователь
 
Регистрация: 20.07.2013
Сообщений: 18
По умолчанию MS SQL ключи и нумераторы

Здравствуйте!

Суть задачи.
Сделать таблицу приходных/расходных накладных. Так же нужен нумератор, то есть что бы при добавлении накладной автоматически присваивался новый номер.

1)Хочется видеть номер накладной в формате 000000001, 000000002 и тд.
Какой тип данных использовать для ключа, оно же поле таблицы - номер накладной?
Я остановился на Numeric(10,0) и тогда перед записью можно получить последний номер накладной +1, для автоматической нумерации.

2) Но если развивать тему далее, может понадобится префикс то есть РН00000001, ПН00000001. Тогда numeric не подходит и лучше использовать char, varchar? И в дальнейшем конвертировать данные в число отрезая к примеру два символа с лева.

Есть ли идеи по реализации данной задачи?
Поделитесь пожалуйста вашим опытом и вашими мыслями.
Если что не понятно написал, задайте вопрос, поясню.

Заранее премного благодарен.
st_yak вне форума Ответить с цитированием
Старый 22.07.2013, 01:36   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,674
По умолчанию

По идее, префикс нужно хранить отдельно, кодируя тип накладной. Если РН и ПН -- это приходная и расходная накладные соответственно, ее тип наверняка понадобится где-либо в задаче еще.

С этой точки зрения дублирование типа накладной в нее номере есть дублирование информации -- нарушение декомпозиции.
Разработчик языка программирования Кантор
Vapaamies вне форума Ответить с цитированием
Старый 23.07.2013, 09:29   #3
st_yak
Пользователь
 
Регистрация: 20.07.2013
Сообщений: 18
По умолчанию

Как вариант решил хранить номер накладной в int , префикс в отдельной колонке varchar(5). А нумерацию сделал стандартными средствами ms sql (идентификатор).
st_yak вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ключи, связи. Pudge Microsoft Office Access 2 21.02.2012 16:41
Ключи приложения EdNovice Общие вопросы Delphi 6 06.11.2009 09:48
Связи, ключи и т.д. Arkuz Microsoft Office Access 7 20.10.2008 20:25
БД. Индексы и ключи Сергей089 Помощь студентам 4 22.09.2008 21:30
ключи veter_s_morya SQL, базы данных 1 30.06.2008 15:33