Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

tablas

Estas en el tema de tablas en el foro de Mysql en Foros del Web. Hola ... estoy creando una base de datos en donde tengo que crear una tabla (articulos) la cual posee 3 claves primarias codt, codsubtp,ref, en ...
  #1 (permalink)  
Antiguo 03/11/2011, 12:02
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 5 meses
Puntos: 0
tablas

Hola...
estoy creando una base de datos en donde tengo que crear una tabla (articulos) la cual posee 3 claves primarias codt, codsubtp,ref, en donde codt, codsubtp codigo nitpserian las foraneas he revisado los ripos de datos y todos estan iguales;sinembargo me sale error

esataestas son las tablas que están involucradas en la de artículos
mysql> describe proveedores;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| nitp | char(10) | NO | PRI | | |
| nombre | varchar(20) | YES | | NULL | |
| telefono | char(10) | YES | | NULL | |
| direccion | varchar(20) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

mysql> describe tproductos;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| codt | char(10) | NO | PRI | | |
| nomtprod | varchar(40) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql> describe subtprod;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| codt | char(10) | NO | PRI | | |
| codsubtp | char(10) | NO | PRI | | |
| nomstp | varchar(30) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> describe medidas;
+--------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| codigo | int(10) | NO | PRI | 0 | |
| medida | char(10) | YES | | NULL | |
+--------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql>
mysql> CREATE TABLE articulos
-> (codt char(10)
,
-> codsubtp char(10)
,
-> refer varchar(50)
,
-> nombre varchar(50)
,
-> prcosto integer
,
-> existencias integer
,
-> codigo int(10) ,
-> nitp char(10)
,
-> primary key (codt, codsubtp, refer)
,
-> foreign key (codt) REFERENCES tproductos (codigo)
,
-> foreign key (codt, codsubtp) REFERENCES subtprod (codt, codsubtp)
,
-> foreign key (nitp) REFERENCES proveedores (nitp)
,
-> foreign key (codigo) REFERENCES medidas (codigo) )
;
ERROR 1005 (HY000): Can't create table 'prueba009.articulos' (errno: 150)
mysql>s son algunas de las tablas y la que debo de crear:
  #2 (permalink)  
Antiguo 03/11/2011, 12:54
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: tablas

por favor ¡necesito ayuda urgente!
  #3 (permalink)  
Antiguo 03/11/2011, 13:11
 
Fecha de Ingreso: junio-2007
Ubicación: Buenos Aires, Argentina
Mensajes: 262
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: tablas

Quizás esto te ayude:

http://cargayjuega.blogspot.com/2009...nt-create.html
__________________
Moebius Digital | La pieza que faltaba
Diseño web | Web hosting
  #4 (permalink)  
Antiguo 03/11/2011, 13:33
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: tablas

Hola Sachis77:

Antes que nada DEBES REVISAR LO QUE ESTÁS TECLEANDO... en este tipo de errores lo más común es que te estés equivocando en los nombres de los campos o en los tipos... No me costó mucho tiempo darme cuenta que tienes esto;

Código:
foreign key (codt) REFERENCES tproductos (codigo)
En la descripción de tu tabla tienes lo siguiente:

Código MySQL:
Ver original
  1. mysql> describe tproductos;
  2. +----------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +----------+-------------+------+-----+---------+-------+
  5. | codt | char(10) | NO | PRI | | |
  6. | nomtprod | varchar(40) | YES | | NULL | |
  7. +----------+-------------+------+-----+---------+-------+
  8. 2 rows in set (0.01 sec)

donde es claro que el campo CODIGO NO EXISTE EN LA TABLA.

Tu sentencia para crear tu tabla debería quedar más o menos así.

Código MySQL:
Ver original
  1. mysql> CREATE TABLE articulos
  2.     -> (codt CHAR(10),
  3.     -> codsubtp CHAR(10),
  4.     -> refer VARCHAR(50),
  5.     -> nombre VARCHAR(50),
  6.     -> prcosto INTEGER,
  7.     -> existencias INTEGER,
  8.     -> codigo INT(10),
  9.     -> nitp CHAR(10),
  10.     -> PRIMARY KEY (codt, codsubtp, refer),
  11.     -> FOREIGN KEY (codt) REFERENCES tproductos (codt),
  12.     -> FOREIGN KEY (codt, codsubtp) REFERENCES subtprod (codt, codsubtp),
  13.     -> FOREIGN KEY (nitp) REFERENCES proveedores (nitp),
  14.     -> FOREIGN KEY (codigo) REFERENCES medidas (codigo));
  15. Query OK, 0 rows affected (0.20 sec)

Saludos
Leo.
  #5 (permalink)  
Antiguo 03/11/2011, 14:00
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: tablas

Leo muchas gracias mira me puedes decir otra razon del error es que la verdad el error que me encontraste fue por tratar de quitar y poner datos que me descuide tratando de buscar una solucion, mira que antes la habia hecho asi:

create table articulos(
codt char(10),
codsubtp char(10),
ref varchar(50),
nombre varchar(50),
vlr int(15),
existencias int(15),

nitp char(10),
codigo int(10),
primary key (codt, codsubtp, ref),

foreign key (codt) references tproductos(codt),

foreign key (codt, codsubtp)references subtiprod(codt,codsubtp),
foreign key (nitp) references proveedores(nitp),
foreign key (codigo)references medidas(codigo)
) TYPE=InnoDB;
1005 (HY000): Can't create table 'prueba009.articulos' (errno: 150)


enronces que seria el error??
  #6 (permalink)  
Antiguo 03/11/2011, 14:00
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: tablas

los espacios ??
  #7 (permalink)  
Antiguo 03/11/2011, 14:07
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: tablas

leo que pena con tigo es verdad estaba un poco elevada, si ya mire desde la primera vez que intente guardar la tabla y si tengo el mismo error , pense que en el principio no lo habia tenido.
y en la que te acabo de enviar tengo un escritoque hice tratando de cambiar a InnoDB, y por eso me sale en error, la verdad leo soy muy primipara en este campo.

MUCHAS GRACIAAASSS. :)
  #8 (permalink)  
Antiguo 03/11/2011, 14:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: tablas

1) Las FK deben ser del mismo tipo, y mismo rango que la PK de origen.
2) SI defines una FK en una tabla, la tabla origen debe ser creada antes.
3) Si tienes datos de prueba, pueden generar errores de integridad. Vacía todas las tablas.
4) No uses espacios en los nombres. Es una mala práctica que genera errores imperceptibles. Usa la raya (_) para separar las siglas entre si de un mismo nombre.
5) Si una PK se define como de más de un campo, la FK debe tener la misma cantidad de campos, en el mismo orden y del mismo tipo.
6) Una FK de una PK de multiple campo se define como una sola de multiple campo, y no por separado cada uno.

Hay mas....
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/11/2011 a las 19:28
  #9 (permalink)  
Antiguo 03/11/2011, 19:27
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: tablas

muchas gracias tambien a ti gnzoloyo por tu aporte lo tendre en cuenta

Etiquetas: sql, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:39.