2009-07-29 1 views
0

Могу ли я определить первичный ключ в соответствии с тремя атрибутами? Я использую Visual Paradigm и Postgres.Первичный ключ, определяемый многими атрибутами?

CREATE TABLE answers (
    time       SERIAL NOT NULL, 
    "{Users}{userID}user_id"  int4 NOT NULL, 
    "{Users}{userID}question_id" int4 NOT NULL, 
    reply      varchar(255), 
    PRIMARY KEY (time, "{Users}{userID}user_id", "{Users}{userID}question_id")); 

A picture может уточнить вопрос.

ответ

2

Да, вы можете так же, как вы показали (хотя я подвергаю сомнение вашего именования колонки 2. и 3.).

От docs:.

«Первичные ключи также могут ограничивать более одного столбец; синтаксис аналогичен уникальных ограничений:

CREATE TABLE example (
    a integer, 
    b integer, 
    c integer, 
    PRIMARY KEY (a, c) 
); 

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

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

0

Да, вы можете. Существует только такой пример в documentation.. Однако я не знаком с заключенными в квадратные скобки условиями, которые вы используете. Выполняете ли вы какую-либо переменную оценку перед созданием схемы базы данных?

+0

Это из-за программного обеспечения VP. –

0
  1. да вы можете
  2. если вы запустите его. - вы увидите его в кратчайших сроках
  3. я бы на самом деле, действительно, действительно предлагаю пересмотреть имена столбца условности времени, который содержит серийным. целые имена столбцов, такие как «{Users} {userID} user_id»? oh my.

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

  • Нет связанных вопросов^_^