¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

5.3. ����

�ǡ������ϡ��ơ��֥�˳�Ǽ����ǡ����μ������ꤹ�뤿�����ˡ�Ǥ��� ��������¿���Υ��ץꥱ�������Ǥϡ������󶡤�������Ǥ���̩���˷礱�ޤ��� �㤨�С����ʤβ��ʤ�������ˤϡ������餯�����Τߤ���������褦�ˤ���ɬ�פ�����ޤ��� �������������Τߤ���������Ȥ���ɸ��Υǡ������Ϥ���ޤ��� �ޤ���¾�����Ԥ˴�Ϣ������ǡ��������󤷤������⤢��ޤ��� �㤨�С����ʤξ������äƤ���ơ��֥�Ǥϡ�1�Ĥ������ֹ�ˤĤ��ƤιԤ�2�԰ʾ夢�äƤϤʤ�ޤ���

���Τ褦��������褹�뤿�ᡢSQL�Ǥ��󤪤�ӥơ��֥���Ф��������������뤳�Ȥ��Ǥ��ޤ��� ����ˤ�äƥơ��֥���Υǡ�����ͳ�����椹�뤳�Ȥ��Ǥ��ޤ��� ����˰�ȿ����ǡ�������˳�Ǽ���褦�Ȥ���ȡ����顼�Ȥʤ�ޤ��� ���Τ��Ȥϡ��ǥե�����ͤȤ���������줿�ͤ��Ǽ������ˤ�Ŭ�Ѥ���ޤ���

5.3.1. ��������

��������ϺǤ����Ū������μ���Ǥ��� �������Ѥ��ơ����������ͤ������ͤμ����������ʿ����͡ˤ褦�˻���Ǥ��ޤ��� �㤨�С����ʲ��ʤ�ɬ�������ˤ���ˤϰʲ��Τ褦�ˤ��ޤ���

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric CHECK (price > 0)
);

���Τ褦�ˡ����������ϥǥե�����ͤ������Ʊ�ͤˡ��ǡ������θ�ˤ��ޤ��� �ǥե�����ͤ������Ǥ�դν�������Ǥ��ޤ��� ���������CHECK������ɤθ��³����̤ǰϤޤ줿���ǹ�������ޤ��� �������󼰤ˤϡ����󤵤�����ޤ�ɬ�פ�����ޤ��� �������ʤ��ȡ�����Ϥ��ޤ��̣�Τʤ���Τˤʤ�ޤ���

����˸��̤�̾�����դ��뤳�Ȥ�Ǥ��ޤ��� ̾�����դ��뤳�Ȥǡ����顼��å��������狼��䤹���ʤ�ޤ������ѹ�����������򻲾ȤǤ���褦�ˤʤ�ޤ��� ��ʸ�ϰʲ����̤�Ǥ���

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric CONSTRAINT positive_price CHECK (price > 0)
);

�嵭�Τ褦�ˡ�̾���դ�����λ����CONSTRAINT������ɤǻϤᡢ����˼��̻ҡ����������³���ޤ��� �ʤ�����ˡ������̾����ꤷ�ʤ����ϡ������ƥ�ˤ��̾�����դ����ޤ�����

��������Ǥ�ʣ������򻲾Ȥ��뤳�Ȥ�Ǥ��ޤ��� �㤨�С��̾���ʤȳ�����ʤ��Ǽ������ˡ�ɬ��������ʤ��̾���ʤ����㤯�ʤ�褦�ˤ������Ȥ��ޤ���

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric CHECK (price > 0),
    discounted_price numeric CHECK (discounted_price > 0),
    CHECK (price > discounted_price)
);

�ǽ��2�Ĥ�����Ͼ�����������̤�Ǥ��� 3���ܤ�����ǤϿ�������ʸ��ȤäƤ��ޤ��� ��������������ղä����ΤǤϤʤ�������ޤǶ��ڤ�줿��ꥹ������̸Ĥι��ܤȤ��Ƹ���ޤ��� ���������Ӥ�������������ϡ�Ǥ�դν������󤹤뤳�Ȥ��Ǥ��ޤ���

�ǽ��2�Ĥ������������ȸ����ޤ���������Ф���3���ܤ������������Ȥ��̸Ĥ˽񤫤��Τǡ��ơ��֥�����ȸ����ޤ��� �������ơ��֥�����Ȥ��ƽ񤯤��ȤϤǤ��ޤ��������εդϤǤ�����ȤǤ��ʤ���礬����ޤ����ʤ��ʤ�������ϡ�����˴�Ϣ�դ����Ƥ�����Τߤ򻲾Ȥ��뤿��Ǥ���PostgreSQL�Ϥ��ε�§�������ޤ��󡣤�����¾�Υǡ����١��������ƥ�ȶ�Ĵ���Ʋ�ư�����������Ϥ��ε�§�˽��äƤ��������ˡ� �����ϡ��ʲ��Τ褦�˽񤯤��Ȥ�Ǥ��ޤ���

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric,
    CHECK (price > 0),
    discounted_price numeric,
    CHECK (discounted_price > 0),
    CHECK (price > discounted_price)
);

���뤤�ϡ����Τ褦�ˤ�Ǥ��ޤ���

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric CHECK (price > 0),
    discounted_price numeric,
    CHECK (discounted_price > 0 AND price > discounted_price)
);

�ɤΤ褦�ˤ��뤫�Ϲ��ߤ�����Ǥ���

�������Ʊ�ͤˡ��ơ��֥������̾���������Ƥ뤳�Ȥ��Ǥ��ޤ���

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric,
    CHECK (price > 0),
    discounted_price numeric,
    CHECK (discounted_price > 0),
    CONSTRAINT valid_discount CHECK (price > discounted_price)
);

��������Ǥϡ������������ޤ���NULL�ͤ�ɾ�����줿���ˡ���郎��������뤳�Ȥ����դ��Ʋ������� �ۤȤ�ɤμ��ϡ��黻���ܤ˰�ĤǤ�NULL�������NULL��ɾ�������Τǡ���������Ǥ������оݤ����NULL�ͤ�����Τ��ɤ��ޤ��� ��NULL�ͤ�ޤޤʤ��褦�ˤ��뤿��ˡ����������������NULL�������Ѥ��뤳�Ȥ��Ǥ��ޤ���

5.3.2. ��NULL����

��NULL�����ñ��ˡ���NULL�ͤ���ʤ����Ȥ���ꤷ�ޤ��� ��ʸ����ϰʲ����̤�Ǥ���

CREATE TABLE products (
    product_no integer NOT NULL,
    name text NOT NULL,
    price numeric
);

��NULL����Ͼ��������Ȥ��Ƶ��Ҥ���ޤ��� ��NULL�����CHECK (column_name IS NOT NULL)�Ȥ�����������ȵ�ǽŪ�ˤ�Ʊ���Ǥ�����PostgreSQL�Ǥϡ�����Ū����NULL����������������������Ū�Ǥ��� ���Τ褦�˺������줿��NULL���������Ū��̾�����դ����ʤ��Τ������Ǥ���

�������1�Ĥ����ʣ���������Ŭ�Ѥ��뤳�Ȥ�Ǥ��ޤ��� ���Τ���ˤϡ������������񤤤Ƥ��������Ǥ���

CREATE TABLE products (
    product_no integer NOT NULL,
    name text NOT NULL,
    price numeric NOT NULL CHECK (price > 0)
);

����ϴط�����ޤ��� �񤫤줿����ȸ������������ɬ������Ʊ���ǤϤ���ޤ���

NOT NULL������Ф����դΥѥ�����Ǥ���NULL���󤬤���ޤ��� ����ϡ���NULL�Ǥʤ���Фʤ�ʤ��Ȥ������ȤǤϤ���ޤ��� ���Τ褦������ϰ�̣������ޤ��� ��������ϡ���NULL�Ǥ��äƤ�褤�Ȥ����ǥե���Ȥο��񤤤����򤹤�����Τ�ΤǤ��� NULL�����ɸ��SQL�ˤ�¸�ߤ��ޤ���Τǡ��ܿ�ͽ��Υ��ץꥱ�������Ǥϻ��Ѥ��٤��ǤϤ���ޤ��� �ʤ���ϡ�PostgreSQL��¾�ΰ����Υǡ����١��������ƥ�Ȥθߴ����Τ�����ɲä��줿��ǽ�˲᤮�ޤ��󡣡� ��äȤ⡢������ץȥե�����Ǥ�������ڤ��ؤ�����ñ�Ǥ���Ȥ�����ͳ�Ǥ��ε�ǽ�򴿷ޤ���桼���⤤�ޤ��� �㤨�С��ǽ��

CREATE TABLE products (
    product_no integer NULL,
    name text NULL,
    price numeric NULL
);

�Ƚ񤤤Ƥ��顢ɬ�פʾ���NOT������ɤ��������뤳�Ȥ��Ǥ��ޤ���

�ƥ��å�: �ۤȤ�ɤΥǡ����١����߷פˤ����ơ������¿����NOT NULL�ȥޡ�������ɬ�פ�����ޤ���

5.3.3. ���������

���������ˤ�äơ��󤢤뤤����Υ��롼�פ˴ޤޤ��ǡ��������ơ��֥�������ƤιԤǰ�դǤ��뤳�Ȥ�μ¤ˤ��ޤ��� ������ξ��ι�ʸ�ϰʲ����̤�Ǥ���

CREATE TABLE products (
    product_no integer UNIQUE,
    name text,
    price numeric
);

�ޤ����ơ��֥�����ξ��ι�ʸ��

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric,
    UNIQUE (product_no)
);

�Ȥʤ�ޤ���

�����������Υ��롼�פ򻲾Ȥ����硢����ϥ���ޤǶ��ڤä���󤷤ޤ���

CREATE TABLE example (
    a integer,
    b integer,
    c integer,
    UNIQUE (a, c)
);

����ϡ����ꤵ�줿����ͤ��Ȥ߹�碌���ơ��֥����Τǰ�դǤ��뤳�Ȥ���ꤷ�Ƥ��ޤ��� �������������������դǤ���ɬ�פϤ���ޤ�����̾��դǤϤ���ޤ���ˡ�

���������ˤϡ����Ĥ�Τ褦��̾���������Ƥ뤳�Ȥ�Ǥ��ޤ���

CREATE TABLE products (
    product_no integer CONSTRAINT must_be_different UNIQUE,
    name text,
    price numeric
);

�����������ɲä���ȡ�����ǻȤ�����ޤ�����Υ��롼�פ��Ф��ư��Ū��btree����ǥå�������ưŪ�˺���ޤ���

���̤ˡ�������оݤȤʤ���ˤĤ���Ʊ���ͤ���ĹԤ����ơ��֥���ˣ��Ԥ������ϡ�����������ȿ�ˤʤ�ޤ��� ��������������ӤǤ�2�Ĥ�NULL�ͤ������ȤϤߤʤ���ޤ��� �Ĥޤꡢ��������󤬤��ä��Ȥ��Ƥ⡢�����оݤ���ξ��ʤ��Ȥ�1�Ĥ�NULL�ͤ���ĹԤ�ʣ����Ǽ���뤳�Ȥ��Ǥ���Ȥ������ȤǤ��� ���ο��񤤤�ɸ��SQL�˽�򤷤Ƥ��ޤ��������ε�§�˽���ʤ�SQL�ǡ����١��������뤳�Ȥ�ʹ�������Ȥ�����ޤ��� �Ǥ����顢�ܿ�����ͽ��Υ��ץꥱ��������ȯ����ݤˤ����դ��Ƥ���������

5.3.4. �ץ饤�ޥꥭ��

����Ū�ˤϡ��ץ饤�ޥꥭ�������ñ��˰�����������NULL������Ȥ߹�碌����ΤǤ��� �Ĥޤꡢ����2�ĤΥơ��֥������Ʊ���ǡ������������ޤ���

CREATE TABLE products (
    product_no integer UNIQUE NOT NULL,
    name text,
    price numeric
);

CREATE TABLE products (
    product_no integer PRIMARY KEY,
    name text,
    price numeric
);

�ץ饤�ޥꥭ���Ǥ�ʣ����������󤹤뤳�Ȥ��Ǥ������ι�ʸ�ϰ��������˻��Ƥ��ޤ���

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

�ץ饤�ޥꥭ���ϡ���ޤ�����Υ��롼�פ򡢥ơ��֥���ǹԤΰ�դμ��̻ҤȤ��ƻ��ѤǤ��뤳�Ȥ򼨤��ޤ� �ʤ��Τ��Ȥϡ��ץ饤�ޥꥭ������������ľ�ܤε���Ǥ��� ���������Ǥ�NULL�ͤ�������ʤ����ᡢ��դμ��̻Ҥ��󶡤���ʤ����Ȥ����դ��Ƥ����������� �����ʸ�񲽡�����ӡ����饤����ȥ��ץꥱ��������ξ�����̤����Ω���ޤ��� �㤨�С����ͤ��ѹ�����ǽ��GUI���ץꥱ������󤬹Ԥ���Ū�����ꤹ�뤿��ˤϡ������餯�ơ��֥�Υץ饤�ޥꥭ�����Τ�ɬ�פ�����ޤ���

�ץ饤�ޥꥭ�����ɲä���ȡ��ץ饤�ޥꥭ���ǻȤ�����ޤ�����Υ��롼�פ��Ф��ư��Ū��btree����ǥå�������ưŪ�˺���ޤ���

1�ĤΥơ��֥�Ϻ���1�ĤΥץ饤�ޥꥭ������Ĥ��Ȥ��Ǥ��ޤ��� �ʰ�������󤪤����NULL����ˤϸĿ������¤Ϥ���ޤ��� ��ǽŪ�ˤ�Ʊ����ΤǤ������ץ饤�ޥꥭ���Ȥ��Ƽ��̤���������1�ĤΤߤǤ����� ��졼����ʥ�ǡ����١��������Ǥϡ����ƤΥơ��֥�˥ץ饤�ޥꥭ����1��ɬ�פȤ���Ƥ��ޤ��� ���ε�§��PostgreSQL�Ǥ϶�������ޤ��󤬡������Ƥ��ξ��Ϥ���˽������Ȥ��侩����ޤ���

5.3.5. ��������

������������ϡ���ʤޤ�����Υ��롼�סˤ��ͤ���¾�Υơ��֥�ιԤ��ͤȰ��פ��ʤ���Фʤ�ʤ����Ȥ���ꤷ�ޤ��� ����ˤ�äƴ�Ϣ����2�ĤΥơ��֥���������������ݻ�����ޤ���

����ǤޤDz��٤���˻��Ѥ���products�ơ��֥�ˤĤ��ƹͤ��Ƥߤޤ���

CREATE TABLE products (
    product_no integer PRIMARY KEY,
    name text,
    price numeric
);

�ޤ������������ʤ��Ф�����ʸ���Ǽ����ơ��֥������Ѥߤ��Ȥ��ޤ��礦�� ������ʸ��orders�ơ��֥�ˤϼºݤ�¸�ߤ������ʤ���ʸ�Τߤ��Ǽ�������ȻפäƤ��ޤ��� �����ǡ�products�ơ��֥�򻲾Ȥ���orders�ơ��֥�˳������������������ޤ���

CREATE TABLE orders (
    order_id integer PRIMARY KEY,
    product_no integer REFERENCES products (product_no),
    quantity integer
);

����ǡ�products�ơ��֥��¸�ߤ��ʤ���NULL��product_no���ܤ���Ѥ�����ʸ��������뤳�ȤϤǤ��ʤ��ʤ�ޤ���

���Τ褦�ʾ��ˡ�orders�ơ��֥�Τ��Ȥ������ơ��֥롢product�ơ��֥�Τ��Ȥ��ﻲ���ơ��֥�ȸƤӤޤ��� Ʊ�ͤˡ���������ﻲ����⤢��ޤ���

�嵭�Υ��ޥ�ɤϡ����Τ褦��û�̤��뤳�Ȥ�Ǥ��ޤ���

