Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/01/2015, 17:16
NelsonJPG
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
consulta de herencia y los insert en tablas

buenas tengo dos dudas al respecto de la herencia (generalizacion y especializacion)
estuvee leyendo algunos post y no logre dar con la informacion y me surgen las siguientes dudas

1-. cuando se inserta el registro en la tabla padre y luego al insertar un registro en la tabla hija con el id(fk) q referencia a la tabla padre el valor que insertas en la tabla hija se duplica en la padre? o hay q agregar alguna reestriccion?

2- en la especializacion cuando es disjunta total que se agrega el discriminante x tipo? ese atributo es que? que se hace con ese atributo una restriccion una funcion?

es primera vez q manejo la herencia en la base de datos y pues mas o menos entendi su semantica. de igual forma adjunto el codigo para que vean que si he trabajado sobre el tema.. acepto sugerencias =)

Código SQL:
Ver original
  1. CREATE TABLE pieza
  2. (
  3.   modelo CHARACTER VARYING(20) NOT NULL,
  4.   nombre CHARACTER VARYING(15),
  5.   fabricante CHARACTER VARYING(15),
  6.   CONSTRAINT pk_modelo PRIMARY KEY (modelo)
  7. )
  8. WITH (
  9.   OIDS=FALSE
  10. );
  11. ALTER TABLE pieza
  12.   OWNER TO postgres;
  13.  
  14.  
  15. CREATE TABLE disco_duro
  16. (
  17.   modelo CHARACTER VARYING(20) NOT NULL,
  18. -- Inherited from table pieza:  nombre character varying(15),
  19. -- Inherited from table pieza:  fabricante character varying(15),
  20.   capacidad text,
  21.   puerto text,
  22.   CONSTRAINT pk_modelo_disco_duro PRIMARY KEY (modelo),
  23.   CONSTRAINT fk_modelo_disco_duro_pieza FOREIGN KEY (modelo)
  24.       REFERENCES pieza (modelo) MATCH SIMPLE
  25.       ON UPDATE NO ACTION ON DELETE CASCADE
  26. )
  27. INHERITS (pieza)
  28. WITH (
  29.   OIDS=FALSE
  30. );
  31. ALTER TABLE disco_duro
  32.   OWNER TO postgres;
  33.  
  34.  
  35. CREATE TABLE tarjeta_madre
  36. (
  37.   modelo CHARACTER VARYING(20) NOT NULL,
  38. -- Inherited from table pieza:  nombre character varying(15),
  39. -- Inherited from table pieza:  fabricante character varying(15),
  40.   socket text,
  41.   tipo_memoria text,
  42.   max_tamano text,
  43.   CONSTRAINT pk_modelo_tarjeta_madre PRIMARY KEY (modelo),
  44.   CONSTRAINT fk_modelo_tarjeta_madre_pieza FOREIGN KEY (modelo)
  45.       REFERENCES pieza (modelo) MATCH SIMPLE
  46.       ON UPDATE NO ACTION ON DELETE CASCADE
  47. )
  48. INHERITS (pieza)
  49. WITH (
  50.   OIDS=FALSE
  51. );
  52. ALTER TABLE tarjeta_madre
  53.   OWNER TO postgres;