Hola, Yaney:
La finalidad de la respuesta es que te des cuenta de dos cosas:
1. No presentas una duda puntual sino muy genérica, tu duda no es sobre un conocimiento único, si no lo que conlleva no solo años de estudio, si no también experiencia, y conocimientos multidisciplinarios, es decir que para tener un sistema de facturación no solo debes saber de programar, y/o diseñar bases de datos, tienes que saber de temas fiscales, contables, etc.
2. Tu dices
"Lo que busco es una explicación más resumida y detallada, con ejercicios y ejemplos de cómo diseñar una base de datos para hacer una factura, si para esto necesito estudiar una licenciatura, imagínese usted, dedicar 5 años de estudio para diseñar 4 tablas y relacionarlas, por Dios!", a mi me llamas arrogante, pero tu menos precias así de simple lo que muchos hemos estudiado, SI para diseñar 4 tablas y relacionarlas, muchos invertimos 5 años de estudio. Tu quieres ese conocimiento RESUMIDO y DETALLADO, agrego yo, SIN ESFUERZO.
Te aclaro no creo saberlo todo, al menos no he dicho eso en mi respuesta ni en las 269 que he realizado en solo este apartado.
Tampoco le he dado un valor monetario a mis conocimientos, ya que ni te he dicho cuanto te cobro por hacerlo, ni siquiera lo he insinuado.
He visto la ficha, ya que busco escribir y redactar en función de un castellano que no sea ofensivo, y a pesar de que el foro es en castellano, no todos ven bien les responda de USTED, o de TU, o cosas similares, realmente no es mas que eso.
Este es un foro TÉCNICO, aun y cuando estés aprendiendo de forma autodidacta, si quieres aprender de esto, te recomiendo que primero te vayas haciendo de ese lenguaje y conocimiento TÉCNICO.
Ahora bien la duda que planteas no se encuentra acotada, es 100% genérica, y podríamos contestar muchas cosas, desde la experiencia de cada persona.
Te insisto que el primer paso es acotar el alcance de lo que quieres hacer. Te dare algunos ejemplos:
Prestashop, es un software de "facturación" para tiendas virtuales en internet
De acuero a la Wikipedia este sistema se lanzo en 2007 con la version 1.0 y hoy en dia esta en la version 1.7 (12 años despues)
La Base de Datos consta de 243 tablas.
Aquí encuentras información de que contiene cada una de ellas
https://devdocs.prestashop.com/1.7/development/database/
Desgraciadamente ante lo que planteas
"Yo sé crear las tablas, sé también declarar los tipos de datos de los campos. Sé crear las relaciones que en mi caso quiero crear 4 tablas, cliente, productos, facturas y detalle de factura,
la relación entre productos y facturas y clientes y factura es de muchos a muchos y mi tabla detalle es la tabla relacional entre ellas, en fin, esos detalles los conozco, buscaba ejemplos basados en la experiencia de otros programadores sobre qué campos incluir en la tabla producto y por qué no en la tabla detalles, o qué incluier en facturas y no en detalles"
Es muy complejo responderte, la gente de Prestashop, ha escrito mas de 20 páginas.
Para tratar de cambiar la impresión que te llevas te daré un ejemplo en base a mi experiencia:
SOLO analizare CLIENTE.
Clientes:
- Necesitaras un identificador.
- Un Nombre - Aquí puedes poner el nombre de una persona o una empresa, si quieres poder diferenciarlos tendrías que crear otro campo con tipo de cliente.
- Contacto - Este campo si es una empresa te hará falta pero si no es una empresa, te sobra, aquí siempre entra la duda si la empresa es muy grande y el negocio que tienes requiere mas de un contacto ... lo mejor sera ponerlo en otra tabla.
- Dirección, puedes poner todo en un solo campo, pero si mañana quieres analizar clientes por país, estado, etc, deberías separar estos en distintos campos, para que se mantenga una uniformidad de capturas deberías hacer una tabla de países, que a su vez heredara a una de poblaciones y esta a ciudades. Luego tendrás el problema de que cada cliente puede tener una(s) dirección de entrega, otra de facturación, la mayoría de los sistemas crea una tabla de direcciones independiente y la liga al cliente.
- Teléfonos, si es una persona quizás te baste con mantener 1 o 2 teléfonos, pero si es una empresa, probablemente tenga mas 2 en forma centralita y tus contactos extensiones.
- ID Fiscales, dependiendo de donde quieras implementar el sistema de facturación, deberás incluir en las facturas los identificadores fiscales, en europa y dentro de la UE, el NIF, Si es o no intracomunitario, en México RFC, en Estados Unidos VAT, y supongo que cada pais tiene el suyo.
- Emails,
- Paginas WEB
- Métodos de Cobro, algunas empresas te pagan facturas a 30, 60 , 90 días. Suizas tu sistema tiene que contemplar este dato para efectos de la validez/caducidad de las facturas.
- Régimen de impuestos, En Europa el aspecto del IVA siendo comunitario o no tiene repercusiones.
- Fecha de Ingreso al sistema - Quizás mañana quieras hacer promociones por antigüedad...
- Fecha de Baja - En principio y dependiendo del tiempo que vayas a conservar las facturas en el sistema, no deberías poder borrar los clientes, ya que podrías romper la integridad referencial con las tablas de facturas y detalles.
- Fecha de Actualización - Importante saber cuando se actualizan los datos
- Campos de comentarios
- Tipo de Cliente .- Te he comentado anteriormente si es Persona Física o Empresa, pero podría ser Mayorista, Minorista, Premium que le das descuentos especiales, etc, etc, quizás esto debería ser otra tabla.
- Usuario y Contraseña .- Si tu punto de venta esta en Internet, el proceso de facturación se hace en linea, deberías de guardar los datos de este cliente
- Estatus .- Quizás esto debería ser otra tabla, el estado podría ser Activo, Suspendido (imagina que no te ha pagado en tiempo), Baja, etc, etc.
Como veras analizar el tema de los clientes a mi me dan las siguientes tablas:
CLIENTES
-- DIRECCIONES
-- -- PAISES
-- -- -- POBLACIONES
-- -- -- -- CIUDADES
-- TIPOS DE CLIENTE
-- TIPOS DE IMPUESTOS
-- TIPOS DE COBRO
-- ESTADO DE CLIENTES
Y seguramente muchos en el foro dirán que me faltan muchas cosas, que ellos lo harían de muchísimas otras formas...
Luego con esto que intento responderte, que lo que pides RESUMIDO, DETALLADO, no existe y es algo muy subjetivo.
Que esta bien querer aprender de forma autodidacta y en este foro tratamos de ayudar a quienes lo hacen.
Pero a la gente que nos viene a decir como tu, SOIS EGOÍSTAS, MERCENARIOS, NO QUERÉIS COMPARTIR CONOCIMIENTOS, EXIGIENDO respuestas a preguntas tan abiertas, nos cuesta mucho mas...
Saludos