MySQL - Como impedir duplicados en una tabla de forma correcta y consulta acerca de un sistema de seguimient

 
Vista:
sin imagen de perfil

Como impedir duplicados en una tabla de forma correcta y consulta acerca de un sistema de seguimient

Publicado por Ramses (1 intervención) el 29/11/2013 08:12:53
Buenas, me dirijo a ustedes espero puedan ayudarme con la siguiente cuestion

estoy realizando un sistema donde se almacenan documentos y de esos documentos se realizan ordenes
el sistema debe hacer un seguimiento de los estados de las ordenes y de los documentos que se reciben (los documentos son creados por una secretaria o jefe, y son tramitados por analistas cuando el analista tramita la orden (que posee un documento) esta debe ser enviada a un jefe para que la certifique y sea enviada a otro departamento)

los datos del documento en si son los siguientes:
asunto, concepto , monto, direccion, dependencia (oficina de una direccion), tipo de documento(memo, oficio,solicitud), numero, fecha_envio(la fecha cuando se envio) y el estado (creado, asignado, certificado).

el problema es que se desea que el numero se reinicie por a;o y se muestre el código del documento que viene dado a veces por solo la direccion el numero y el a;o y en otras ocaciones por la direccion, la dependencia el numero y el a;o; es decir, no siempre un documento viene de una dependencia a veces viene directamente de la direccion ademas de esto el numero de documento es unico para cada tipo de documento y va por a;o; es decir, para el 2013 tendremos numero 1, 2, 3 ... y para el 2014 se volvera a iniciar la cuenta cabe destacar que el numero debe ser insertado por el usuario puesto ya viene impreso en el documento que llega (es decir llega un documento la secretaria o jefe lo registra este ya viene con todos los datos solo hay que introducirlos en el sistema) estoy trabajando con php, mi solucion fue:

hacer una tabla llamada documentos con id autoincremental de primary key, y los datos anteriormente mencionados, ademas de una tabla llamada seguimiento que me guarda todo lo que se haga con el documento asi si se edita si se guarda si se asigna si se certifica se almacena el problema esta cuando voy a registrar y a editar el documento...

necesito que el numero sea unico dado el a;o, el tipo de documento y de donde sea que venga en php facilmente puedo hacer una clausula SELECT * FROM documentos WHERE dependencia = "@tal", direccion "@tal",numero = "@tal", tipo = "@Tal", YEAR(fecha_ex) = "YEAR("@tal") y luego contar las filas y si es mayor de 1 pues mandar el mensaje pero AHORA que sucede si "se da la casualidad" de que 3 personas insertan al mismo tiempo el mismo registro?

espero puedan ayudarme...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder