Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Какого типа лучше делать первичные ключи в таблицах?  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
В каждой таблице обычно присутствует первичный ключ.
Какой тип правильнее использовать для первичого ключа в таблицах?
numeric(18,0), decimal(18,0), int, ...

(В качестве СУБД ипользуется только SQL Server.)
6 июн 07, 08:06    [4234573]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10239
Блог
идеальный вариант
int identity
6 июн 07, 08:20    [4234592]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
а как насчёт bigint?
6 июн 07, 08:45    [4234652]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23904
Dark_Scorpion
а как насчёт bigint?
Каждому овощу свой фрукт... О чем спор?
6 июн 07, 08:50    [4234667]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10239
Блог
Dark_Scorpion
а как насчёт bigint?

если прижмёт, то можно и его, только помните, что
int- 4 байта
bigint- 8 байт
6 июн 07, 08:50    [4234668]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
а на сколько (не)корректно использование типа numeric(18,0) в качестве первичного ключа?
6 июн 07, 09:06    [4234732]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10239
Блог
Dark_Scorpion
а на сколько (не)корректно использование типа numeric(18,0) в качестве первичного ключа?

вы сами в праве выбирать первичный ключ,
но так как будт создан ещё и индекс по первичному ключу, то чем меньше поле, тем лучше!

numeric (p, s)-19 байт
6 июн 07, 09:15    [4234767]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
у меня в созданных на данный момент таблицах используется в качестве первичного ключа тип numeric(18,0). Получается, что это не наилучший вариант. Но изменять его там где он есть уже нельзя. Вопрос в том: в новь создоваемых таблицах в этой же БД стоит использовать новый тип для первичного ключа (bigint или int - т.к. это более правильно) или продолжать использовать numeric (для поддержания унифицированности)?
6 июн 07, 09:18    [4234781]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31057
Блог
Dark_Scorpion
Но изменять его там где он есть уже нельзя

Почему? Это, как правило, совершенно прозрачно для пользователей.
6 июн 07, 09:20    [4234786]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 75726
Knyazev Alexey
numeric (p, s)-19 байт


PrecisionStorage bytes
1 - 95
10-199
20-2813
29-3817
6 июн 07, 09:20    [4234787]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
Критик
Dark_Scorpion
Но изменять его там где он есть уже нельзя

Почему? Это, как правило, совершенно прозрачно для пользователей.

Поменять можно но трудоёмко, т.к. существующие таблицы участвуют уже во многих хранимых процедурах. (ПРийдётся везде корректировать тип входных параметров в хранимках).

Как быть с первичными ключами в новых таблицах? продолжать использовать тип такой же как и в других таблицах (numeric) или начать использовать новый тип (int или bigint)?
6 июн 07, 09:34    [4234833]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10239
Блог
Dark_Scorpion

Как быть с первичными ключами в новых таблицах? продолжать использовать тип такой же как и в других таблицах (numeric) или начать использовать новый тип (int или bigint)?


решайте сами! но лично моё мнение-придерживаться одного типа
6 июн 07, 09:37    [4234850]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
pkarklin
Knyazev Alexey
numeric (p, s)-19 байт


PrecisionStorage bytes
1 - 95
10-199
20-2813
29-3817


т.е. тип numeric(18,0) занимает 9 байт?
6 июн 07, 09:39    [4234864]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 75726
Dark_Scorpion
т.е. тип numeric(18,0) занимает 9 байт?


DECLARE @var numeric(18,0)

SET @var = 100000000000000000

SELECT DATALENGTH(@var)
6 июн 07, 09:46    [4234900]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
спасибо
6 июн 07, 09:56    [4234951]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10592
Блог
Куда катиться этот мир... использование естественных ключей в качестве первичных даже не обсуждается
6 июн 07, 10:42    [4235252]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 75726
Александр Гладченко
Куда катиться этот мир... использование естественных ключей в качестве первичных даже не обсуждается


[|||] Суррогатные или естественные

;)
6 июн 07, 10:45    [4235275]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5508
Блог
Александр Гладченко
Куда катиться этот мир... использование естественных ключей в качестве первичных даже не обсуждается
Пофлеймить, что ли... :)
Кстати, а кто сказал, что там СК? Судя по размерности, там запросто может быть, например, номер кредитной карты или номер ПФР. ;)
6 июн 07, 11:12    [4235461]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10239
Блог
DeColo®es
Александр Гладченко
Куда катиться этот мир... использование естественных ключей в качестве первичных даже не обсуждается
Пофлеймить, что ли... :)
Кстати, а кто сказал, что там СК? Судя по размерности, там запросто может быть, например, номер кредитной карты или номер ПФР. ;)


как хорошо, что Селко не знает русского языка
6 июн 07, 11:14    [4235475]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
bantik
Member

Откуда:
Сообщений: 283
Dark_Scorpion
Критик
Dark_Scorpion
Но изменять его там где он есть уже нельзя

Почему? Это, как правило, совершенно прозрачно для пользователей.

Поменять можно но трудоёмко, т.к. существующие таблицы участвуют уже во многих хранимых процедурах. (ПРийдётся везде корректировать тип входных параметров в хранимках).


А пользовательский тип завести слабо ? И сослаться на него и в таблицах, и в процедурах.
У нас в проекте больше 12 тыс хранимок - поверь без этого был бы полный ... (слово из 6 букв - фиаско в смысле :-)
6 июн 07, 11:23    [4235558]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 25597
bantik
А пользовательский тип завести слабо ? И сослаться на него и в таблицах, и в процедурах.
А смысл какой???

Без использования пользовательского типа ещё можно поменять типы в таблицах и процедурах. А с его использованием вообще невозможно.

Я не видил промышленных (доказавших свою состоятельность продажами) решений, в которых использовались пользовательские типы, хотя, может, и есть такие.
6 июн 07, 12:07    [4235718]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5508
Блог
bantik
А пользовательский тип завести слабо ? И сослаться на него и в таблицах, и в процедурах.
У нас в проекте больше 12 тыс хранимок - поверь без этого был бы полный ... (слово из 6 букв - фиаско в смысле :-)
И что, если вам захочется поменять что-то в пользовательском типе, не нужно будет трогать хранимки, в которых Вы его используете?
6 июн 07, 12:10    [4235738]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Yuriy Yurchenko
Member

Откуда: Харьков
Сообщений: 52
Сорри, если не совсем по теме, просто давно занимал вопрос, - почему в базах на DBF-ках используют текстовые первичные ключи? Например, так сделано в 1С, Парусе 7-ке... Из каких соображений для них выбирают текстовый тип? Сам я всегда использую синтетические ПК типа int или bigint. А так этот вопрос (ЗАЧЕМ? ПОЧЕМУ? ;-) ) про текстовые ПК постоянно в голове вертится, - как в анекдоте про преподавателя с бородой
6 июн 07, 13:53    [4236603]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Glory
Member

Откуда:
Сообщений: 104764
Yuriy Yurchenko
А так этот вопрос (ЗАЧЕМ? ПОЧЕМУ? ;-) ) про текстовые ПК постоянно в голове вертится, - как в анекдоте про преподавателя с бородой

Потому, что так решил дизайнер базы.
6 июн 07, 13:57    [4236635]     Ответить | Цитировать Сообщить модератору
 Re: Какого типа лучше делать первичные ключи в таблицах?  [new]
Обана!
Guest
автор
у меня в созданных на данный момент таблицах используется в качестве первичного ключа тип numeric(18,0)


База случаем не 5нт? Если да, то лучше ничего не менять, ибо дистрибутивные отчеты, обновления знаете ли :)
6 июн 07, 14:18    [4236837]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить