Database REVICE键工作引用必须是唯一的(即所有值必须是不同的)。这意味着它可以有一个空值。如果使用NOT DISTINCT运算符定义引用,则所有空值都可以引用该空值。我认为那样会更好(从更有用的意义上说)。对于连接(外部和内部),我认为strict equal

Database REVICE键工作引用必须是唯一的(即所有值必须是不同的)。这意味着它可以有一个空值。如果使用NOT DISTINCT运算符定义引用,则所有空值都可以引用该空值。我认为那样会更好(从更有用的意义上说)。对于连接(外部和内部),我认为strict equal,database,database-design,Database,Database Design,REVICE键工作引用必须是唯一的(即所有值必须是不同的)。这意味着它可以有一个空值。如果使用NOT DISTINCT运算符定义引用,则所有空值都可以引用该空值。我认为那样会更好(从更有用的意义上说)。对于连接(外部和内部),我认为strict equals更好,因为当左侧的NULL与右侧的所有NULL匹配时,“NULL匹配”将相乘。 CREATE TABLE module (name varchar(20) PRIMARY KEY, description text D

REVICE键工作引用必须是唯一的(即所有值必须是不同的)。这意味着它可以有一个空值。如果使用NOT DISTINCT运算符定义引用,则所有空值都可以引用该空值。我认为那样会更好(从更有用的意义上说)。对于连接(外部和内部),我认为strict equals更好,因为当左侧的NULL与右侧的所有NULL匹配时,“NULL匹配”将相乘。
CREATE TABLE module
  (name        varchar(20) PRIMARY KEY,
   description text DEFAULT '' NOT NULL);

CREATE TABLE version
  (module      varchar(20) REFERENCES module,
   major       integer NOT NULL,
   minor       integer DEFAULT 0 NOT NULL,
   patch       integer DEFAULT 0 NOT NULL,
   release     integer DEFAULT 1 NOT NULL,
   ext         varchar(20),
   notes       text DEFAULT '' NOT NULL,
   PRIMARY KEY (module, major, minor, patch, release, ext));
CREATE TABLE version
  (module      varchar(20) REFERENCES module,
   major       integer NOT NULL,
   minor       integer DEFAULT 0 NOT NULL,
   patch       integer DEFAULT 0 NOT NULL,
   release     integer DEFAULT 1 NOT NULL,
   ext         varchar(20) DEFAULT '' NOT NULL,
   notes       text DEFAULT '' NOT NULL,
   PRIMARY KEY (module, major, minor, patch, release, ext));