powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Primary key не integer
11 сообщений из 61, страница 3 из 3
Primary key не integer
    #36375738
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
ОКТОГЕН,

мак-адрес сужает диапазон уникальных адресов.
...
Рейтинг: 0 / 0
Primary key не integer
    #36375751
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
ОКТОГЕН,

и это ... мак-адрес - это 48 (иногда 64) бита. так что уникальность как бы ограничена.
причем в случае 64-х битного она такая же, как и у int64.
и это несмотря на то что GUID весит 128 бит.
...
Рейтинг: 0 / 0
Primary key не integer
    #36375856
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> нет, показать РЕАЛЬНУЮ субд, где праймари ки не является индесом

Я не знаю таких СУБД. И?

Расскажите, где в стандарте упоминаются неявные индексы и формулируются требования к ним.
...
Рейтинг: 0 / 0
Primary key не integer
    #36375935
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose, ну если вам мало
18446744073709551616 строк в пределах одного сервера,
то я не знаю что и предложить.
Вы можете использовать тип NUMERIC без ограничений на точность.
В PostgreSQL таковой имеется.
...
Рейтинг: 0 / 0
Primary key не integer
    #36375951
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНeNose, ну если вам мало
18446744073709551616 строк в пределах одного сервера,
то я не знаю что и предложить.
Вы можете использовать тип NUMERIC без ограничений на точность.
В PostgreSQL таковой имеется.
Проверил, 510 значное число вполне себе сохраняется.
...
Рейтинг: 0 / 0
Primary key не integer
    #36378355
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying DutchmanWho am IВопрос с ходу: всегда ли нужен primary key?

Да.


В реляционной модели данных PK нужны, в противном случае будет невозможно применять теорию реляционных БД.

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

Короче, разделяйте теоретическую модель и техническую реализацию.
...
Рейтинг: 0 / 0
Primary key не integer
    #36378359
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНОКТОГЕНeNose, ну если вам мало
18446744073709551616 строк в пределах одного сервера,
то я не знаю что и предложить.
Вы можете использовать тип NUMERIC без ограничений на точность.
В PostgreSQL таковой имеется.
Проверил, 510 значное число вполне себе сохраняется.

Да вы посчитайте, сколько времени уйдёт на вставку такого колиества записей. Полагаю вопрос про запас отпадёт сам собой.
...
Рейтинг: 0 / 0
Primary key не integer
    #36378718
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab, да я-то понимаю.
Просто зачем выдумывать проблемы там, где их нет.
Мало какая база содержит миллиардные таблицы(предел некоторые SQL серверов, между
прочим).
...
Рейтинг: 0 / 0
Primary key не integer
    #36378816
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё добавлю...

Немаловажно время и сложность генерации ключа. Если целое число, это грубо говоря i++ (плюс блокировка разделяемого ресурса и время от времени сохранение в БД), то GUID вычисяется сложнее. Вероятная неуникальность в пределах одной БД разрешается на уровне PK - если с новым GUID PK нарушается, ну создаём новый GUID.

В оракле GUID широко используются для генерации Type ID и Object ID. Причём даже в распределённых БД я не слыхал о проблемах связанных с совпадением GUID во время репликации, но и в VLDB я бы их использовать не стал.

Расчитывать на использование всего множества значений MAC адресов или GUID не приходится. Часть значений либо остануться навсегда зарезервированными (как например коды производителей в MAC адресах), часть будет безвозвратно потеряна (если в алгоритме GUID используется время).

Если биться за каждый бит, то наверное самым лучшим отношением мощности множества значений на байт обладает тип RAW, но не везде есть быстрый генератор RAW ключей.

PK как правило используются для поиска записей и индексируются. Сравнение длинных ключей во время поска идёт чуток дольше. Индекс с длинным ключём занимает больше места в БД и в кэше.

Но всё это дело десятое .

Если реализация БД будет сильно отличаться от модели, расходы на её сопровождение быстро превысят экономию на дисках. Сейчас терабайтным диском или многотерабайтным RAID'ом в домашнем ПК мало кого удивишь.
...
Рейтинг: 0 / 0
Primary key не integer
    #36379480
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Who am ILSVWho am IВопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным.Бессмысленно платить зарплату таким горе-архитекторам Отличный аргумент, только бесполезный.Он бесполезный для тех, кто не знает второй нормальной формы. Нафига нужна запись, которую невозможно однозначно идентифицировать (нет уникального признака) ?
...
Рейтинг: 0 / 0
Primary key не integer
    #36380361
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реляционная алгебра оперирует множествами, а множество это набор уникальных элементов. Если мы говорим о реляционном отношении, то подразумеваем, что у него есть PK. В противном случае это не отношение.
ER моделирование и тем более функциональная декомпозиция оперируют отношениями.

В объектных БД каждый объект идентифицируем и не обязан иметь PK.

Создавать PK в БД не обязательно.
...
Рейтинг: 0 / 0
11 сообщений из 61, страница 3 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Primary key не integer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]