none
como se compone una clave comuesta ? RRS feed

  • Pregunta

  • TENGO MI ENTIDAD LA CUAL TIENE UNA CLAVE COMPUESTA DE 3 CAMPOS... entonces como hago la asignacion al modelo para devolverla luego al controlador .

    ejemplo  para 1 campo clave de la entidad ...

    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.nombre)
            </td>
            <td>
                @Html.ActionLink("EDITAR", "Edit", new { id=item.codcalle }) |
          
                @Html.ActionLink("BORRAR", "Delete", new { id=item.codcalle })
            </td>
        </tr>
    } 

    en este ejemplo se ve claramente como CODIGO_CALLE es el campo clave que identificara el ejemplar en el controlador.

    pero como lo hago para un conjunto de ejemplares con VECTOR ?!!! en una seleccion de que ejemplares se modificaran y cuales no ?!

    @Html.ActionLink("BORRAR", "Delete", new { id=item---> CAMPO CLAVE 1...CAMPO CLAVE2... CAMPO CLAVE 2 }

    sábado, 13 de octubre de 2012 17:12

Todas las respuestas

  • Pues no sé qué tan adelantado estará su proyecto, pero le diré de antemano que lo mejor es siempre tener un ID único como clave primaria.  Pero entiendo las motivaciones que existen para usar claves compuestas.  Justo en mi proyecto actual tengo una tabla de 3 millones de registros + 1 millón por mes un índice único de 3 campos que es el que uso más frecuentemente.  Inicialmente pensé en hacerlo clave primaria pero al final no lo hice justamente porque es más complicado en algunas cosas.

    En resumen, le recomiendo lo siguiente.  Es lo que actualmente hago:  Una clave primaria autonumérica (IDENTITY) NO agrupada (clustered) y un índice único agrupado compuesto de mis 3 campos.  Así puedo referirme a un registro usando únicamente un ID numérico pero sé que puedo obtener cualquiera de ellos buscando por la clave compuesta en un instante pues es el índice agrupado.

    Create Table dbo.Tabla
    (
        ID int Not Null Identity(1, 1) Constraint PK_dbo_Tabla Primary Key NonClustered
        , Campo1 int Not Null
        , Campo2 int Not Null
        , Campo3 int Not Null
        , ... --Otros campos según corresponda.
        --Y ahora sí:  El índice único agrupado:
        , Constraint UXC_dbo_Tabla Unique Clustered
        (
            Campo1 Asc
            , Campo2 Asc
            , Campo3 Asc
        )
    );
    


    Jose R. MCP
    Code Samples

    sábado, 13 de octubre de 2012 18:43