Mejor diseño de la base de datos

Pretendo desarrollar un site en el que habrá un servicio de consultas para cliente.
Un cliente puede ser tanto una empresa como un cliente particular.
(Del cliente particular necesitaríamos los apellidos, es la única diferencia).
Un cliente se puede dar de baja del servicio pero nosotros seguimos sabiendo sus datos.
Un cliente puede pagar:
1.-Domiciliación bancaria
2.-Transferencia bancaria
Por domiciliación bancaria,(una vez que tenemos sus datos no necesitamos volver a pedírselos). O por transferencia bancaria, paga cada vez que utiliza el servicio.
Contralaremos las consultas que nos hagan los clientes y las respuestas que le demos al cliente.
Necesitaría comprobar:
1-Si el cliente nos ha pagado,, (entonces le podremos resolver la consulta).
2-Los datos bancarios del cliente que paga por domiciliación bancaria.
Esta es una estructura que he pensado:
CREATE TABLE if not exists clientes
Nombre VARCHAR(50)
apellido1 VARCHAR(50)
apellido2 VARCHAR(50)
nif VARCHAR(9) NOT NULL DEFAULT
Dirección VARCHAR(65)
Ciudad VARCHAR(30)
codigopostal VARCHAR(5)
Teléfono VARCHAR(9)
Fax VARCHAR(9)
email VARCHAR(20)
activo ENUM('S','N')
pendiente_pago ENUM('S','N')NOT NULL
forma_pago ENUM('Tarjeta','Domicilio')
fecha_alta DATE
PRIMARY KEY(nif)
CREATE TABLE if not exists datosbancarios
id_cliente VARCHAR(9)
titular_cuenta VARCHAR(50)
Banco VARCHAR(50)
Dirección VARCHAR(65)
Ciudad VARCHAR(30)
Provincia VARCHAR(30)
codigopostal VARCHAR(5)
Entidad VARCHAR(4)
Sucursal VARCHAR(4)
DC VARCHAR(2)
numero_cuenta VARCHAR(10)
fecha_alta DATE
PRIMARY KEY(titular_cuenta)
FOREIGN KEY (id_cliente) REFERENCES clientes(nif)
CREATE TABLE if not exists consultas
id_consulta TIMESTAMP(14)
id_cliente VARCHAR(9)
consulta TEXT
pendiente_respuesta ENUM('S','N')
fecha_consulta DATE
PRIMARY KEY(id_consulta)
FOREIGN KEY (id_cliente) REFERENCES clientes(nif)
CREATE TABLE if not exists respuestas
id_consulta TIMESTAMP(14)
mensaje_respuesta TEXT
fecha DATE
FOREIGN KEY (id_consulta) REFERENCES consultas(id_consulta)
Mi duda surge sobre todo en como diseñar las tablas para comprobar si un cliente ha pagado una consulta o no.
Puedes ver que en este diseño he puesto en la tabla clientes el campo pendiente_pago. Pero mi duda surge cuando el cliente paga cada vez que hace una consulta, como controlarlo.
Perdona por la extensión pero lo necesitaba.
Gracias un saludo
1

1 respuesta

Respuesta
1
Control de pagos de consultas con MySQL:
La base de datos que has definido puede controlar si un cliente ha pagado o no en general, pero no si ha pagado una determinada consulta.
Lo más fácil es que uses un sistema de créditos, de forma que al resolver una determinada consulta al cliente, a éste se le cargue una determinada cantidad de créditos en su cuenta (su cuenta es un campo más en la tabla clientes).
Así, lo que podrás controlar es cuantos créditos debe el cliente a la empresa que resuelve las consultas por un lado, y por otro, cuanto ha pagado a través del banco. Si las cantidades cuadran es que el cliente ya no está en deuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas