Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Mejorar MER

Estas en el tema de Mejorar MER en el foro de Bases de Datos General en Foros del Web. Buenos dias Estoy desarrollando una pagina que beneficiara a las personas que tienen alguna necesidad respecto a su salud y no tienen los recursos economicos ...
  #1 (permalink)  
Antiguo 05/08/2017, 12:05
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.176
Antigüedad: 7 años, 8 meses
Puntos: 131
Mejorar MER

Buenos dias

Estoy desarrollando una pagina que beneficiara a las personas que tienen alguna necesidad respecto a su salud y no tienen los recursos economicos para solventar sus necesidades

Estoy en la fase del MER y llevo esto



Entidades

photo -> fotos de las publicaciones (sillas de ruedas, medicamentos,etc)
product-> publicaciones
category -> categorias de los productos (desechables,medicamentos,etc)
subcategory -> subcategorias (medicamentos > antibioticos, analgesicos)
user -> usuarios del sistema
user_type -> tipos de usuarios
contact_message -> mensajes de contacto
notification -> notificaciones (persona1 te esta solicitando tu silla de ruedas)
notification_type -> tipos de notificaciones
request -> peticiones (faith_person esta pidiendo tal producto en tal fecha)
response -> respuestas con su fecha
respose_type -> tipos de respuesta


Primer Consulta
algo muy comun que hice fue lo siguiente

Considermos las entidades user, user_type y state
Pudiera pensar de esta forma
1 usuario tiene 1 estado y 1 estado tiene muchos usuarios
1 usuario tiene 1 tipo y 1 tipo tiene muchos usuarios

Llevar a cabo las relaciones correspondientes

Y cuando quiera obtener por ejemplo el estado del usuario tendria que hacer un join

Pero en lugar de eso,

Pienso no relacionar las entidades

Declarar constantes en mi script de Php

define("estado1","valor");
define("estado2","valor");
define("estado3","valor");
...

Cuando quiera hacer lo mismo(obtener el estado del usuario) solo consulto la tabla user traigo el id del estado(atributo state) y obtengo el valor de la constante, es decir,

$datos = select * from user where id = $idUser
echo constant("estado".$datos['state']);

Todo esto lo hago por optimizacion, que opinan?


Segunda Consulta
1 product siempre tiene una categoria
1 product no siempre tiene una subcategoria

Si 1 product tuviera siempre una subcategoria, tendriamos algo como esto



Pero en este caso, se me ocurre lo siguiente, es correcto?




Tercer Consulta

Todos los products(sillas de ruedas, medicamentos, desechables,etc) tienen caracteristicas comunes las cuales vemos en la entidad product

Pero hay products que tienen caracteristicas particulares por ejemplo un medicamento tiene una fecha de caducidad.

Es por eso que en principio tengo 2 entidades product_medicament y apparatus_medical que almacenaran caracteristicas de los medicamentos y aparatos medicos, trabajando con la entidad product_medicament pienso agregar solamente un atributo id

a la hora de almacenar por ejemplo un medicamento agrego un registro a la tabla product y product_medicament utilizando el mismo id y a la hora de recuperar un medicamento traigo la informacion de las 2 tablas

Lo mismo haria con apparatus_medical

Que opinan es correcto?



Saludos
  #2 (permalink)  
Antiguo 10/08/2017, 13:50
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.696
Antigüedad: 8 años, 3 meses
Puntos: 194
Respuesta: Mejorar MER

Saludo

Bueno, para analizar muchisimo mejor el tema, lo mejor sería tener el documento de requerimientos.
Sin embargo, basado en el MER opino lo siguiente

1. Se habla de las tablas user_type y state, las cuales no tendrían razón de ser si se va a hacer uso de las constantes.

Sin embargo, teniendo en cuenta la optimización, hablemos de la optimización de consultas.
Es decir, si en algún momento se necesita sacar un informe por ejemplo de los usuarios con su respectivo tipo y estado,
manejandolo con el tema de las constantes, necesariamente este informe se sacaría usando las constantes también,
es decir, que por base de datos no sería posible hacer algo 'directo' consultando tablas, a menos que se conserven las mismas.

Otra solución sería crear una vista en la base de datos, y lo que serían las constantes en php,
aquí serían ifs para revisar si el estado es 1 entonces que salga estado1, y así sucesivamente.

Entonces, retomando la idea de optimización, yo creería que es más optimo no manejar las constantes, sino hacer uso de las tablas ya diagramadas.
Esto hace que las consultas sean más limpias, y a su vez si se necesitan realizar consultas directamente a la bd
sin necesidad de hacer uso de la aplicación en algún momento, también se puede hacer sin complicaciones.

2. Productos que siempre tienen una categoría, y no siempre una subcategoría.
Aquí pregunto, hay productos que puedan tener varias categorías?
Y hay categorías que puedan tener varias subcategorías? (Este me imagino que si es posible)

Además, imagino que lo que si estaría relacionado es justamente categorías con subcategorías,
en cuyo caso, yo propondría que las tablas de category y subcategory sean quienes se relacionen (a menos que haya subcategorías que apliquen a varias categorías)
siendo necesaria una tercera tabla de category_subcategory donde se relacionen categorías con subcategorías.

Y claramente, esto también haría que existiese una de product_category_subcategory para que allí reposen solamente
las categorías con sus respectivas subcategorías de un determinado producto.

3. En cuanto a las características de cada product, como no son iguales en todos los casos, yo optaría por alguna de estas dos soluciones:
- Crear un campo tipo json, y allí guardar una estructura correspondiente a cada uno.
- Usar una tabla product_info y allí guardar con el id de cada producto sus respectivas características.

En cualquiera de los dos casos, se evita manejar N tablas nuevas por cada nuevo tipo de producto que pueda crearse en cierto momento con distintos atributos.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com



La zona horaria es GMT -6. Ahora son las 19:14.