Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2013, 06:30
ramses132
 
Fecha de Ingreso: diciembre-2013
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
Insertar en Mysql con Subtipo o tablas relacionadas

Buenas, espero puedan ayudarme. El problema es el siguiente estoy haciendo un sistema de registro de documentos donde tengo diversos tipos de documento valga la redundacia esto son: oficios, memos y solicitudes. El ambito es el siguiente hay oficinas y cada oficina tiene unidades. Cada oficina puede enviar cualquiera de los documentos anteriores en una fecha dada y cada unidad de dicha oficina de iguall manera por lo cual cada documento viene con un CODIGO UNICO que viene por el tag de la oficina y la unidad(o de la oficina solamente) el numero del documento dada la fecha y el tipo un ejemplo (enviaron un oficio de la oficina de compras, en la unidad de bienes es el numero 00001 y fue en el 2013) el codigo quedaria asi: por ejemplo OFICIO: COM-BI-00001-2013 (obviamente se puede repetir el numero 00001 para el 2014 y puede existir otro documento con el mismo codigo pero de diferente tipo de documento es decir un MEMO: COM-BI-00001-2013 y un oficio pueden tener el mismo codigo porque no son el mismo tipo de documento).

viendo esto mi di cuenta que no podia hacer una sola tabla de documentos porque hay datos que se repiten y no puedo hacer campos unicos de ser asi por lo cual separe las tablas y las relacione con una FK realice un subtipo de la siguiente manera:

documentos:
clave primera id_doc autoincremental
asunto varchar(255)
concepto text
monto double
tipo fk( id_tipos)
oficina fk(id_of)
unid fk(id_un)
fecha (datetime)
numero varchar (5)
--(en las tablas hijas como lo unico que cambia entre ellas es el codigo pues solo ingreso el codigo y el id del padre para relacionarlo)
oficio:
PK id_oficio FK(id_doc)
codigo_of varchar (el codigo del oficio sigue la nomenclatura Oficina-UNIDAD-numero-a;o o OFICINA-NUMERO-A:O aqui no tengo problema de validacion porque el codigo es unico y no hay problema... en esa parte dado que si se trata de insertar un codigo ya guardado la base de datos no lo permitira por el unique)

memo:
PK id_memo FK(id_doc)
codigo_memo varchar (el codigo de memo sigue la nomenclatura NUMERO-A:O y depende de la oficina o unidad es decir puede existir 00001-2013 para X oficina como puede existir la misma para otra entonces... aqui ya no puedo validarlos por unique porque existen iguales... )


solicitud:
PK id_memo FK(id_doc)
codigo_sol varchar (las solicitudes no tienen codigo solo la numeracion dependiendo de la oficina o unidad correspondiente y se deben autogenerar por a;o es decir solicitud 1-2013 2..., 3, 1-2014, y tambien dependen de la oficina y unidad...)


viendo todo estos problemas me consigo con otro aparte como la relación al ingresar es entre dos tablas... ok yo valido que no exista el código dependiendo con un select * from oficios where codigo_ofi = "tal" supongamos me da 0 porque no existe ninguno entonces sigo inserto en documentos los datos del formulario y luego con insert_id inserto el codigo en la tabla de oficios... mi pregunta QUE OCURRE si varios clientes hacen solicitud a la vez? ambos pasarian la validacion y el que vaya un segundo retrasado va a quedar con un documento huerfano es decir sin codigo porque la base de datos pienso va a negar por el UNIQUE mi otra duda que surge...es con las oficinas y unidades siempre tengo que hacer un select * from tal y tal y ver si existe registro antes pero igual sucede lo anterior... 1. no se como insertar en esta situacion. 2. no se como ejecutar de forma abstracta y correcta la digamos "simulada" herencia de las tablas y 3. :C HELPME!!! se que esto se debe realizar con un trigger y otras cosas pero no consigo informacion referente... si pudieran ayudarme seria de mucho aprecio gracias.