Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/07/2011, 06:12
Avatar de vgonga1986
vgonga1986
 
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Campos a tabla mysql por php

Buenas, un buen diseño de base de datos te puede ayudar mucho a la hora de simplificar el código que tire de la misma, ya sea PHP o el que sea. Insisto mucho en esto, pero es que me he dedicado casi 3 años a bases de datos y me viene de vuelta ya. Te recomiendo encarecidamente que eches un vistazo a algún manual de diseño de bases de datos, porque veo muchos errores. Te comento:
1. No tienes claves primarias en las tablas, siempre es bueno poner un autonumérico como clave:
Código:
CREATE TABLE Cliente (
	id_cliente integer auto_increment,
	name varchar(20) not null,
	rut varchar(20),
	direccion text,
	PRIMARY KEY(id_cliente)
);
2. La tabla factura la veo demasiado general, no has dado muchos datos, pero deduzco que lo que guardas es para cada concepto que incluyas en la factura la cantidad, el precio de una unidad y la descripción del concepto. Esta tabla es demasiado amplia, deberías separarla al menos en un par de tablas:
Código:
CREATE TABLE Factura (
	id_factura integer auto_increment,
	//otros datos de la factura: fecha, cliente...
	PRIMARY KEY(id_factura)
);

CREATE TABLE Concepto (
	id_concepto integer auto_increment,
	cantidad integer not null,
	descripcion varchar(20) not null,
	valor_unidad integer not null,
	subtotal integer not null,  //este campo realmente no es necesario, se puede calcular como valor_unidad * cantidad
	id_factura integer,
	PRIMARY KEY(id_concepto),
	FOREIGN KEY(id_factura) REFERENCES Factura(id_factura)
);
De esta forma, en la tabla factura tienes un único registro para cada factura almacenada y en la tabla Concepto tienes un registro para cada línea de la factura. La forma en que se enlaza una factura con todos sus conceptos es con id_factura en la línea FOREIGN KEY(id_factura) REFERENCES Factura(id_factura). La base de datos no te permite poner una factura en la tabla Concepto que no esté creada en la tabla Factura.

De todas formas, estas son indicaciones básicas, si no tienes ni idea de lo que te hablo, te sugiero que le eches un ojo a un manual.

Un saludo y espero que te sirva.