Comunidad de diseño web y desarrollo en internet online

Dura al modela tabla.-

Citar            
MensajeEscrito el 08 May 2008 09:41 pm
Les voy a explicar con un ejemplo:

Código :

Tbl_Tecnicos
Idtecnioc nombre caracteristicas telefono etc.

Código :

Tbl_Trabajo
Idtrabajo Idtecnico obs caracteristicas fecha


Para exiplicar un poco, tengo un sistema en el cual tengo registrado a todos los Tecnicos que trabajan directo contratados con la Empresa, y tengo otra table en la cual tengo ingresado todo el trabajo que han realizado esos tecnicos, pero en ocaciones puntuales te llaman a otros tecnicos para que hagan un trabajo especifico y ello tambien lo tengo que registrar en la tabla "trabajo" y no se como.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 08 May 2008 09:58 pm
Mi, no entender muy bien, :S
Si no necesitas registrar la información de los "otros" técnicos, simplemente puedes hacer que Idtecnico acepte valores nulos.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 08 May 2008 10:13 pm
En la tabla tecnicos se deben solo registrar lo que son contratados por la empresa, pero en la tabla trabajos(reparaciones) tengo que ingresar todas los trabajos realizados incluyendo a los externos.-
A los externos no los puedo ingresar a la tabla de tecnicos ya que esta esta enlazada con otras tablas y podria producir algun error, ademas que en este caso hay que ingresar los datos de la empresa a que pertenecen.-

No se si hacer una nueva tabla que se llame tecnicos_externos. Y a la tabla trabajo(reparaciones) agregar una columna opcion que si sea 1 se tendria que enlazar con la tabla tecnicos y si es 0 con la tabla tecnicos_externos.-

O a la tabla "trabajo" agregar una columna "empresa_externa (varchar 40)" , "nombre_tecnico (varchar 40)", "identificador (varchar 10)" y en el caso de que sea un externo usar estos campos y de contrario se ingresaria solo el "Idtecnico" y los otros dos campos quedarian en Null.

No se cual es la mejor manera :S.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 08 May 2008 10:28 pm
En la tabla de técnicos agrega un campo booleano que te permita identificar si es un trabajador interno o externo, además de agregar una tabla más como catálogo de empresas que herede su clave a tu tabla de técnicos. Yo creo que esa sería la mejor forma.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 09 May 2008 12:15 am
Si quieres más apoyo sobre la idea de agregar otro campo a tu tabla "trabajos", tmb estoy de acuerdo con ello.

Desarrollé un trabajo similiar, solo que ese "error" (de cargar trabajos/técnicos externos a la empresa), me ocurrió luego de tener toda la aplicación hecha. ¿Solución? Un par de campos a la tabla "trabajos" y "ténicos"... Y en el formulario de "agregar" solo deberías poner un <select>...

Exitos!

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 09 May 2008 02:48 pm
Es que el problema ahora es la Consulta Sql: deberia hacer un:

Select if(t.opcion=1, trabajos.tecnico, tecnicos.tecnico);

Es correcto eso?

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 09 May 2008 02:55 pm

Necrophasto escribió:

Si quieres más apoyo sobre la idea de agregar otro campo a tu tabla "trabajos", tmb estoy de acuerdo con ello.

No, york3rs, si deseas mantener la integridad de tu base de datos, debes evitar a toda costa agregar campos que \"sabes\" que la mayor parte de las veces será nulo.

wikipedia escribió:


Primera Forma Normal (1FN)
Artículo principal: Primera forma normal
Una tabla está en Primera Forma Normal sólo si

* Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos.
* La tabla contiene una clave primaria
* La tabla no contiene atributos nulos
* Eliminar grupos repetitivos y formar una nueva tabla


wikipedia escribió:


Reglas de Codd
...
Regla No. 3 - Tratamiento sistemático de los valores nulos

La información inaplicable o faltante puede ser representada a través de valores nulos.

Un RDBMS (Sistema Gestor de Bases de Datos Relacionales) debe ser capaz de soportar el uso de valores nulos en el lugar de columnas cuyos valores sean desconocidos o inaplicables.
...

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 09 May 2008 03:03 pm
Por eso mismo no sabia como hacerlo, ademas me estaba complicando con las consultas SQL.- Bueno voy a hechar manos a la obra y les cuento como funciona.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 09 May 2008 03:34 pm
Cómo te comentaba, los técnicos externos de igual forma los puedes registrar en tu tabla de "técnicos", y con el campo booleano que te comento, puedes filtrarlos para así obtener los técnicos que son empleados de la empresa.

Una cosa es cómo guardar la información y otra muy distinta es cómo presentarla o cómo la verá el usuario final, y yo creo que te confundes un poco en este punto.

Saludos.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 09 May 2008 03:54 pm
Muchas Gracias Darel, ya tengo mas clara la pelicula, pero pensando mejor deberia estructurar de otra manera, ya que omiti que en la tabla de Tecnicos hay informacion adicional interna para le empresa por cada uno, y en el caso de ingresar a los externos quedarian "Null". Entonces tendria que crear una tabla_TExternos y en la trabajos agrego un booleean para saber a que tabla ir a buscar los datos correspondientes.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 09 May 2008 06:17 pm
Sin los campos que necesitas agregar son muchos, lo más aconsejable es que crees una tabla adicional donde los puedas guardar y así evitas los valores nulos.

Esta tabla deberá llevar una clave candidata más la clave externa que hace referencia a tu tabla técnico en donde puedes establacer el valor de la clave externa como único. Esto es porque, como es una relación 1:1, aseguras que no correponda más de un registro de la tabla adicional para la tabla técnicos (no es la única forma).

De igual forma, te aconsejo que busques información sobre Especialización y Generalización, que es tu caso.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.