PK, идентификаторы и моделирование «объекта» в таблице - PullRequest
0 голосов
/ 14 декабря 2009

Часть объекта вводит в заблуждение. Мой вопрос не относится к одному типу sql.

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

Один шаблон, который я заметил, это то, что у меня есть bigint, который может быть одним из 2+ ключей и иногда, если мне нужен бит или байт в качестве идентификатора, к какому типу он относится. Две основные вещи, которые приходят на ум, это 1) Если bigint подписан и у меня в таблице больше 2 ^ 32 PK, сможет ли bigint получить доступ к ключам? Я думаю, так как значение будет отрицательным, а ПК всегда положительными? что я получу ошибку. ошибка, я забыл, что bigint равен 2 ^ 63, мне не о чем беспокоиться.

2) Если у меня есть bigint, представляющий PK из 2 или более таблиц, это будет плохой практикой? По какой-то причине я думаю, что есть лучший способ сделать bigint the_id, byte the_id

Ответы [ 2 ]

3 голосов
/ 14 декабря 2009

1) TSQL Bigint не ограничен 2 ^ 32, он составляет от -2 ^ 63 до + 2 ^ 63 -1 - гораздо больше, чем вы, вероятно, будете использовать, что-то вроде 9,2 квинтиллиона.

2) Я бы предпочел не использовать идентификатор для представления двух разных ПК в других таблицах, но, не зная проблемы, которую вы решаете, трудно сказать, является ли это правильным решением или единственным, которое у вас действительно есть.

1 голос
/ 14 декабря 2009

Как правило, я всегда проектирую свои столбцы для хранения одного фрагмента данных и только одного типа данных (по типу я не имею в виду тип данных, хотя в целом это также верно).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...