Я хочу понять наследование в postgresql, простые столбцы в таблицах.
CREATE TABLE users (
id serial PRIMARY KEY,
username VARCHAR UNIQUE NOT NULL,
email VARCHAR NOT NULL,
password_salt VARCHAR,
password_hash VARCHAR,
avatar serial
)
CREATE TABLE groups (
id serial PRIMARY KEY NOT NULL,
name VARCHAR,
email VARCHAR,
avatar serial,
)
CREATE TABLE accounts (
id serial PRIMARY KEY NOT NULL,
name VARCHAR,
avatar serial,
rating json NOT NULL,
);
CREATE TABLE users_to_accounts (
id serial PRIMARY KEY NOT NULL,
start_time DATETIME NOT NULL,
end_time DATETIME,
)
CREATE TABLE account_subscryptions (
user_id serial NOT NULL,
account_id serial NOT NULL,
) INHERITS users_to_accounts
CREATE TABLE account_memberships (
user_id serial NOT NULL,
account_id serial NOT NULL,
) INHERITS users_to_accounts
CREATE TABLE users_to_groups (
id serial PRIMARY KEY NOT NULL,
start_time DATETIME NOT NULL,
end_time DATETIME,
)
CREATE TABLE group_subscryptions (
user_id serial NOT NULL,
group_id serial NOT NULL,
) INHERITS users_to_groups
CREATE TABLE group_memberships (
user_id serial NOT NULL,
group_id serial NOT NULL,
) INHERITS users_to_groups
Теперь.1. Это хороший дизайн, чтобы внешние ключи в дочерних таблицах были общими данными в «абстрактной» таблице?2. Есть ли какие-либо ловушки в будущих изменениях базы данных с унаследованными таблицами переселения?3. Я все не прав и есть лучший способ для этой схемы?4. Я хочу создать хорошую схему базы данных и сгенерировать graphql api в postgraphile, полчаса заглядывая в гугл, не дал мне ни одного хорошего или лучшего решения, поэтому каждая ссылка будет отличной.
Это может быть полезно для других, я думаю.Спасибо