2014-02-06 3 views
0

Я делаю свой первый сайт с базой данных. Допустим, у меня есть таблица под названием «предметы». Пользователи могут отправлять элементы, которые будут храниться в базе данных. Однако я не знаю, какой тип первичного ключа должен использовать таблица элементов.первичный ключ таблицы для одновременных пользователей

Я думал об использовании целочисленного первичного ключа. Каждый раз, когда пользователь вводит элемент, я бы нашел текущее максимальное значение в таблице и увеличил его на 1 для нового значения. Однако с помощью этого метода, что происходит, если два пользователя одновременно вводят элементы в таблицу? Могут ли элементы в конечном итоге использовать одно и то же максимальное значение и в конечном итоге иметь один и тот же первичный ключ, что приведет к ошибке?

Еще один способ, которым я думал, - использовать первичный ключ символа на основе идентификатора пользователя и даты, введенной в таблице пользователей. Поэтому я бы создал первичный ключ из «userID - entryDate». Этот путь казался мне очень «нечистым».

Мне было интересно, существует ли стандартный способ обработки первичных ключей в базах данных веб-приложений, которые могут одновременно иметь несколько пользователей?

Извините, я совершенно не знаком с веб-разработчиками и базами данных. Для информации я использую Node.js в качестве моего сервера, а PostgreSQL - как базу данных.

+0

использовать auto increment на идентификаторе первичного ключа. – wxyz

+0

Просто Google 'database SEQUENCE', и он объяснит, как настроить уникальное генерирование идентификатора. –

ответ

1

Существует тип данных SERIAL, который делает автоматическое увеличение и обычно используется для первичных ключей.

SERIAL data type documentation

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

+0

А я вижу! Звучит прекрасно, каковы преимущества SERIAL в использовании только auto_increment на первичном ключе? –

+0

Это то же самое, что и указание последовательности и использование ее в столбце. См. Документацию. – Alex

+0

@BenCheng 'auto_increment' - это MySQL-ism. Он не существует в PostgreSQL. «Serial» - это просто целочисленный столбец, который автоматически увеличивает; это совсем другой способ сказать то же самое. –

Смежные вопросы