   subject_id uuid not null references sg_public.entity (entity_id), --  TODO check kind
   unique (user_id, subject_id)
 );
--- todo comment table/columns
+comment on table sg_public.user_subject
+  is 'The association between a user and a subject. This is a subject the learner is learning.';
+comment on column sg_public.user_subject.id
+  is 'The ID of the user subject.';
+comment on column sg_public.user_subject.created
+  is 'When the user created the association.';
+comment on column sg_public.user_subject.modified
+  is 'When the association last changed.';
+comment on column sg_public.user_subject.user_id
+  is 'Which user the association belongs to.';
+comment on column sg_public.user_subject.subject_id
+  is 'Which subject the association belongs to.';
 
 create table sg_public.response (
   id uuid primary key default uuid_generate_v4(),

  kind sg_public.notice_kind not null,
  data jsonb not null,
    -- jsonb?: varies per kind
  read boolean not null default false,
  tags text[] null default array[]::text[]
);
-- todo comment table/columns

create table sg_public.follow (
  id uuid primary key default uuid_generate_v4(),

  'unscored_embed',
  'choice'
);
comment on type sg_public.card_kind
  is 'The kinds of cards available to learn. Expanding.';

------ Cards, Units, Subjects > Tables -----------------------------------------

