🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: C�mo relacionar tablas en mysql?

#11143
From: Zahori
Date: Thu, 03 Jan 2002 00:44
76 lines
4248 bytes
El Wed, 02 Jan 2002 02:08:11 +0100, "F. Serrano"
<fserrano@escomposlinux.org> escribi�:

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

	Pues no se, yo creo que viene aqui mejor, aunque todo depende
de como se vea.

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

	Pues por lo que parece, MySQL no incluye el control de la
integridad referencial, asi que, como dice ahi, lo puedes poner pero
no va a hacer nada.  (Y es que MySQL por lo visto es mas rapida que
otras BBDD, pero tiene menos caracteristicas avanzadas que otras como
Interbase o Postgres).

>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? 

	Hombre, la integridad referencial es bastante importante para
que los datos sean coherentes.  En el ejemplo de los libros y los
autores, con incluir en la tabla de libros un campo que se refiera al
codigo del autor ya puedes relacionar las dos tablas y hacer consultas
que obtengan los datos relacionados de ambas.  Pero si no esta
definida la integridad referencial, se podria agregar un libro nuevo
(o modificar uno ya existente) en el que el campo del cod. del autor
no existiera en la tabla de autores, con lo que se produciria una
incoherencia.  Igualmente, podria borrarse un registro de la tabla de
autores dejando "huerfanos" a todos los libros relacionados, que
quedarian con un codigo de autor inexistente.

	Si definimos el codigo del autor como una clave foranea en la
tabla de libros, esas situaciones no podran ocurrir porque dara un
error antes de efectuar una operacion que produzca inconsistencias.

	La sintaxis estandar seria algo asi (para una tabla ya creada)
como:

alter table Libros
add constraint FK_Autor Foreign Key (cod_autor) references Autores
(codigo) on update cascade;


>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" ??
	
	Eso parece.

> ��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? 

	No entiendo a que te refieres exactamente, pero si es a
actualizar los dos registros relacionados de ambas tablas a la vez,
podrias hacer un Update para cada una (aunque normalmente se suelen
modificar las tablas en formularios separados).

	En fin, espero haberte aclarado un poco.  Si tienes alguna
duda mas, a preguntar se ha dicho.


saludos,
Zahor�

- Por la libertad en internet: di NO a la LSSI -
Technical Details
Message-ID: <u9973uco7lg4dfhi79pp3u6iamnc84opvo@4ax.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!feeder.qis.net!btnet-peer!btnet!newsfeed.bt.es!news.bt.es!not-for-mail
References: <3C2FEDEE.1FBA9132@escomposlinux.org> <evi43ustek928ldqis3o5pbpnp6idekga5@4ax.com> <3C325D7B.85FBC91A@escomposlinux.org>

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-02 10:46: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!feeder.qis.net!btnet-peer!btnet!newsfeed.bt.es!news.bt.es!not-for-mail
From: Zahori <jolarcos@siritinga.r3>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: C�mo relacionar tablas en mysql?
Date: Wed, 02 Jan 2002 19:44:43 -0500
Organization: Siritinga
Lines: 76
Message-ID: <u9973uco7lg4dfhi79pp3u6iamnc84opvo@4ax.com>
References: <3C2FEDEE.1FBA9132@escomposlinux.org> <evi43ustek928ldqis3o5pbpnp6idekga5@4ax.com> <3C325D7B.85FBC91A@escomposlinux.org>
NNTP-Posting-Host: 212.79.128.146
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: titan.bt.es 1009996549 21537 212.79.128.146 (2 Jan 2002 18:35:49 GMT)
X-Complaints-To: abuse@bt.es
NNTP-Posting-Date: 2 Jan 2002 18:35:49 GMT
X-Newsreader: Forte Agent 1.8/32.548
Cache-Post-Path: seux119!unknown@cliente-213227001014.cm128.manpc.supercable.es
X-Cache: nntpcache 2.4.0b5 (see http://www.nntpcache.org/)