2009-07-29 16 views
0

3つの属性に基づいて主キーを定義できますか?私は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")); 

pictureである。

答えて

2

あなたが示したのと同様のことができます。はい(私は2と3列目のあなたの命名を問うのに。)

docsから:。

「主キーは、1つ以上を制約することができますカラム;構文は一意性制約に類似している:

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

主キーは、列または列のグループは、テーブル内の行の一意の識別子として使用することができることを示している(これは定義の直接的な結果です。主キーのique制約は、null値を除外しないため、それ自体で一意の識別子を提供しません)。これは、ドキュメント化の目的とクライアントアプリケーションの両方に役立ちます。たとえば、行の値を変更できるGUIアプリケーションでは、おそらく行を一意に識別できるように表の主キーを知る必要があります。

テーブルには、最大で1つの主キーを持つことができます(ただし、多くのユニークで非NULL制約があります)。リレーショナルデータベース理論では、すべてのテーブルにプライマリキーが必要であると規定されています。このルールはPostgreSQLによって強制されませんが、通常はそれに従うことが最善です。 「

0

はい、できます。 documentation.にそのような例があります。しかし、私はあなたが使用している括弧書きの用語に精通していない。データベーススキーマを作成する前に、いくつかの変数評価を行っていますか?

+0

です。 –

0
  1. はいあなたは
  2. することができますあなたはそれを実行したい場合は - 。。あなたは時間がないのそれを見ることが
  3. 私は本当に、本当に、本当に命名規則再考することをお勧めシリアル含まれていた時間の列"{ユーザー} {ユーザーID} user_id"のような整数の列名はどうですか?私の名前は
関連する問題