En mi opinión lo que deberias hacer es tener una tabla con las políticas, que contenga un Id y campos con todas sus caracterisiticas más un campo con el estado (Vigente / No vigente), y otra tabla con cada uno de los productos asociados a cada política. Creo que es más sencillo y te permite ir guardando la historia de todas las policitcas aplicadas y los productos asociados.
Saludos cordiales El 23 de octubre de 2015, 9:43, Ruben Fitó <r.f...@ubiquat.com> escribió: > Hola lista, > > Hace tiempo, realicé una consulta relacionada con los códigos de productos > de mi empresa, donde se tiene que hacer "best matching" conforme el código > de tipo de producto forma parte del código del mismo. Bueno algo como > expuse es: > > *12345 --> *producto* A: 12345 *00089 > *1234578 --> *producto* B: 1234578 *0258 > > Escoger el tipo de producto se pudo solucionar con la función prefix. > > Ahora, tenemos que para un producto o conjunto de productos, queremos > aplicar ciertas políticas de precios y hemos pensado que el tipo de > agrupaciones según los tipos de productos pueden ser diferentes según la > política a aplicar, con lo que hemos pensado en usar códigos "comodin". > > Por ejemplo: > > Tenemos varios productos: > > Código tipo producto Tipo producto Código final producto > Possible comodin > *12345 --> *producto* A: 12345 *00089 > *12345** > *1234578 --> *producto* B: 1234578 *0258 > *1234578* > *9876543 --> *producto* C: 9876543 *01234 > *9876543** > *11111 --> *producto* D: 11111 *22222 > *11111* > > Para TODOS los productos un posible comodín seria el asterisco(*). > > > Por otro lado, podemos tener varias políticas. > > - Política 1: se aplicará un 15% de descuento a todos los productos. → > código comodín [*]. > - Política 2: se aplicará un 15% de descuento a todos los productos y > sub-productos *12345 →* código comodín [*12345**] > - Política 3: se aplicará un 15% de descuento a todos los productos y > subproductos A y D → código comodín [*12345**, *11111**] > > A nivel de aplicación necesitamos algo genérico ya que no queremos > programar cada vez que se incorpore una nueva política. > > Hemos pensado en que cada nueva política contenga los "conjuntos de > productos", por eso tenemos una tabla que los describe y hemos pensado en > añadir una nueva columna que contenga una lista(ARRAY) de "comodines", y de > ella poder saber por producto qué políticas hay que aplicar. > > - Es buena idea? No quiero volver a la conclusión que postgres ya > tiene algo montado y no he sabido encontrarlo. :-) > - En caso que POSTGRES no contemple este caso en una de sus funciones, > cómo seria la query para buscar si se ha de aplicar o no una política?? > Queremos evitar que lo procese el aplicativo y que nos de el resultado > directamente la BD. > > Espero haberme explicado bien. > > Gracias por su atención. > > Un saludo > > -- > *Ruben Fitó * > Software Engineer > r.f...@ubiquat.com <j.catari...@ubiquat.com> > www.ubiquat.com > Tota la informació continguda en aquest document i arxius adjunts és > CONFIDENCIAL protegida per llei de secret comercial. Si l'ha rebut per > error, si us plau elimini'l i posi's en contacte amb l'emissor. > > All information contained in this document and any attachments are > CONFIDENTIAL and protected under trade secret laws. If you receive this > message by mistake, please delete it and notify it immediately to the > sender. > -- Sergio Valdés H.