Foros del Web » Programando para Internet » PHP »

Insertar en Mysql con Subtipo o tablas relacionadas

Estas en el tema de Insertar en Mysql con Subtipo o tablas relacionadas en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/12/2013, 06:30
 
Fecha de Ingreso: diciembre-2013
Mensajes: 2
Antigüedad: 10 años, 11 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.
  #2 (permalink)  
Antiguo 06/12/2013, 06:54
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Insertar en Mysql con Subtipo o tablas relacionadas

Esto deberia ir en el.foro de Mysql, pero mysql_insert_id() devuelve el ultimo id insertado en esa session, o sea, la que insertaste tu, no la del vecino ni la del primo.
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #3 (permalink)  
Antiguo 06/12/2013, 08:18
 
Fecha de Ingreso: diciembre-2013
Mensajes: 2
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Insertar en Mysql con Subtipo o tablas relacionadas

Esto deberia ir en el.foro de Mysql, pero mysql_insert_id() devuelve el ultimo id insertado en esa session, o sea, la que insertaste tu, no la del vecino ni la del primo.


si eso lo entiendo pero yo me refiero a que ocurre ok yo hago el insert del documento tomo el ID autoincremental que se me genero con insert_id() de php y hago ahora el insert del codigo sea el que sea suponte QUE ESE CODIGO en el momento que yo hacia la otra insercion alguien ya lo inserto (obviamente ya el sistema paso por la validacion de eso y como nadie lo habia hecho paso la validacion) cuando va a ingresar el codigo NO lo va a insertar porque el codigo ingresado YA EXISTE. me entiendes? va a quedar uerfano ejemplo:

documento:
tipo: oficio
oficina: CON
unidad: CN
numero: 00005
Fecha : 02/05/2013 (esto con la funcion de php sacamos el a;o) 2013

genero el codigo concatenando los datos:

$codigo = $oficina."-".$unidad."-".$numero."-".$y;

ahora hago mi link de base de datos bla bla bla y hago el queri de validacion dependiendo del tipo de documento Select * from oficio where code = $codigo
el me va a devolver o X o 0,
pasa la validacion suponemos que no existe insertamos los datos en el documento
con insert .. bla bla bla
y ahora con insert_id() tomamos ese id e insertamos $codigo en la tabla de oficio quedaria por ejemplo:
id_of: 1
codigo: CON-CN-00005-2013
AHORA QUE PASA si AMBOS creamos un documento con los misms datos del ejemplo A LA VEZ? obviamente el ID va a ser diferente por que son dos documentos diferentes pero el codigo es el mismo yo pienso que se insertaria uno y el que sigue por el campo unique de la base de datos quedando los datos de la tabla padre huerfanos.

Última edición por ramses132; 06/12/2013 a las 08:24

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:42.