Lo siento, pero el desarrollo en este foro no puede incluir código de programación. Es norma en el Foro.
Yendo a tu planteo, es básicamente correcto, aunque yo lo implementaría de un modo más directo:
Ahora bien, ten en cuenta algunas cosas:
1) Un sistema de facturación requiere dos tablas: Factura y DetalleFactura. La primera tiene sólo los datos únicos de la factura: Numero, fecha, id_Cliente, descuentos aplicados, etc. La segunda tiene el detalle de cada producto que está en la factura con: id_factura, id_item, IdProducto, cantidad.
2) Se requieren dos grupos de INSERT para dar el alta a una sola facura: El primero da de alta el encabezado y el segundo es un INSERT múltiple con un conjunto de datos (incluyendo el id_factura en cada item) por cada línea de la factura.
3) Es posible que se necesiten tablas adicionales y relaciones adicionales para Ordenes de pedido, Remitos, Cliente, CuentaCliente, Caja, FormaDePago, Recibo, etc., dependiendo de las características del sistema.
Un esquema básico sería mas o menos: