Límite de campos que forman parte de la PK de una tabla

2 replies [Último envío]
Offline
Joined: 22/08/2012
Puntos: 4

Hola,

 

queremos crear una serie de tablas de hechos en las que las PK están formadas por 21 o 23 campos. Nos avisan que puede que Oracle 11g no soporte tantos campos como parte de una PK. ¿Alguien sabe cuál es el límite de campos que soporta una PK en Oracle 11?

 

Muchas gracias

Offline
Joined: 22/08/2012
Puntos: 4

Bueno, he estado investigando y al parecer Oracle tiene un límite de 32 columnas para una PK. No se si esto se puede aplicar también a los índices.

Imagen de carlos
Offline
Joined: 28/12/2005
Puntos: 1210

Supongo que para los índices el límite debe ser el mismo.

De todas maneras, a mi me parecen demasiados campos para claves primarias de una tabla de hechos. Seguro que necesitáis 23 campos para identificar un registro único? Realmente se van a lanzar habitualmente consultas contra esas tablas de hechos que localicen registros por más de 23 campos?

En cualquier caso tendréis que estudiar si esos índices van a ser realmente útiles, porque para la base de datos va a ser costoso mantenerlos.

 

n/d

Contenido relacionado

  •  Hola a todos!

     

    Tengo un problemilla con unas tablas que nose como solucionar. Tengo una tabla llamada SMSC con sus campos (id, type) y quiero crear una clave foranea que dependiendo del dato que se introduzca, la información vaya a una tabla u otra. Alguien sabe como solucionar esto?

     

    gracias de antemano. 

  •  Hola

    quisiera saber si alguien conoce de aulgun script, para listar las descripciones de los campos de la tabla en oracle y poder hacer una documentación

    

    select * from all_tab_columns where table_name = 'nombre_tabla'  con esto no obtengo las descripciones

     

     

     

     

    saludos

     

     

  • Para los que estamos acostumbrados a utilizar el operador decode del SQL de Oracle sorprende bastante que no esté incluída en la sintaxis que se puede utilizar dentro del generador de expresiones de Oracle Warehouse Builder.

    Pero todo tiene solución. Si para un campo se quiere seleccionar un valor en función del contenido de otro o más campos, se puede utilizar el objeto EXPRESSION, conectar en la entrada todos los campos implicados, y en la expresión del campo de salida olvidarnos del DECODE y utilizar en su lugar un CASE WHEN ..., que sí está soportado.

    Por ejemplo:
    CASE WHEN entrada1 = 0 THEN 'Falso'
            WHEN entrada2 = 1 THEN 'Cierto'
            ELSE 'Indefinido'
    END

  • En Oracle, para crear fácilmente una tabla a partir de una consulta SQL se puede utilizar la siguiente sentencia:

    CREATE TABLE NuevaTabla AS (SELECT * FROM OtraTabla);

    Este tipo de sentencia se conoce como Create Table As Select (CTAS). Es muy útil para hacer pruebas rápidas con datos, para crear tablas de muchos campos que se parecen mucho a otras, o para 'materializar' una vista creando una tabla a partir de la select sobre la vista.

     

    El caso es que en SQL Server también se puede hacer lo mismo, pero la sintaxis cambia bastante, y para el que esté más acostumbrado a la de Oracle puede serle útil saber que con SQL Server, para crear una tabla a partir de una sentencia SQL se puede utilizar una instrucción como esta:

    SELECT * INTO NuevaTabla FROM OtraTabla;

     

  • El término Dimensión Degenerada, hace referencia a un campo que será utilizado como criterio de análisis y que es almacenado en la tabla de hechos.

    Esto sucede cuando un campo que se utilizará como criterio de análisis posee el mismo nivel de granularidad que los datos de la tabla de hechos, y que por lo tanto no se pueden realizar agrupaciones o sumarizaciones a través de este campo. Los "números de orden", "números de ticket", "números de transacción", etc, son algunos ejemplos de dimensiones degeneradas...

 

 

 

Gestion del Conocimiento    |    Business Intelligence y Analítica    |     Bases de Datos    |      ERP     |      CRM      |     Tendencias tecnológicas