CREATE TABLE orders (
    order_id integer PRIMARY KEY,
    product_no integer REFERENCES products,
    quantity integer
);

��ꥹ�Ȥ��ʤ����ᡢ�ﻲ�ȥơ��֥�Υץ饤�ޥꥭ�����ﻲ�����ʣ���ġˤȤ��ƻ��Ѥ���ޤ���

���������Ǥ⡢��Υ��롼�פ����󤷤��껲�Ȥ����ꤹ�뤳�Ȥ�Ǥ��ޤ��� �����ޤ����ơ��֥�����η����ǵ��Ҥ���ɬ�פ�����ޤ��� �ʲ��ϡ������Τ�����󸽼�Ū����Ǥ���

CREATE TABLE t1 (
  a integer PRIMARY KEY,
  b integer,
  c integer,
  FOREIGN KEY (b, c) REFERENCES other_table (c1, c2)
);

����������󤵤���������ӷ��ϡ��ﻲ����ο�����ӷ��Ȱ��פ��ʤ���Фʤ�ޤ���

���������ˤϡ��ʲ��Τ褦�ˤ���̾���������Ƥ뤳�Ȥ�Ǥ��ޤ���

�ơ��֥�ˤ�ʣ���γ������������ޤ�뤳�Ȥ��Ǥ��ޤ��� ���Τ��Ȥϥơ��֥�֤�¿��¿�ط���������뤿��˻��Ѥ���ޤ��� �㤨�С����ʤ���ʸ�˴ؤ��뤽�줾��Υơ��֥뤬������ˡ�ʣ�������ʤˤޤ�������ʸ���ǽ�ˤ������Ȥ��ޤ� �ʾ����ι�¤�Ǥ��Բ�ǽ�Ǥ��ˡ� ���ξ�硢���Υơ��֥빽¤����ѤǤ��ޤ���

CREATE TABLE products (
    product_no integer PRIMARY KEY,
    name text,
    price numeric
);

CREATE TABLE orders (
    order_id integer PRIMARY KEY,
    shipping_address text,
    ...
);

CREATE TABLE order_items (
    product_no integer REFERENCES products,
    order_id integer REFERENCES orders,
    quantity integer,
    PRIMARY KEY (product_no, order_id)
);

�Ǹ�Υơ��֥�ǡ��ץ饤�ޥꥭ���ȳ����������ŤʤäƤ��뤳�Ȥ����ܤ��Ƥ���������

�������������ʤ˴�Ϣ�դ����Ƥ��ʤ���ʸ�κ�������Ĥ��ʤ����Ȥϡ��������������̤�Ǥ��� ��������������ʸ�ǻ��Ȥ��Ƥ������ʤ�����ʸ��˺�����줿��ɤ��ʤ�Ǥ��礦�� SQL�ǤϤ��Τ褦�ʾ��ⰷ�����Ȥ��Ǥ��ޤ��� ľ��Ū�ˡ������Ĥ��Υ��ץ���󤬹ͤ����ޤ���

������Ȥ��ơ�������¿��¿�ط��˼��Υݥꥷ����������Ƥߤޤ��礦�� ��order_items�ˤ�äơ���ʸ�ǻ��Ȥ��줿�ޤޤ����ʤ������褦���Ƥ⡢��������Ԥ��ʤ��褦�ˤ��ޤ��� ��ʸ����������ȡ���ʸ���ܤ�������ޤ���

CREATE TABLE products (
    product_no integer PRIMARY KEY,
    name text,
    price numeric
);

CREATE TABLE orders (
    order_id integer PRIMARY KEY,
    shipping_address text,
    ...
);

CREATE TABLE order_items (
    product_no integer REFERENCES products ON DELETE RESTRICT,
    order_id integer REFERENCES orders ON DELETE CASCADE,
    quantity integer,
    PRIMARY KEY (product_no, order_id)
);

