моделирование наследования таблиц отношений - PullRequest
0 голосов
/ 14 мая 2019

Я хочу понять наследование в 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, полчаса заглядывая в гугл, не дал мне ни одного хорошего или лучшего решения, поэтому каждая ссылка будет отличной.

Это может быть полезно для других, я думаю.Спасибо

...