Ayuda sobre forzar la posicion de un nodo en el plan tree

From: LDC - Carmen Brando <carmen(at)ldc(dot)usb(dot)ve>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Ayuda sobre forzar la posicion de un nodo en el plan tree
Date: 2006-10-04 13:59:54
Message-ID: Pine.LNX.4.64.0610040955330.15499@leto.ldc.usb.ve
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Hola,
Otra vez muchas gracias por la ayuda proporcionada, en cuanto al
problema anterior, ya lo resolvimos.
Tenemos una duda un poco teorica:
Queremos asegurar que nuestro algoritmo (nodo) de Skyline se
ejecute estrictamente despues del nodo sort/group by.
Si puede arrojar un poco de luz sobre este asunto estaremos
muy agradecidas :).

Saludos,
Vanessa y Carmen.

On Mon, 25 Sep 2006, Jaime Casanova wrote:

> On 9/24/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
>> LDC - Carmen Brando escribió:
>> >
>> > Hola,
>> > Disculpe el abuso pero como su respuesta fue tan rapida :-),
>> > aprevechamos de preguntarle otra duda que surgio, que es un RegProcedure?
>> > lo vimos en backend/util/sort/tuplesort.c.
>>
>> Registered Procedure
>>
>> En SQL, uno puede usar algo como
>>
>> select 'pg_class'::regclass
>>
>> y obtener la representacion apropiada de la tabla pg_catalog.pg_class.
>> O tambien puede hacer
>>
>> select '1260'::regclass
>> y obtener exactamente lo mismo. La conveniencia aqui es ignorar si la
>> tabla fue pasada como Oid o como nombre.
>>
>>
>> Con RegProcedure puedes hacer algo similar:
>>
>> alvherre=# select 'generate_series(int,int4)'::regprocedure;
>> regprocedure
>> ----------------------------------
>> generate_series(integer,integer)
>> (1 fila)
>>
>
> esa consulta puede ser confusa porque pareceria que regresa la misma
> cadena de caracteres. esta deja claro que lo que retorna es un oid
>
> template1=# select * from pg_proc
> template1 -# where oid = 'generate_series(int,int4)'::regprocedure;
> proname | pronamespace | proowner | prolang | proisagg |
> prosecdef | proisstrict | proretset | provolatile | pronargs |
> prorettype | proargtypes | proallargtypes | proargmodes | proargnames
> | prosrc | probin | proacl
> -----------------+--------------+----------+---------+----------+-----------+-------------+-----------+-------------+----------+------------+-------------+----------------+-------------+-------------+----------------------+--------+--------
> generate_series | 11 | 10 | 12 | f | f
> | t | t | v | 2 | 23 |
> 23 23 | | | |
> generate_series_int4 | - |
> (1 row)
>
> o quiza esta:
>
> template1=# select 'generate_series(int,int4)'::regprocedure::oid;
> oid
> ------
> 1067
> (1 row)
>
>
>
>From pgsql-es-ayuda-owner(at)postgresql(dot)org Wed Oct 4 11:11:36 2006
Received: from localhost (wm.hub.org [200.46.204.128])
by postgresql.org (Postfix) with ESMTP id B941D9FB31D
for <pgsql-es-ayuda-postgresql(dot)org(at)postgresql(dot)org>; Wed, 4 Oct 2006 11:11:35 -0300 (ADT)
Received: from postgresql.org ([200.46.204.71])
by localhost (mx1.hub.org [200.46.204.128]) (amavisd-new, port 10024)
with ESMTP id 90163-06 for <pgsql-es-ayuda-postgresql(dot)org(at)postgresql(dot)org>;
Wed, 4 Oct 2006 14:11:25 +0000 (UTC)
X-Greylist: from auto-whitelisted by SQLgrey-
Received: from web30802.mail.mud.yahoo.com (web30802.mail.mud.yahoo.com [68.142.200.145])
by postgresql.org (Postfix) with SMTP id D44319FB31A
for <pgsql-es-ayuda(at)postgresql(dot)org>; Wed, 4 Oct 2006 11:11:24 -0300 (ADT)
Received: (qmail 33597 invoked by uid 60001); 4 Oct 2006 14:11:22 -0000
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
s=s1024; d=yahoo.es;
h=Message-ID:Received:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding;
b=IhnuB+wAlBnQE1Y6plue2/ipULsc041XW9wFRpm3EJjlZMWm0u7liBXXy1oHZfjwCL3AEieBBe/tqH1NgCREHb9c7bwHoxaJ+8Uifx7SkM3blg43HnHgHLnp6TIuUD46ON+pMM+i7yOKxihL8414Gw0o6MsctbeAACTrX8qGkaM= ;
Message-ID: <20061004141122(dot)33595(dot)qmail(at)web30802(dot)mail(dot)mud(dot)yahoo(dot)com>
Received: from [200.121.151.126] by web30802.mail.mud.yahoo.com via HTTP; Wed, 04 Oct 2006 16:11:22 CEST
Date: Wed, 4 Oct 2006 16:11:22 +0200 (CEST)
From: Hensa <hensa22(at)yahoo(dot)es>
Subject: RE: Problema Foreign Keys
To: pgsql-es-ayuda(at)postgresql(dot)org
In-Reply-To: <57D33DD5098F134FA0E91EF298513ED7842C2B(at)emissarius(dot)planalfa(dot)info>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="0-696548521-1159971082=:30657"
Content-Transfer-Encoding: 8bit
X-Virus-Scanned: Maia Mailguard 1.0.1
X-Spam-Status: No, hits=2.883 tagged_above=0 required=5 tests=HTML_30_40,
HTML_IMAGE_ONLY_32, HTML_MESSAGE, RCVD_IN_SORBS_WEB
X-Spam-Level: **
X-Archive-Number: 200610/57
X-Sequence-Number: 20750