��������¤���ӥ��������ɤȤ���2�Ĥϡ��Ǥ����Ū�ʥ��ץ����Ǥ��� RESTRICT�ϡ��ﻲ�ȹԤ���������Τ��ɤ��ޤ��� NO ACTION�ϡ����󤬸������줿���˻��ȹԤ��ޤ�¸�ߤ��Ƥ������ˡ����顼�Ȥʤ뤳�Ȥ��̣���Ƥ��ޤ��� ����ϡ�������ꤷ�ʤ����Υǥե���Ȥο��񤤤Ȥʤ�ޤ� �ʤ���������ΰ㤤�ϡ�NO ACTION�Ǥϸ�����ȥ�󥶥��������Ǹ�󤷤ˤ��뤳�Ȥ��Ǥ���Τ��Ф���RESTRICT�Ǥϸ�󤷤ˤǤ��ʤ��Ȥ������ȤǤ��ˡ� CASCADE���ﻲ�ȹԤ�������줿��������򻲾Ȥ���ԡ�ʣ���ġˤ�Ʊ�ͤ˺������ʤ���Фʤ�ʤ����Ȥ���ꤷ�ޤ��� ¾�ˤ�2�ĤΥ��ץ���󤬤���ޤ��� SET NULL��SET DEFAULT�Ǥ��� �����ϡ��ﻲ�ȹԤ�������줿�ݤˡ������󤬤��줾��NULL���ǥե���Ȥ����ꤵ���褦�ˤʤ�ޤ��� ������������뤳�Ȥ��Ƚ����뤳�ȤǤϤʤ����Ȥ������Ȥ����դ��Ƥ��������� �㤨�С�ư���SET DEFAULT����ꤷ���Ȥ��Ƥ⡢�ǥե�����ͤ���������������������ʤ����ˤ����ϼ��Ԥ��ޤ���

ON DELETE�˻�����Τǡ��ﻲ�����ѹ��ʹ����ˤ��줿���˸ƤӽФ����ON UPDATE�⤢��ޤ��� ����餬�Ԥ��륢��������Ʊ���Ǥ���

�ﻲ�ȥơ��֥뤫��ιԤ�DELETE���ﻲ�ȹԤ�UPDATE�ϡ��Ť��ͤȰ��פ���Ԥ��Ф��ƻ��ȥơ��֥�Υ��������׵ᤷ�ޤ��Τǡ����ȹԤ˥���ǥå������դ���Τ�������ɤ��ͤ��Ǥ��� ����Ͼ��ɬ�פȤ������ǤϤʤ����ޤ�������ǥå�������ˡ�ˤ�¿��������褬����ޤ��Τǡ������������������Ǥϻ�����Υ���ǥå�������ưŪ�˺����Ȥ������ȤϤ���ޤ���

�ǡ����ι�������Ӻ���ˤĤ��ƾܤ����ϡ���6���򻲾Ȥ��Ƥ���������

�Ǹ�ˡ����������ϥץ饤�ޥꥭ���ޤ��ϰ��������Τ����줫�Ǥ�����򻲾Ȥ��Ƥ���ɬ�פ�����ޤ��� �������������������򻲾Ȥ��Ƥ����硢NULL�ͤ�ɤΤ褦���б������뤫�˴ؤ���¾����ˡ�������Ĥ�����ޤ��� �����ˤĤ��Ƥϡ���ե����ʸ���CREATE TABLE������������ޤ���

5.3.6. ��¾����

��¾����ˤ�äơ�2�ĤιԤ˴ؤ��ƻ��ꤵ�줿��⤷���ϼ�����ꤵ�줿�黻�Ҥ����Ѥ�����Ӥ������ˡ����ʤ��Ȥ�黻�Ҥ���Ӥ�1�Ĥ����⤷����null���֤����Ȥ�μ¤ˤ��ޤ��� ��ʸ�ϰʲ����̤�Ǥ���

CREATE TABLE circles (
    c circle,
    EXCLUDE USING gist (c WITH &&)
);

�ܺ٤�CREATE TABLE ... CONSTRAINT ... EXCLUDE�򻲾Ȥ��Ʋ�������

��¾������ɲä���ȡ���������ǻ��ꤵ�줿����Υ���ǥå�������ưŪ�˺���ޤ���