Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/04/2010, 20:11
Bier
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 10 meses
Puntos: 21
Respuesta: Definir llave primaria con 4 campos

Cita:
Iniciado por Marsh_Spider Ver Mensaje
No puedes tener 4 llaves primarias en una misma tabla, sólo debe haber una llave primaria, y varias foráneas, que podrían ser llaves primarias de otras tres tablas diferentes.

Es decir que por cada tabla hay sólo una llave primaria y si deseas conectar una tabla con otras, usas la llave foránea para usar también sus llaves primarias.

Recuerda que en la llave primaria no puede haber otro registro que tenga el mismo valor de la llave primaria ni valores repetidos. Es Unica.

Ejemplo:

...Continúa.
Estimado Marsh_Spider,
Gracias por tus comentarios.
  • Tengo una tabla en la cual almaceno las ventas. ($tm ="S")
  • Varios usuarios que almacenan sus ventas en esta misma tabla. (Sucursal)
  • Cada usuario lleva un folio consecutivo para cada venta. (Folio)
  • Además, cada usuario registra entradas de producto. ($tm ="E")

mi tabla tendría algo así como los siguientes campos:
  • $sucursal char(4); # Sucursal
  • $fecha date; # fecha
  • $tipodemovimiento char(1); # Tipo de movimiento (E o S)
  • $folio char(6); # Folio del movimiento
  • $articulo char(9); # Código del artículo
  • $cantidad char(4); # Sucursal

El contenido de la tabla sería algo (conforme se capturó la información):
1) 0001 / 2010-03-11 / E / 000001 / K1 / 10
2) 0001 / 2010-03-15 / S / 000001 / K1 / 1
3) 0002 / 2010-04-20 / E / 000001 / K1 / 15
4) 0001 / 2010-04-21 / E / 000002 / K2 / 2
5) 0001 / 2010-04-22 / E / 000001 / K2 / 10
6) 0001 / 2010-04-22 / S / 000003 / K1 / 2
7) 0002 / 2010-04-23 / S / 000002 / K1 / 5
(Para este ejemplo he numerado cada renglón del lado izquierdo)

Deseo generar una consulta de estos registros ordenados por sucursal y en cada sucursal ordenado por Tipo de Movimiento, y cada tipo de movimiento ordenado por artículo, por lo que requiero obtener:

En base a ordenar esta tabla, deberé obtener el siguiente resultado:
1) 0001 / 2010-03-11 / E / 000001 / K1 / 10
6) 0001 / 2010-04-22 / S / 000003 / K1 / 2
2) 0001 / 2010-03-15 / S / 000001 / K1 / 1
4) 0001 / 2010-04-21 / E / 000002 / K2 / 2
5) 0001 / 2010-04-22 / E / 000001 / K2 / 10
3) 0002 / 2010-04-20 / E / 000001 / K1 / 15
7) 0002 / 2010-04-23 / S / 000002 / K1 / 5

Como se puede apreciar, el orden de los renglones ha cambiado.

Yo programo en otros lenguajes, donde solo me basta definir una llave "compuesta", la cual contiene el orden deseado de la llave, para la cual se especifican los campos que debe considerar, algo así como:

$LLAVE = $sucursal . $TipoDeMovimiento . $Articulo;

Y con esta llave puedo incluso verificar que no sea duplicada.

Espero haberme explicado.
Gracias

Última edición por Bier; 02/04/2010 a las 21:59 Razón: Acomodo de renglones