--0-696548521-1159971082=:30657
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Pasos :
1.- Primero tienes que ver si solamente un empleado puede estar en varias empresas.
Aqui se formaria una relacion de 1 a muchos.

Si ocurre este caso solo es necesario mandar a la tabla empresa como FK el codigo de la tabla empledo.

2.- Otro caso seria que si varios empleado pueden estar varias empresas entonces tendrias que hacer los siguiente :
Aqui se formaria una relacion de muchos a muchos
Entonces se crea una tabla intermedia

Puedes crear una tabla intermedia entre las dos tablas que ya existen.

Tienes tu tabla Empleado
Tienes tu tabla Empresa

entonces create una tabla Empleado_Empresa donde
los primary key sean el Codigo de la tabla Empleado y del la tabla Empresa.
y quita esos FK de cada tabla.

Puedes buscar informacion sobre normalizacion de base de datos para que lo tengas mas claro.

juanmi <juanmi(at)planalfa(dot)es> escribió: Hola a todos, este es mi primer mensaje a la lista, lo primero gracias por vuestro tiempo.

Mi problema es el siguiente, me acabo de pasar de m*sql a postgres, en debian la version de m*sql no soporta vistas y postgres si, y por un para de razones mas.......

Tanto en M*sql como en Postgres la creacion de FK la hago sin problemas (mas facil en postgres), pero el problema me viene con lo siguiente, os pongo un ejemplo, al crear la tabla empresa esta tabla tiene un campo llamado director (FK de la tabla empleados) y al crear la tabla empleados, esta tabla tiene un campo empresa (FK de la tabla empresa), la creacion de estas dos tablas ya viola las referencias, en M*sql lo solucionaba de la siguiente forma:

SET FOREIGN_KEY_CHECKS = 0;
Creacion de tablas e inserccion de campos
SET FOREIGN_KEY_CHECKS = 1;
¿Como lo hago en postgres?
Muchas gracias por vuestro tiempo ;-)
Saludos.
Juanmi

Henry

---------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
--0-696548521-1159971082=:30657
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Pasos :<br>1.- Primero tienes que ver si solamente un empleado puede estar en varias empresas.<br>Aqui se formaria una relacion de 1 a muchos.<br><br>Si ocurre este caso solo es necesario mandar a la tabla empresa como FK el codigo de la tabla empledo.<br><br>2.- Otro caso seria que si varios empleado pueden estar varias empresas entonces tendrias que hacer los siguiente :<br>Aqui se formaria una relacion de muchos a muchos<br>Entonces se crea una tabla intermedia<br><br>Puedes crear una tabla intermedia entre las dos tablas que ya existen.<br><br>Tienes tu tabla Empleado<br>Tienes tu tabla Empresa<br><br>entonces create una tabla Empleado_Empresa donde<br>los primary key sean el Codigo de la tabla Empleado y del la tabla Empresa.<br>y quita esos FK de cada tabla.<br><br>Puedes buscar informacion sobre normalizacion de base de datos para que lo tengas mas claro.<br><br><b><i>juanmi &lt;juanmi(at)planalfa(dot)es&gt;</i></b> escribió:<blockquote class="replbq" style="border-left:
2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><div><font color="#000000" face="Arial" size="2"> <div><font color="#000000" face="Arial" size="2">Hola a todos, este es mi primer mensaje a la lista, lo primero gracias por vuestro tiempo.</font></div> <div><font face="Arial" size="2"></font>&nbsp;</div> <div><font face="Arial" size="2">Mi problema es el siguiente, me acabo de pasar de m*sql a postgres, en debian la version de m*sql no soporta vistas y postgres si, y por un para de razones mas.......</font></div> <div><font face="Arial" size="2"></font>&nbsp;</div> <div><font face="Arial" size="2">Tanto en M*sql como en Postgres la creacion de FK la hago sin problemas (mas facil en postgres), pero el problema me viene con lo siguiente, os pongo un ejemplo, al crear la tabla empresa esta tabla tiene un campo llamado director (FK de la tabla empleados) y al crear la tabla
empleados, esta tabla tiene un campo empresa (FK de la tabla empresa), la creacion de estas dos tablas ya viola las referencias, e</font><font face="Arial" size="2">n M*sql lo solucionaba de la siguiente forma:</font></div> <div><font face="Arial" size="2"></font>&nbsp;</div> <div><font size="2"> <div>SET FOREIGN_KEY_CHECKS = 0;</div> <div>Creacion de tablas e inserccion de campos</div><font size="2"> <div>SET FOREIGN_KEY_CHECKS = 1;</div> <div><font face="Arial">¿Como lo hago en postgres?</font></div> <div><font face="Arial">Muchas gracias por vuestro tiempo ;-)</font></div> <div><font face="Arial">Saludos.</font></div> <div><font face="Arial">Juanmi</font></div></font></font></div></font></div></blockquote><br><BR><BR><FONT color=#0080ff>Henry <IMG src="http://us.i1.yimg.com/us.yimg.com/i/mesg/tsmileys2/01.gif"></FONT><p>&#32;
<hr size=1><br><font face="Verdana" size="-2">LLama Gratis a cualquier PC del Mundo.<br>Llamadas a fijos y móviles desde 1 céntimo por minuto.<br><a href="http://us.rd.yahoo.com/mail/es/tagline/messenger/*http://es.voice.yahoo.com/">http://es.voice.yahoo.com</a></font>
--0-696548521-1159971082=:30657--

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Gonzalez ( mario__ ) 2006-10-04 14:02:53 Re: Restricciones Foreign Keys
Previous Message juanmi 2006-10-04 08:21:36 Problema Foreign Keys