🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #11142

Re: Cómo relacionar tablas en mysql?

#11142
From: F. Serrano
Date: Wed, 02 Jan 2002 01:08
85 lines
4133 bytes
Zahori wrote:
> 

Ante todo gracias, aunque ��ste es el grupo adecuado para esta
consulta? (viene de ecol.misc).

>         Lo que tienes que hacer es incluir el campo que es clave de
> una tabla en la otra (u otras) con la(s) que este relacionada.

Si, eso lo tengo claro, lo que no tengo claro es c�mo se hace.

> 
>         P.e., si tienes una tabla de libros y otra de autores, tendras
> que incluir en la tabla de libros un campo con el mismo tipo de datos
> y tamanno que el que es clave en la tabla de autores (el nombre no
> tiene por que coincidir).  A este campo asi migrado se le llama clave
> foranea.

Sacado del manual de mysgl:

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

1.4.4.5 Foreign Keys

Note that foreign keys in SQL are not used to join tables, but are
used mostly for checking referential integrity (foreign key
constraints).
If you want to get results from multiple tables from a SELECT
statement, you do this by joining tables: 

SELECT * from table1,table2 where table1.id = table2.id;

The FOREIGN KEY syntax in MySQL exists only for compatibility with
other SQL vendors' CREATE TABLE commands; it doesn't do anything. 

...

"1.4.4.6 Reasons NOT to Use Foreign Keys constraints"

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

Es dedir, que no debes usar claves for�neas ????, y solo debes
relacionar la forma de mostrar los datos, como indica el ejemplo??. �o
se piede, pero no sirve de nada? 


>         Luego, si quieres explicitar mas esa relacion y hacer que se
> cumplan las condiciones de integridad, en la tabla de libros tendrias
> que annadir una clausula para indicarle que el campo cod_autor (o como
> lo hayas llamado) esta relacionado con el campo Codigo de la tabla
> Autores, aunque no se si en MySQL se seguira la sintaxis estandar.

Te refieres a:

--------------------------------------
3.5.6 Using Foreign Keys

....

CREATE TABLE shirts (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
    color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
    owner SMALLINT UNSIGNED NOT NULL REFERENCES persons,
    PRIMARY KEY (id)
);

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

En este ejemplo, �"owner" es la clave for�nea "id" de la tabla
"persons" ?? ��si hago esto, se podr� actualizar (no solo mostrar)
campos comunes de tablas relacionadas con alg�n front-end, o hay que
aplicarse autodisciplina par que esto no deba hacerse? �Qu�
ventajas-inconvientes tiene 
usar la clave for�nea o no usarla en ese caso? (no tengo mucho
problema con el ingl�s, pero m�s que verde, estoy amarillo-lim�n en
este tema, as� que pido disculpas por lo "lamer" que puedan ser estas
cuestiones).


Saludos
-- 
F. Serrano  ��� Linux registered user 171493 ���
No permitas que tus superiores sepan que eres mejor que ellos.-- Ley
de inferioridad superior.
Technical Details
Message-ID: <3C325D7B.85FBC91A@escomposlinux.org>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!fu-berlin.de!uni-berlin.de!193-152-224-17.uc.nombres.ttd.ES!not-for-mail
References: <3C2FEDEE.1FBA9132@escomposlinux.org> <evi43ustek928ldqis3o5pbpnp6idekga5@4ax.com>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,88c74ff71b13f933
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2002-01-01 21:14:21 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!fu-berlin.de!uni-berlin.de!193-152-224-17.uc.nombres.ttd.ES!not-for-mail
From: "F. Serrano" <fserrano@escomposlinux.org>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Cómo relacionar tablas en mysql?
Date: Wed, 02 Jan 2002 02:08:11 +0100
Lines: 85
Message-ID: <3C325D7B.85FBC91A@escomposlinux.org>
References: <3C2FEDEE.1FBA9132@escomposlinux.org> <evi43ustek928ldqis3o5pbpnp6idekga5@4ax.com>
Reply-To: fraserraNOSPAM@terra.es
NNTP-Posting-Host: 193-152-224-17.uc.nombres.ttd.es (193.152.224.17)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: fu-berlin.de 1009948458 24267864 193.152.224.17 (16 [55625])
X-Orig-Path: 127.0.0.1!nobody
X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.4.16-k6 i586)
X-Accept-Language: es, en