none
Es buena práctica tener una llave primaria en una tabla detalle ? RRS feed

  • Pregunta

  • Saludos

    Para ejemplificar un poco mejor mi pregunta, supogamos que tengo una tabla de pedidos y otra con el detalle de cada item relacionado a este pedido. Entonces:

    - Mi tabla [Pedidos] tiene [PedidoId], [fecha], etc, etc

    - Mi tabla [DetallePedidos] tiene referencia a [PedidoId] y tiene un campo [línea] para identificar el número de cada línea (1, 2, 3, etc).

    El hecho de que la tabla [DetallePedido] no tenga una llave primaria [DetallePedidoId] afecta en algo ? He visto muchos ejemplos de bases de datos que si incluyen dicha columna, pero a menos que sea un beneficio a nivel de rendimiento, no tengo idea por que debe crearse

    Saludos y gracias

    lunes, 3 de agosto de 2020 0:46

Respuestas

Todas las respuestas

  • Hola Erick

    Me parece que es la tabla Pedidos la que tiene que tener la FK a DetallePedidos, y, obviamente, por eso, la tabla detalle debe tener PK.

    Además, es buena práctica poner PK a todas las tablas.

    Saludos

    Pablo

    lunes, 3 de agosto de 2020 0:56
  • Hola Erick Salazar:

    Si es un beneficio a nivel de rendimiento. Cuando tu creas una tabla que no tiene clave primaria (heap), se anotan los datos sin ningún tipo de orden o criterio. Por tanto cuando tengas que buscar cualquier dato, se va a tener que recorrer la tabla entera para encontrarlo. E incluso a nivel de bloqueos.

    Ojo eso no quiere decir que tengas que tener una clave ajena. Puedes tener como primary key (pedidoid, linea).

    Claves primarias naturales vs artificiales

    https://blogs.solidq.com/es/sql-server/claves-naturales-vs-artificiales/


    • Marcado como respuesta Erick Salazar lunes, 3 de agosto de 2020 15:02
    lunes, 3 de agosto de 2020 4:53
  • Hola, veo que ya tienes una respuesta, si tienes alguna duda nueva. crea un hilo en MSDN!

    Saludos

    miércoles, 12 de agosto de 2020 13:29
    Moderador