Dispongo de una tabla Productos, otra Categoría y otra Subcategoría.
Estas son la reglas de negocio:
· Un Producto pertenece a una Categoría.
· Un Producto pertenece también a una Subcategoría.
· Un Categoría tiene varias Subcategoría.
Hasta aquí la cosa va bien. Tres relaciones 1:N (Producto-Categoria,
Producto-Subcategoria y Categoria-Subcategoria).
Sin embargo hay una cuarta regla de negocio que es la que me tiene
liado:
· La Subcategoría de un Producto debe pertenecer a la Categoría de éste.
¿Como resolveríais este problema? ¿Hay alguna forma de modelarlo en la
base de datos?
· Un Producto pertenece a una Categoría.
· Un Producto pertenece también a una Subcategoría.
· Un Categoría tiene varias Subcategoría.
¿Como resolveríais este problema? ¿Hay alguna forma de modelarlo en la
base de datos?
dos enfoques:
categoría => subcategoría => producto
categoría => categoría => producto
Con el segundo tienes la ventaja de que puedes anidar tantos niveles
como quieras y que además te permite que un producto tenga una categoría
“Raíz” de las que no pertenecen a ninguna subcategoría. Además, es una
tabla menos que mantener.
javier ramirez
escribió:> categoría => categoría => producto
Con el segundo tienes la ventaja de que puedes anidar tantos niveles
como quieras y que además te permite que un producto tenga una categoría
“Raíz” de las que no pertenecen a ninguna subcategoría. Además, es una
tabla menos que mantener.
+1, si optas por esa vía y la estructura de tus categorías tiene pinta
de árbol quizá quieras echar un vistazo a acts_as_tree:
si existe la restricción que los artículo debe colgar solo de
subcategorías (no se si ese es tu caso) te bastaría con:
categoría has many subcategorías
subcategorías has many productos
podrías rescatar la categoría del producto desde la relación con la
subcategoría y te bastaría con eso, con lo que no es necesario tener la
categoría asociada a los productos, normalizadamente hablando claro.
Paco
García escribió:> Tengo un problema… a ver que se puede hacer:
Únicamente necesito dos niveles (categorÃa y subcategorÃa) no necesito
más,
para algunos productos ni siquiera necesito subcategorÃa (corrección de
la
regla de negocio 2). Me gustarÃa que quedara modelado todo (o lo máximo
posible) en la base de datos.
Únicamente necesito dos niveles (categoría y subcategoría) no necesito más,
para algunos productos ni siquiera necesito subcategoría (corrección de la
regla de negocio 2). Me gustaría que quedara modelado todo (o lo máximo
posible) en la base de datos.
¿Nuevas sugerencias?
Yo lo he implementado parecido a esto, no tengo el codigo a mano pero
deberia andar:
tabla: categories, tiene campo: category_id
class Category < AR
has_many :products
acts_as_tree
validate
if !parent.nil? and !children.empty?
errors.add_to_base(“No podes tener mas de 2 niveles”)
end
end
end
Hola, la mejor solucion es la que muy bien dice Emilio y Raul, unas
categorias en arbol o hierarchical data. la solución menos elegante
pero
no por ello peor, consiste en modelarlo en la BD con dos tablas,
Esa ultima tiene ademas la pega de que debes modelar que un producto
pueda pertenecer a una categoria o subcategoria (segun un mail
anterior), con lo que debes tener una polimorfica en Products. Nah,
lo generico en este caso quedara mas sencillo.
Hola, la mejor solucion es la que muy bien dice Emilio y Raul, unas
categorias en arbol o hierarchical data. la solución menos elegante pero
no por ello peor, consiste en modelarlo en la BD con dos tablas,
(categoria y subcategoria)
Disculpen tengo que hacer un gran cuestioario sobre la recepcion de
individuos en un zoologico, pero como tiene varias secciones como datos
generales, datos de su donante, de su arribo, etc, Lo que pretendo pues
es
el clasico, por partes que al terminar una seccion, pase a la siguiente
y en
la siquiente puede pasar a la otra o regresar a la anterior, lo que no
se es
como ir guardando los diferentes objetos entre el paso de las acciones
que
involucren varios controladores.
Espero me haya podido explicar bien, si alguien tiene alguna referencia
para
hacer esto o sugerencias, se los agradeceria mucho.
Live Search en Prodigy/MSN. Todo lo que buscas ahora más rapido
El Aug 3, 2007, a las 12:50 AM, Xavier N.
escribió:
Esa ultima tiene ademas la pega de que debes modelar que un
producto pueda pertenecer a una categoria o subcategoria (segun un
mail anterior), con lo que debes tener una polimorfica en Products.
Nah, lo generico en este caso quedara mas sencillo.
Dejame añadir que si bien la implementacion generica parece la mas
sencilla, la API publica de la clase puede estar limitada a categoria/
subcategoria y demas si queda mas comodo.
Es decir, no tienes por que ofrecer la API de arbol de acts_as_tree
asi silvestre si no tiene sentido en la aplicacion, si conviene
puedes añadir una capa fina ad-hoc que delegue en ella. Te quedaria
la implementacion facil por un lado, y el uso esperado por otro.