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 Buscar Temas de Hoy Marcar Foros Como Leídos

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.293
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.293
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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 23:20:32.


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