CREATE TYPE VALID_ACCOUNT_TYPE AS ENUM ('Admin', 'Manager', 'Worker');
CREATE TYPE VALID_LANGUAGE AS ENUM ('en', 'th');
CREATE TABLE IF NOT EXISTS users (
user_id SMALLSERIAL PRIMARY KEY,
username TEXT NOT NULL UNIQUE CONSTRAINT username_constraint CHECK (username ~ '^[A-Z0-9_-]{1,15}$'),
disabled BOOLEAN NOT NULL DEFAULT FALSE,
password TEXT NOT NULL,
plain_password TEXT NOT NULL,
created TIMESTAMP WITHOUT TIME ZONE NOT NULL,
modified TIMESTAMP WITHOUT TIME ZONE NOT NULL
);
CREATE TABLE IF NOT EXISTS user_details (
user_id SMALLINT PRIMARY KEY REFERENCES users,
account_type VALID_ACCOUNT_TYPE NOT NULL,
language VALID_LANGUAGE NOT NULL DEFAULT 'en',
nickname TEXT NOT NULL CONSTRAINT nickname_constraint CHECK (nickname ~ '^.{1,15}$') DEFAULT 'No Nickname',
phone_number TEXT NOT NULL CONSTRAINT phone_number_constraint CHECK (phone_number ~ '^[0-9]{10}$') DEFAULT 'No Phone Number',
line_username TEXT NOT NULL CONSTRAINT nickname_constraint CHECK (nickname ~ '^.{1,15}$') DEFAULT 'No Line Username',
created TIMESTAMP WITHOUT TIME ZONE NOT NULL,
modified TIMESTAMP WITHOUT TIME ZONE NOT NULL
);
我有下面的表,在创建这些之后我想要另一个表来描述Manager(One)与Workers(Many)之间的关系。一位经理可以有很多工人。一个工人只能有一个经理。我该如何处理表创建?
我目前有
CREATE TABLE IF NOT EXISTS user_relationships (
user_id1 SMALLINT REFERENCES users NOT NULL,
user_id2 SMALLINT REFERENCES users NOT NULL,
created TIMESTAMP WITHOUT TIME ZONE NOT NULL,
modified TIMESTAMP WITHOUT TIME ZONE NOT NULL,
UNIQUE (user_id1, user_id2)
);
但是这根本没有任何关于经理/工人的限制。