Re: Implementación de Tabla tipo MAESTRO - DETALLE

Lists: pgsql-es-ayuda
From: "gvarona" <gvarona(at)ec-red(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Cc: svarona(at)viabcp(dot)com
Subject: Implementación de Tabla tipo MAESTRO - DETALLE
Date: 2006-10-26 18:25:10
Message-ID: 20061026182511.28932.qmail@ml110b.qnet.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola, estoy haciendo un ejemplo pequeño de una estructura MAESTRO - DETALLE
con integridad referencial, para lo cual creo una BD X y alli creo las
tablas de la siguiente manera:

/* Script proporcionado por TDM */
/* Drop Tables */
Drop table "Indice" Restrict;
Drop table "CREPCO" Restrict;
/* Create Tables */

Create table "CREPCO"
(
"Cod_CRE" Integer NOT NULL UNIQUE,
"Nombre" Char(60) NOT NULL,
"Tipo" Char(1) NOT NULL,
primary key ("Cod_CRE")
) Without Oids;

Create table "Indice"
(
"Cod_CRE" Integer NOT NULL,
"Fecha" Date NOT NULL,
"Valor" Char(20) NOT NULL,
primary key ("Cod_CRE")
) Without Oids;

Alter table "Indice" add foreign key ("Cod_CRE") references "CREPCO"
("Cod_CRE");

*****************************************
La tabla CREPCO es la Tabla MAESTRA y la tabla Indice es la Tabla DETALLE, y
la relación debe ser 1 a muchos, el caso es que cuando ingreso datos en la
tabla Indice, solo me deja ingresar 1 registro, como si la relacion fuera 1
a 1, si ingreso otro, me dice que estoy duplicando la clave, ahora, si no le
defino clave primaria a la Tabla Indice, al momento de agregar registros me
dice que debo ponerle una clave primaria, entonces defino la clave primaria
en la Tabla Indices como no UNICA, pero aun asi, no me deja ingresar mas de
un registro en la Tabla Indice.

DATOS DE PRUEBA:

CREPCO:
--------------------------------
Cod_CRE Nombre Tipo
--------------------------------
1 ACEITE A
2 Fierro A

INDICES:
--------------------------------
Cod_CRE Fecha Valor
--------------------------------
1 01/01/2006 15
1 10/01/2006 16
1 15/01/2006 12
2 08/01/2006 05
2 04/01/2006 09
2 17/01/2006 02

Alguna Idea?

Gracias de Antemano.

Salu2,
GVS
---------------------------------------------------------------
EC Red Internet gr(at)tis
Inscríbete en www.ec-red.com


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: gvarona <gvarona(at)ec-red(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org, svarona(at)viabcp(dot)com
Subject: Re: Implementación de Tabla tipo MAESTRO - DETALLE
Date: 2006-10-26 20:01:56
Message-ID: 20061026200156.GD31183@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

gvarona escribió:

> La tabla CREPCO es la Tabla MAESTRA y la tabla Indice es la Tabla DETALLE,
> y la relación debe ser 1 a muchos, el caso es que cuando ingreso datos en
> la tabla Indice, solo me deja ingresar 1 registro, como si la relacion
> fuera 1 a 1, si ingreso otro, me dice que estoy duplicando la clave,

Ponle un numero de linea a la tabla indice, y haces que la llave
primaria sea (cod_cre, linea).

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


From: Jose Carlos Chevarria Mansilla <jchevarria(at)yarkan(dot)com(dot)pe>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Implementación de Tabla tipo MAESTRO - DETALLE
Date: 2006-10-26 20:38:38
Message-ID: 45411CCE.5020709@yarkan.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

gvarona escribió:
> Hola, estoy haciendo un ejemplo pequeño de una estructura MAESTRO -
> DETALLE con integridad referencial, para lo cual creo una BD X y alli
> creo las tablas de la siguiente manera:
>
> /* Script proporcionado por TDM */
> /* Drop Tables */
> Drop table "Indice" Restrict;
> Drop table "CREPCO" Restrict;
> /* Create Tables */
> Create table "CREPCO"
> (
> "Cod_CRE" Integer NOT NULL UNIQUE,
> "Nombre" Char(60) NOT NULL,
> "Tipo" Char(1) NOT NULL,
> primary key ("Cod_CRE")
> ) Without Oids;
>
> Create table "Indice"
> (
> "Cod_CRE" Integer NOT NULL,
> "Fecha" Date NOT NULL,
> "Valor" Char(20) NOT NULL,
> primary key ("Cod_CRE")
> ) Without Oids;
>
> Alter table "Indice" add foreign key ("Cod_CRE") references "CREPCO"
> ("Cod_CRE");
> *****************************************
> La tabla CREPCO es la Tabla MAESTRA y la tabla Indice es la Tabla
> DETALLE, y la relación debe ser 1 a muchos, el caso es que cuando
> ingreso datos en la tabla Indice, solo me deja ingresar 1 registro,
> como si la relacion fuera 1 a 1, si ingreso otro, me dice que estoy
> duplicando la clave, ahora, si no le defino clave primaria a la Tabla
> Indice, al momento de agregar registros me dice que debo ponerle una
> clave primaria, entonces defino la clave primaria en la Tabla Indices
> como no UNICA, pero aun asi, no me deja ingresar mas de un registro en
> la Tabla Indice.
> DATOS DE PRUEBA:
> CREPCO:
> --------------------------------
> Cod_CRE Nombre Tipo
> --------------------------------
> 1 ACEITE A
> 2 Fierro A
> INDICES:
> --------------------------------
> Cod_CRE Fecha Valor
> --------------------------------
> 1 01/01/2006 15
> 1 10/01/2006 16
> 1 15/01/2006 12
> 2 08/01/2006 05
> 2 04/01/2006 09
> 2 17/01/2006 02
>
> Alguna Idea?
Alter table "CREPCO" add foreign key ("Cod_CRE") references "Indice"
("Cod_CRE");
> Gracias de Antemano.
> Salu2,
> GVS
> ---------------------------------------------------------------
> EC Red Internet gr(at)tis
> Inscríbete en www.ec-red.com
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"
>
> __________ Información de NOD32, revisión 1.1833 (20061025) __________
>
> Este mensaje ha sido analizado con NOD32 antivirus system
> http://www.nod32.com
>
>
>


From: Carlos Alberto Márquez Rey <carlos_marquez_rey(at)yahoo(dot)com>
To: Jose Carlos Chevarria Mansilla <jchevarria(at)yarkan(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Implementación de Tabla tipo MAESTRO - DETALLE
Date: 2006-10-27 00:04:59
Message-ID: 20061027000459.23404.qmail@web50806.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

En el detalle


Create table "Indice"
> (
> "Cod_CRE" Integer NOT NULL,
cod_indice integer not null,
> "Fecha" Date NOT NULL,
> "Valor" Char(20) NOT NULL,
> primary key ("Cod_CRE", cod_indice)
> ) Without Oids;

procura escribir los campos en minuscula para
evitar la molestia de usar comillas


> DATOS DE PRUEBA:
> CREPCO:
> --------------------------------
> Cod_CRE Nombre Tipo
> --------------------------------
> 1 ACEITE A
> 2 Fierro A
> INDICES:
> --------------------------------
> Cod_CRE cod_indice Fecha Valor
> --------------------------------
> 1 1 01/01/2006 15
> 1 2 10/01/2006 16
> 1 3 15/01/2006 12
> 2 1 08/01/2006 05
> 2 2 04/01/2006 09
> 2 3 17/01/2006 02

si ves la combinacion de cod_cre y cod_indice es unica en el detalle

Jose Carlos Chevarria Mansilla <jchevarria(at)yarkan(dot)com(dot)pe> escribió: gvarona escribió:
> Hola, estoy haciendo un ejemplo pequeño de una estructura MAESTRO -
> DETALLE con integridad referencial, para lo cual creo una BD X y alli
> creo las tablas de la siguiente manera:
>
> /* Script proporcionado por TDM */
> /* Drop Tables */
> Drop table "Indice" Restrict;
> Drop table "CREPCO" Restrict;
> /* Create Tables */
> Create table "CREPCO"
> (
> "Cod_CRE" Integer NOT NULL UNIQUE,
> "Nombre" Char(60) NOT NULL,
> "Tipo" Char(1) NOT NULL,
> primary key ("Cod_CRE")
> ) Without Oids;
>
> Create table "Indice"
> (
> "Cod_CRE" Integer NOT NULL,
> "Fecha" Date NOT NULL,
> "Valor" Char(20) NOT NULL,
> primary key ("Cod_CRE")
> ) Without Oids;
>
> Alter table "Indice" add foreign key ("Cod_CRE") references "CREPCO"
> ("Cod_CRE");
> *****************************************
> La tabla CREPCO es la Tabla MAESTRA y la tabla Indice es la Tabla
> DETALLE, y la relación debe ser 1 a muchos, el caso es que cuando
> ingreso datos en la tabla Indice, solo me deja ingresar 1 registro,
> como si la relacion fuera 1 a 1, si ingreso otro, me dice que estoy
> duplicando la clave, ahora, si no le defino clave primaria a la Tabla
> Indice, al momento de agregar registros me dice que debo ponerle una
> clave primaria, entonces defino la clave primaria en la Tabla Indices
> como no UNICA, pero aun asi, no me deja ingresar mas de un registro en
> la Tabla Indice.
> DATOS DE PRUEBA:
> CREPCO:
> --------------------------------
> Cod_CRE Nombre Tipo
> --------------------------------
> 1 ACEITE A
> 2 Fierro A
> INDICES:
> --------------------------------
> Cod_CRE Fecha Valor
> --------------------------------
> 1 01/01/2006 15
> 1 10/01/2006 16
> 1 15/01/2006 12
> 2 08/01/2006 05
> 2 04/01/2006 09
> 2 17/01/2006 02
>
> Alguna Idea?
Alter table "CREPCO" add foreign key ("Cod_CRE") references "Indice"
("Cod_CRE");
> Gracias de Antemano.
> Salu2,
> GVS
> ---------------------------------------------------------------
> EC Red Internet gr(at)tis
> Inscríbete en www.ec-red.com
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"
>
> __________ Información de NOD32, revisión 1.1833 (20061025) __________
>
> Este mensaje ha sido analizado con NOD32 antivirus system
> http://www.nod32.com
>
>
>

---------------------------(fin del mensaje)---------------------------
TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

***********************************************************
Carlos Márquez
***********************************************************
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/


From: Guillermo Varona Silupú <gvarona(at)ec-red(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Implementación de Tabla tipo MAESTRO - DETALLE
Date: 2006-10-27 13:16:17
Message-ID: 454206A1.7030904@ec-red.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Agradezco sus respuestas a este tópico, tengo las siguientes dudas:

1.- Necesariamente tiene que haber una clave primaria en el detalle para
implementar la estructura Maestro-Detalle, y esta, necesariamente tiene
que ser única.?

2.- Si en este caso, decido implemetar com PK compuesta por una FK
(Cod_Cre tipo integer) + un campo de la tabla detalle (Fecha tipo date),
hay que hacerlo de alguna forma especial (hacer alguna conversion al
tipo de dato DATE o algo), ya que cuando ingreso datos en el detalle me
sale un mensaje que dice:
Ha ocurrido un error:
ERROR: syntax error at near ")" en el caracter 22.

3.- Cuando ejecuto los coamndo SQL de la creacion de la estructura, en
PgAdmin obtengo este mensaje:

NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"CREPCO_pkey" for table "CREPCO"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"Indice_pkey" for table "Indice"
La consulta se ejecutó con éxito sin resutado en 609 ms.

que significa?

Gracias de antemano,
Salu2,
GVS


From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Implementación de Tabla tipo MAESTRO - DETALLE
Date: 2006-11-18 22:48:48
Message-ID: 200611182348.48572.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El Viernes, 27 de Octubre de 2006 15:16, GV nos dijo ...:
> Agradezco sus respuestas a este tópico, tengo las siguientes dudas:
>
> 1.- Necesariamente tiene que haber una clave primaria en el detalle para
> implementar la estructura Maestro-Detalle, y esta, necesariamente tiene
> que ser única.?

Yo creía que no ... :-(
Que eso era potestad del que crea las relaciones.

> 2.- Si en este caso, decido implemetar com PK compuesta por una FK
> (Cod_Cre tipo integer) + un campo de la tabla detalle (Fecha tipo date),
> hay que hacerlo de alguna forma especial (hacer alguna conversion al
> tipo de dato DATE o algo), ya que cuando ingreso datos en el detalle me
> sale un mensaje que dice:
> Ha ocurrido un error:
> ERROR: syntax error at near ")" en el caracter 22.

Como no pongas el código que da error (como mínimo para saber que hay en esa
linea y ese carácter) ...

> 3.- Cuando ejecuto los coamndo SQL de la creacion de la estructura, en
> PgAdmin obtengo este mensaje:
>
> NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
> "CREPCO_pkey" for table "CREPCO"
> NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
> "Indice_pkey" for table "Indice"
> La consulta se ejecutó con éxito sin resutado en 609 ms.
>
> que significa?

Cuando creas un UNIQUE, sea explicitamente o a través de PRIMARY KEY, se tiene
que crear el indice sobre el que el gestor va ha trabajar.

Si no lo creas tu en la definición de la tabla, lo crea el sistema por su
cuenta, dándole un nombre que el pueda manejar.

> Gracias de antemano,
> Salu2,
> GVS
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
>

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------