¿Cuál sería un buen diseño de base de datos para una plataforma de mercado independiente?

Algo parecido a un esquema en estrella podría ser útil, donde client modelos de client y freelancer referencia a una account genérica. El pago y la información bancaria podrían vincularse a la account y luego aparecer en la lista blanca en los modelos de client y freelancer

CREAR TABLA cuenta (
cuenta uuid NO NULL DEFAULT uuid_generate_v4 (),
t timestamptz NO NULL DEFAULT ahora (),
texto de ubicación NO NULL
);

CREAR TABLA email (
cuenta uuid NO NULL REFERENCES cuenta
EN ELIMINAR CASCADA EN ACTUALIZAR EN CASCADA
DEFERRABLE INICIALMENTE DIFERIDO,
mensaje de correo electrónico NO NULL,
t timestamptz NO NULL DEFAULT ahora (),
primario booleano NO NULO POR DEFECTO FALSO
);
CREAR ÍNDICE ÚNICO primary_emails EN el correo electrónico (correo electrónico) DONDE primario;

CREAR TABLA cliente (
cuenta uuid REFERENCIAS CLAVE PRINCIPALES cuenta
EN ELIMINAR CASCADA EN ACTUALIZAR EN CASCADA
DEFERRABLE INICIALMENTE DIFERIDO,
nombre de texto NO NULL ÚNICO,
– La hora en que se activó la cuenta del cliente, específicamente.
t timestamptz NO NULL DEFAULT ahora (),
calificación numérica (3,2) NO NULL
);

CREAR TABLA freelance (
cuenta uuid REFERENCIAS CLAVE PRINCIPALES cuenta
EN ELIMINAR CASCADA EN ACTUALIZAR EN CASCADA
DEFERRABLE INICIALMENTE DIFERIDO,
nombre de texto NO NULL ÚNICO,
– La hora en que se activó la cuenta independiente, específicamente.
t timestamptz NO NULL DEFAULT ahora (),
tasa numérica (9,2) NO NULL,
horas jsonb NO NULO POR DEFECTO ‘{}’,
calificación numérica (3,2) NO NULL
);

Un foro independiente no es muy diferente del sitio de Amazon de vender cualquiera de sus cosas. Encuentre un software de sitio de comercio electrónico de código abierto y luego agregue algún tipo de sitio de membresía (para cada uno de los trabajadores independientes y cada uno de los clientes) y tendrá los conceptos básicos de un foro.

Uno para el que primero creó requisitos y formuló muchas preguntas sobre cómo involucrar a todos los interesados ​​en la conversación.