FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema creando Clave Primaria: 'too may keys defined'
Estoy creando una DB con EMS Interbase/Firebird Manager 3.3.0.2 con Firebird 1.5.3 y al definir una clave primaria me está dando el error 'too many keys defined'. La clave primaria es compuesta. Está formada por 17 campos y al intentar crear la clave me da el error al intentar crear el índice para la clave primaria.
Este es el índice que debe crear, que es a su vez la clave primaria: CREATE UNIQUE INDEX PK_INSTALACIONES_CANALES_PROPOR ON INSTALACIONES_CANALES_PROPOR (ID_EMPRESA, ID_AGENTE, ID_CLIENTE, ID_EMPRESA_ESTABLECIMIENTO, ID_AGENTE_ESTABLECIMIENTO, ID_ESTABLECIMIENTO, ID_EMPRESA_MAQUINA, ID_AGENTE_MAQUINA, ID_MAQUINA, ID_INSTALACION, ID_CANAL, ID_EMPRESA_ARTICULO, ID_AGENTE_ARTICULO, ID_ARTICULO, ID_EMPRESA_ARTICULO_INCLUIDO, ID_AGENTE_ARTICULO_INCLUIDO, ID_ARTICULO_INCLUIDO); Son 17 campos y por lo que veo firebird admite 16 campos. Alguien me puede ayudar? Gracias de antemano Un Saludo |
#2
|
||||
|
||||
(Clave primaria = 17 campos) => Creo que algo falla en el diseño.
Sustituye claves compuestas de otras tablas por claves simples (y las compuestas las conviertes en índices únicos); Eso hará, a su vez, que las claves de las tablas relacionadas también sean más cortas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Las claves deben ser compuestas en las tablas de las que cuelga. No sé si te he entendido bien, pero te refieres a que quite los campos de la clave primaria que no son identificadores únicos de las tablas de las que depende y los añada con índice y deje sólo el campo autogenerado como clave principal?
|
#4
|
||||
|
||||
Te explico lo que quiero decir con un ejemplo:
(1) Imagina una tabla A que tiene como clave primaria: Nombre+Ap1+Ap2+DNI+FechaNacimiento (2) Dependiendo de las relaciones que tenga ésta tabla conotras, te puedes encontrar otra tabla B en cuya clave primaria estén incluídos estos 5 campos. La idea es generar una clave primaria autonumérica idPersona y crear un índice único con estos 5 campos. De forma que las tabla B tendrá en su clave primaria sólo el campo IdPersona en lugar de los 5 campos. Cuando te haga falta esa información la buscas en la tabla A a partir del IdPersona.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
Ok. Así es cómo lo hacía yo antes, pero he estado currando un año en una empresa y el diseño lo hacían tal como te he comentado. La tabla que tiene los 17 campos sólo es una, cambio la estructura de la DB desde las entidades fuertes o lo hago sólo de la que depende esta solamente?
Muchas gracias por tu ayuda Neftalí. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
duda clave primaria en Paradox | mak8888 | Tablas planas | 1 | 26-06-2005 21:48:57 |
Ayuda Con Clave Primaria | pablo2244 | MySQL | 4 | 30-05-2005 21:49:01 |
cambiar la clave primaria con SQL | User_Baja_2 | SQL | 8 | 18-06-2004 08:41:31 |
Cambiar clave primaria | pinoxito | Firebird e Interbase | 7 | 13-01-2004 21:51:26 |
cambiar una clave primaria | User_Baja_2 | SQL | 3 | 06-10-2003 18:03:38 |
|