Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-05-2006
amkalzada amkalzada is offline
Miembro
 
Registrado: may 2006
Posts: 11
Poder: 0
amkalzada Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 11-05-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.284
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
(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.
Responder Con Cita
  #3  
Antiguo 11-05-2006
amkalzada amkalzada is offline
Miembro
 
Registrado: may 2006
Posts: 11
Poder: 0
amkalzada Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 11-05-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.284
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #5  
Antiguo 11-05-2006
amkalzada amkalzada is offline
Miembro
 
Registrado: may 2006
Posts: 11
Poder: 0
amkalzada Va por buen camino
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í.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 14:55:07.


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
Copyright 1996-2007 Club Delphi