Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

herencia en mysql

Estas en el tema de herencia en mysql en el foro de Mysql en Foros del Web. hola, tengo una base de datos mysql quiero crear esta herencia: tabla persona (dni,nombre,apellido1,apellido2) heredan: tabla socio(nombreUsuario,password,dni) tabla jugador(equipo,lesion,goles) tabla directivo(cargo) alguien sabe como lo ...
  #1 (permalink)  
Antiguo 25/01/2010, 04:21
 
Fecha de Ingreso: julio-2007
Mensajes: 48
Antigüedad: 16 años, 9 meses
Puntos: 0
herencia en mysql

hola,
tengo una base de datos mysql
quiero crear esta herencia:

tabla persona (dni,nombre,apellido1,apellido2)

heredan:

tabla socio(nombreUsuario,password,dni)
tabla jugador(equipo,lesion,goles)
tabla directivo(cargo)

alguien sabe como lo puedo hacer??
  #2 (permalink)  
Antiguo 25/01/2010, 05:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: herencia en mysql

Con el uso de claves foráneas (FK).
El concepto de herencia en las bases de datos se halla en el nivel de diseño lógico (DER), pero cuando se está tratando de tablas físicas, esta herencia queda determinada por las relaciones entre tablas, las que se administran por medio de FK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/01/2010, 05:47
 
Fecha de Ingreso: julio-2007
Mensajes: 48
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: herencia en mysql

por lo q entiendo, deberia hacer en cada una de las 3 tablas q heredan, 4claves foráneas, una a cada campo de la tabla persona, no??
gracias
  #4 (permalink)  
Antiguo 25/01/2010, 06:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: herencia en mysql

No.
Una FK es un campo o conjunto de campos que contiene como valor el valor de la clave primaria de la tabla a que hace referencia.
En tu caso, la tabla PERSONA contiene una sola PK, por lo que cada una de las tablas dependientes contendrá un sólo campo FK cuyo valor debe existir en la tabla primaria al momento de insertar un registro en la secundaria.

Claves Primarias / Claves Foráneas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 25/01/2010, 06:46
 
Fecha de Ingreso: julio-2007
Mensajes: 48
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: herencia en mysql

vale, entonces tendria las tres tablas con una FK a dni de la tabla persona

Y si quiero introducir un nuevo directivo en la BD con dni, nombre, apellido1, apellido2 y cargo...
tengo q insertar primero en la tabla persona dni,nombre y apellidos y luego insertar en directivo dni y cargo, es así?

perdón por mi insistencia y gracias x la ayuda
  #6 (permalink)  
Antiguo 25/01/2010, 06:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: herencia en mysql

Cita:
Y si quiero introducir un nuevo directivo en la BD con dni, nombre, apellido1, apellido2 y cargo...
tengo q insertar primero en la tabla persona dni,nombre y apellidos y luego insertar en directivo dni y cargo, es así?
SI.
El problema es que cuando haces un INSERT, DELETE o UPDATE, el mismo DBMS realiza antes de realizar efectivamente la operación algunas comprobaciones entre las que se cuentan: que la cantidad de campos entrantes correspondan en tipo y número con los que se indican, Que los tipos de datos sean válidos (tipo de columna), que se respeten las restricciones de NOT NULL, y que se respete la integridad referencial, la cual en este caso significa que verifica que la FK que se está ingresando como valor exista ya en la tabla a la que esa FK hace referencia.
Entonces, siempre y en todos los casos, las tablas dependientes deben cargarse luego de que los valores de las FK ya estén en las tablas primarias.
Los únicos casos en que esto no funciona es al usar tablas MyISAM (que no tienen restricciones de clave foránea), o si desactivas la comprobación de FK, cosa que se debe hacer bajo condiciones muy estrictas y sólo por optimización de carga de datos a gran escala.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: herencia
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 03:17.