Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Se puede hacer llaves compuestas en mysql.... (https://www.clubdelphi.com/foros/showthread.php?t=25998)

uper 10-10-2005 22:58:44

Se puede hacer llaves compuestas en mysql....
 
saludos a todos.

Estoy analizando como puedo generar el script para la base de datos en mysql, dispongo de la version 4.0.15 y tengo alguna dudas para hacer las referencias entres varias tablas, sobre todo en las tablas maestro detalle, tome un ejemplo de la pagina de mysql en donde muestran que hay que crear indices a los que van a referenciar con otras tablas pero observe que tambien usan el concepto de Restrict.

Segun lo entendido que esta en ingles es para hacer mas fuerte la referencia o que se refiere ?

Tengo mi script en interbase con varias tablas, y otras tablas maestro - detalle en donde tengo llaves compuestas, con Mysql puedo hacer lo mismo !

es decir:::
Maestro:
Mat_id Mat_fecha Mat_Total
1 12/05/05
2 12/05/05

detalle:
Det_id Det_renglon Det_articulo det_Precio
1 1 44 0.45
1 2 8 1.25
1 3 22 2.25

me podrian indicar como generar llaves compuestas en mysql, ?

gracias.

lucasarts_18 11-10-2005 19:56:15

Hola.

Aquí te dejo un ejemplo..

Código SQL [-]
 CREATE TABLE cliente
(
    id_cliente INT NOT NULL,
    nombre VARCHAR(30),
    PRIMARY KEY (id_cliente)
) TYPE = INNODB;

CREATE TABLE venta 
(
    id_factura INT NOT NULL,
    id_cliente INT NOT NULL,
    cantidad   INT,
    PRIMARY KEY(id_factura),
    INDEX (id_cliente),
    FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente) 
) TYPE = INNODB;

me imagino que llamas claves compuestas a lo que yo conozco como claves foraneas...

uper 11-10-2005 20:34:51

Bueno en interbase podemos crear llaves foraneas para las tablas de Maestro - Detalle, en donde la llave primaria de la tabla maestra es un campo unico por ejemplo Fac_id Integer Not Null, y para el detalle tengo dos campos como llaves primarias ID_detalle, ID_renglon y posterior mente le asigno una llave foranea a ID_detalle:

Alter Table Detalle add contraint Ref_detalle FOREIGN KEY(Id_detalle) REFERENCES factura(Fac_id) ON UPDATE CASCADE ON DELETE CASCADE;

entonces en mysql se puede lograr esto, ya que mi campo Id_renglon es para llevar un consecutivo de los movimentos que se vayan afectando.

Es decir que ocupo estas llaves compuestas solo cuando usos tablas maestro detalle como en los casos tipicos de factura-detalle o cxc y historialCxc, etc
Pero de igual manera uso referencia a otras tablas para obtener algun dato que esta relacionado, es lo que me refiero en mysql se puede lograr ?
Gracias

lucasarts_18 11-10-2005 22:26:37

Cita:

Empezado por uper
Pero de igual manera uso referencia a otras tablas para obtener algun dato que esta relacionado, es lo que me refiero en mysql se puede lograr ?

Si te refieres a relacionar tablas (eso es lo que entiendo yo sobre tú explicación), claro que se puede, como en cualquier base de dato relacional..


La franja horaria es GMT +2. Ahora son las 19:01:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi