Sie sind auf Seite 1von 5

Descripción:

Un centro Mayorista de medicamentos requiere una Base de datos para llevar el registro de datos
fundamentales para la operación de su negocio. El Mayorista de medicamentos distribuye en todo
México y requiere mantener datos de consumo final de sus productos. La BD estará enlazada con
los puntos de venta de las farmacias y los datos de los médicos recuperados de las recetas.

Datos:
El Mayorista ha identificado un conjunto datos que requiere acopiar, acceder y consultar de forma
frecuente utilizando una BD de tipo Grafo:

Nodo Nodo
Etiqueta: Medico Etiqueta: Receta

• IdReceta

• Nombre • Fecha

• RFC [

• Especialidad • IDmedicina

Funcionalidades
A la empresa se le ha comentado que existen bases de datos de tipo Grafo que permitirían hacer
análisis organizando la información en nodos. Por tanto requiere las siguiente funcionalidades
1. Dar de alta un médico con la etiqueta “Medico” y considerar los atributos del nodo.
Cada médico debe aparecer únicamente una vez en la BD (Un nodo por médico).

CREATE(m1:Medico{Nombre:"Santiago",RFC:"OILE550614TRN",Especialidad:"Medico
Gral"}),(m2:Medico{Nombre:"Luis",RFC:"LOSA601011LSA",Especialidad:"Pediatra"}),
(m3:Medico{Nombre:"Arcelia",RFC:"AGRO640131ARA",Especialidad:"Enfermera"}),
(m4:Medico{Nombre:"Jorge",RFC:"AGAG591201AGJ",Especialidad:"Traumatologo"}) return
m1,m2,m3,m4
match(m:Medico) return m
2. Dar de alta una Receta (Etiqueta Receta) con sus atributos y con el conjunto de
medicamentos (IDmedicina) que receta, y asociar la receta nueva al Médico mediante un
enlace de tipo PRESCRIBE, el enlace debe ir de Medico->Receta.

CREATE(r1:Receta{IDReceta:1,Fecha:"10/10/2019",IDMedicina:1}),
(r2:Receta{IDReceta:2,Fecha:"10/09/2019",IDMedicina:2}),
(r3:Receta{IDReceta:3,Fecha:"10/08/2019",IDMedicina:2}),
(r4:Receta{IDReceta:4,Fecha:"10/07/2019",IDMedicina:1}) RETURN r1,r2,r3,r4

Relationships:

MATCH(m:Medico{RFC:"OILE550614TRN"}),(r:Receta{IDReceta:1})CREATE (m)-
[p:PRESCRIBE]->(r) return m,p,r

MATCH(m:Medico{RFC:"LOSA601011LSA"}),(r:Receta{IDReceta:2})MERGE (m)-
[p:PRESCRIBE]->(r) return m,p,r

MATCH(m:Medico{RFC:"AGAG591201AGJ"}),(r:Receta{IDReceta:3})MERGE (m)-
[p:PRESCRIBE]->(r) return m,p,r

MATCH(m:Medico{RFC:"AGRO640131ARA"}),(r:Receta{IDReceta:4})MERGE (m)-
[p:PRESCRIBE]->(r) return m,p,r

3. Capacidad de incorporar un nodo por cada punto de venta. Es decir, debe existir un
nodo por cada farmacia-sucursal con los siguientes datos: idsucursal, cadena, código
postal. La siguiente imagen muestra un médico que ha emitido tres recetas diferentes, se crea
un nodo por cada receta emitida (Etiqueta Receta), y una vez realizada la compra del
medicamento, se asocia la receta con la farmacia donde se surtió la receta. Existe un nodo por
cada Farmacia (idsucursal)
CREATE(f1:Farmacia{IDSucursal:1,Cadena:"Farmacias
Guadalajara",Codigo_Postal:"63039"}),(f2:Farmacia{IDSucursal:2,Cadena:"Farmacias
Guadalajara",Codigo_Postal:"63040"}),(f3:Farmacia{IDSucursal:3,Cadena:"Farmacias
SUFACEN",Codigo_Postal:"63041"}) RETURN f1,f2,f3

/* Eliminaremos todos los nodos dado que necesitamos relacionar la receta a una sucursal
*/

MATCH(m:Medico)-[p:PRESCRIBE]-(r:Receta) DELETE p

/* Creamos las relaciones completas(2 recetas por cada medico) */

MATCH(m:Medico{RFC:"OILE550614TRN"}),(r:Receta{IDReceta:1}),
(f:Farmacia{IDSucursal:1})CREATE(m)-[p:PREESCRIBE]->(r)-[s:SURTIDA_POR]->(f)
RETURN m,p,r,s,f

MATCH(m:Medico{RFC:"OILE550614TRN"}),(r:Receta{IDReceta:2}),
(f:Farmacia{IDSucursal:1})CREATE(m)-[p:PREESCRIBE]->(r)-[s:SURTIDA_POR]->(f)
RETURN m,p,r,s,f
MATCH(m:Medico{RFC:"LOSA601011LSA"}),(r:Receta{IDReceta:2}),
(f:Farmacia{IDSucursal:2})CREATE(m)-[p:PREESCRIBE]->(r)-[s:SURTIDA_POR]->(f)
RETURN m,p,r,s,f

MATCH(m:Medico{RFC:"LOSA601011LSA"}),(r:Receta{IDReceta:3}),
(f:Farmacia{IDSucursal:1})CREATE(m)-[p:PREESCRIBE]->(r)-[s:SURTIDA_POR]->(f)
RETURN m,p,r,s,f

MATCH(m:Medico{RFC:"AGRO640131ARA"}),(r:Receta{IDReceta:1}),
(f:Farmacia{IDSucursal:3})CREATE(m)-[p:PREESCRIBE]->(r)-[s:SURTIDA_POR]->(f)
RETURN m,p,r,s,f

MATCH(m:Medico{RFC:"AGRO640131ARA"}),(r:Receta{IDReceta:3}),
(f:Farmacia{IDSucursal:1})CREATE(m)-[p:PREESCRIBE]->(r)-[s:SURTIDA_POR]->(f)
RETURN m,p,r,s,f

MATCH(m:Medico{RFC:"AGAG591201AGJ"}),(r:Receta{IDReceta:3}),
(f:Farmacia{IDSucursal:2})CREATE(m)-[p:PREESCRIBE]->(r)-[s:SURTIDA_POR]->(f)
RETURN m,p,r,s,f

MATCH(m:Medico{RFC:"AGAG591201AGJ"}),(r:Receta{IDReceta:2}),
(f:Farmacia{IDSucursal:2})CREATE(m)-[p:PREESCRIBE]->(r)-[s:SURTIDA_POR]->(f)
RETURN m,p,r,s,f

4. Capacidad para consultar los datos de un médico en específico.

MATCH(n:Medico) RETURN n.Nombre

5. Capacidad para consultar datos de una sucursal (Farmacia) en específico

MATCH(n:Farmacia) RETURN n
6. Capacidad para consultar un médico y el conjunto de las recetas que ha emitido.

MATCH(n:Medico),(m:Receta) RETURN n, m

7. Capacidad para consultar una receta.

match(n:Receta) return n

8. Capacidad para consultar una sucursal y el conjunto de recetas que ha surtido.

match(n:Farmacia),(m:Receta) RETURN n.IDSucursal, m,count(*) AS Conjunto_Recetas

match(n:Farmacia),(m:Receta) RETURN n.IDSucursal, sum(m.IDReceta) as Conjunto_Recetas

Das könnte Ihnen auch gefallen