Foros del Web » Programando para Internet » PHP »

diseño conceptual de una base de datos

Estas en el tema de diseño conceptual de una base de datos en el foro de PHP en Foros del Web. hola muy buenas a tod@s en primer lugar quería darles las gracias a todos los colegas que se dedican a resolver parte de nuestras dudas. ...
  #1 (permalink)  
Antiguo 23/01/2014, 16:19
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 3 meses
Puntos: 0
diseño conceptual de una base de datos

hola muy buenas a tod@s
en primer lugar quería darles las gracias a todos los colegas que se dedican a resolver parte de nuestras dudas.
mi duda tengo 3 tablas estoy intentando relacionar las 3 lo hize de la siguiente manera:
tabla clientes que tiene los siguientes datos:
-customerid(PK).(auto_increment)
-dni
-name
-address.
-city.
-state.
-zip.
-country.

tabla orders:
-orderid(PK).auto_increment
-ship_nif;
-date.
-order_status.
-ship_name.
-ship_address.
-ship_city.
-ship_state.
-ship_zip.
-ship_country

tabla order_items.

orderid.(Pk) auto_increment
item_price.
quantity


mi intención que es cada cliente le registro su pedido y su detalle que complementa la información del pedido pero está mal porque si un cliente tiene más de un pedido no puedo guardarlo correctamente.

agradeciendo de antemano sobre vuestra sugerencia
les saludo atentamente.
  #2 (permalink)  
Antiguo 25/01/2014, 12:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: diseño conceptual de una base de datos

clientes
-customerid(PK).(auto_increment)
-dni
-name
-address.
-city.
-state.
-zip.
-country.

orders
-orderid(PK).auto_increment
-customerid FK referencia a clientes
-ship_nif;
-date.
-order_status.
-ship_name.
-ship_address.
-ship_city.
-ship_state.
-ship_zip.
-ship_country


order_items

orderItemId.(Pk) auto_increment
orderid Fk referencia a orders
idProducto Fk referencia a productos
item_price
quantity

productos
idProducto (Pk) auto_increment
....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 26/01/2014, 08:32
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: diseño conceptual de una base de datos

hola quimf
gracias por su propuesta lo que pasa la duda que tengo si orderid es un campo que se autoincrementa que pasa si un determinado cliente tiene mas de un articulo referenciado se va incrementando aunque estoy referenciando al mismo cliente
no se si me explico?
  #4 (permalink)  
Antiguo 26/01/2014, 13:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: diseño conceptual de una base de datos

orders
-orderid(PK).auto_increment
-customerid FK referencia a clientes

Se auto incrementa con cada nueva orden.... pero no afecta a las ordenes anteriores....

Al inserta la primera orden automáticamente tendrá orderid=1 la segunda el 2 y así sucesivamente..... en realidad lo que hace es asignar una unidad más a la última asignada.... luego si eliminas registros no afecta al nuevo registro que vaya a entrar siempre lo hará con una unidad más que el último entrado se haya borrado o no.

Que un cliente tenga más de una orden NO trae ningún problema, en mi modelo, el cliente 1 (customerid=1) puede tener la orden orderid=1 la 1000, la 2 y la 400.... en el tuyo seria otra cosa.

orderid customerid
1.............1
2.............5
................
399..........3
400..........1
................
1000........1
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 01/02/2014, 03:23
 
Fecha de Ingreso: enero-2008
Mensajes: 88
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: diseño conceptual de una base de datos

hola quimf
gracias por tu aclaración lo estoy intentando hacer las inserciones pero me estoy encontrándose con las siguientes errores Resource id #3.
pues mi intención una vez que hago la inserción de los datos de los clientes
saco el id de cada cliente para insertarlo en la tabla de pedidos y hacer lo mismo con detalles pedido pero sacando el id de cada pedido.
les adjunto una copia de lo llevo hecho.
Código PHP:
 //el campo que dejé vacío es un campo que auto_incrementa que es id de cada   
  
cliente
 $query 
="insert into customers values
            ('','$dni','$name','$address','$city','$state','$zip','$country')"
;

   
$result mysql_query($query,$db);
   if(!
$result)
   {
      die( 
' Error '.mysql_error() );
   }
   
$date date("Y-m-d");
   
//de la inserción anterior quiero saca el id del cliente hago consulta con el dni
   //pero me sale el error de  Resourceid#3. 
  //si tenéis otra idea para sacar el id del cliente estará agradecido
   
$sql="select customerid from customers where dni='$dni'";
   
$r=mysql_query($sql,$db);
   
   if(!
$r)
   {
      die( 
' Error '.mysql_error() );
   }
   
//mi intención es insertar el id del cliente en esta consulta
   
$query "insert into orders values
            ('','$id','$ship_nif','$date', 'PARTIAL', '$ship_name',
             '$ship_address','$ship_city','$ship_state','$ship_zip',
              '$ship_country')"
;

   
$res=mysql_query($query,$db);
   if(!
$res)
     die(
'Error'.mysql_error());

   
// por último quiero insertar los detalles del pedido del mismo modo quiero sacar 
   // el id del pedido.
   // la variable $carro tiene todos los datos de la compra.
  // del mismo quiero sacar el id del pedido para hacer la inserción del detalle del   pedido
   
foreach($carro as $k => $v)
          {
                  
$isbn=$v['isbn'];
                  
$item_price=$v['price'];
                  
$quantity=$v['cantidad'];
        
                  
$query1="insert into order_items values
                          (' ',,'$isbn', '$item_price','$quantity')"
;
                  
$result1 mysql_query($query1,$db);
                  if(!
$result1)
                  {
                    die(
'Error'.mysql_error());
                  }
                  else
                  {
                      
session_destroy();
                     
                      echo 
"<br><br>";
                      echo 
"Gracias por confiar en nosotros. Su pedido ha sido tramitado con éxito";
                  }

           } 
estaré muy agradecido si tenéis otra solución óptima que la mía

muchisima gracias de antemano

gracias por vuestra aportación
  #6 (permalink)  
Antiguo 01/02/2014, 04:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: diseño conceptual de una base de datos

La última pregunta es off tópic.
Movido a PHP
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 01/02/2014, 04:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: diseño conceptual de una base de datos

24.2.13.3. Cómo obtener el ID único del último registro insertado
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: diseño, mysql, registro, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:13.