11/15/2023

Creación de una base de datos de grafos y ejecución de algunas consultas de coincidencia de patrones mediante T-SQL

 

Esquema de ejemplo:

En este ejemplo se crea un esquema de gráfico para una red social hipotética que tiene Peoplenodos y RestaurantCity . Estos nodos se conectan entre sí mediante Friendsbordes , LivesInLikesLocatedIn . En el diagrama siguiente se muestra un esquema de ejemplo con restaurantbordes , cityperson nodos y LivesInLocatedInLikes

Script de ejemplo

El siguiente script de ejemplo usa la nueva sintaxis de T-SQL para crear tablas perimetrales y de nodo. Obtenga información sobre cómo insertar datos en tablas perimetrales y de nodo mediante INSERT la instrucción y también muestra cómo usar MATCH la cláusula para la coincidencia de patrones y la navegación.

Este script realiza los pasos siguientes:

  1. Cree una base de datos denominada GraphDemo.
  2. Crear tablas de nodo.
  3. Crear tablas perimetrales.

    CREATE DATABASE GraphDemo;


USE GraphDemo;


-- Create NODE tables
CREATE TABLE Person (
  ID INTEGER PRIMARY KEY,
  name VARCHAR(100)
) AS NODE;

CREATE TABLE Restaurant (
  ID INTEGER NOT NULL,
  name VARCHAR(100),
  city VARCHAR(100)
) AS NODE;

CREATE TABLE City (
  ID INTEGER PRIMARY KEY,
  name VARCHAR(100),
  stateName VARCHAR(100)
) AS NODE;

-- Create EDGE tables.
CREATE TABLE likes (rating INTEGER) AS EDGE;
CREATE TABLE friendOf AS EDGE;
CREATE TABLE livesIn AS EDGE;
CREATE TABLE locatedIn AS EDGE;

Ahora, insertaremos datos para representar las relaciones.

  1. Insertar datos en tablas de nodo.
    1. La inserción en una tabla de nodos es la misma que la inserción en una tabla normal.
  2. Inserte datos en tablas perimetrales, en este caso, para los que cada persona quiera en el likes perímetro.
    1. Al insertar en una tabla perimetral, proporcione las $node_id columnas from $from_id y $to_id .
  3. Inserte datos en el livesIn perímetro para asociar personas a la ciudad donde viven.
  4. Inserte datos en el locatedIn perímetro para asociar restaurantes a la ciudad donde se encuentran.
  5. Inserte datos en el friendOf borde a los amigos asociados.
-- Insert data into node tables. Inserting into a node table is same as inserting into a regular table
INSERT INTO Person (ID, name)
    VALUES (1, 'John')
         , (2, 'Mary')
         , (3, 'Alice')
         , (4, 'Jacob')
         , (5, 'Julie');

INSERT INTO Restaurant (ID, name, city)
    VALUES (1, 'Taco Dell','Bellevue')
         , (2, 'Ginger and Spice','Seattle')
         , (3, 'Noodle Land', 'Redmond');

INSERT INTO City (ID, name, stateName)
    VALUES (1,'Bellevue','WA')
         , (2,'Seattle','WA')
         , (3,'Redmond','WA');

-- Insert into edge table. While inserting into an edge table,
-- you need to provide the $node_id from $from_id and $to_id columns.
--/* Insert which restaurants each person likes */
INSERT INTO likes
    VALUES ((SELECT $node_id FROM Person WHERE ID = 1), (SELECT $node_id FROM Restaurant WHERE ID = 1), 9)
         , ((SELECT $node_id FROM Person WHERE ID = 2), (SELECT $node_id FROM Restaurant WHERE ID = 2), 9)
         , ((SELECT $node_id FROM Person WHERE ID = 3), (SELECT $node_id FROM Restaurant WHERE ID = 3), 9)
         , ((SELECT $node_id FROM Person WHERE ID = 4), (SELECT $node_id FROM Restaurant WHERE ID = 3), 9)
         , ((SELECT $node_id FROM Person WHERE ID = 5), (SELECT $node_id FROM Restaurant WHERE ID = 3), 9);

--/* Associate in which city live each person*/
INSERT INTO livesIn
    VALUES ((SELECT $node_id FROM Person WHERE ID = 1), (SELECT $node_id FROM City WHERE ID = 1))
         , ((SELECT $node_id FROM Person WHERE ID = 2), (SELECT $node_id FROM City WHERE ID = 2))
         , ((SELECT $node_id FROM Person WHERE ID = 3), (SELECT $node_id FROM City WHERE ID = 3))
         , ((SELECT $node_id FROM Person WHERE ID = 4), (SELECT $node_id FROM City WHERE ID = 3))
         , ((SELECT $node_id FROM Person WHERE ID = 5), (SELECT $node_id FROM City WHERE ID = 1));

--/* Insert data where the restaurants are located */
INSERT INTO locatedIn
    VALUES ((SELECT $node_id FROM Restaurant WHERE ID = 1), (SELECT $node_id FROM City WHERE ID =1))
         , ((SELECT $node_id FROM Restaurant WHERE ID = 2), (SELECT $node_id FROM City WHERE ID =2))
         , ((SELECT $node_id FROM Restaurant WHERE ID = 3), (SELECT $node_id FROM City WHERE ID =3));

--/* Insert data into the friendOf edge */
INSERT INTO friendOf
    VALUES ((SELECT $NODE_ID FROM Person WHERE ID = 1), (SELECT $NODE_ID FROM Person WHERE ID = 2))
         , ((SELECT $NODE_ID FROM Person WHERE ID = 2), (SELECT $NODE_ID FROM Person WHERE ID = 3))
         , ((SELECT $NODE_ID FROM Person WHERE ID = 3), (SELECT $NODE_ID FROM Person WHERE ID = 1))
         , ((SELECT $NODE_ID FROM Person WHERE ID = 4), (SELECT $NODE_ID FROM Person WHERE ID = 2))
         , ((SELECT $NODE_ID FROM Person WHERE ID = 5), (SELECT $NODE_ID FROM Person WHERE ID = 4));

A continuación, consultaremos los datos para buscar información de los datos.

  1. Use la función MATCH del grafo para buscar qué restaurantes le gusta John.
  2. Encuentra los restaurantes a los que le gustan los amigos de John.
  3. Encuentra gente que le gusta un restaurante en la misma ciudad en la que viven.


-- Find Restaurants that John likes
SELECT Restaurant.name
FROM Person, likes, Restaurant
WHERE MATCH (Person-(likes)->Restaurant)
AND Person.name = 'John';

-- Find Restaurants that John's friends like
SELECT Restaurant.name
FROM Person person1, Person person2, likes, friendOf, Restaurant
WHERE MATCH(person1-(friendOf)->person2-(likes)->Restaurant)
AND person1.name='John';

-- Find people who like a restaurant in the same city they live in
SELECT Person.name
FROM Person, likes, Restaurant, livesIn, City, locatedIn
WHERE MATCH (Person-(likes)->Restaurant-(locatedIn)->City AND Person-(livesIn)->City);

Por último, una consulta más avanzada busca a los amigos de amigos. Esta consulta excluye los casos en los que la relación "vuelve a bucles". Por ejemplo, Alice es amiga de John; Juan es amigo de María; y Mary a su vez es amiga de Alice. Esto hace que un "bucle" vuelva a Alice. En muchos casos, es necesario comprobar explícitamente estos bucles y excluir los resultados.

-- Find friends-of-friends-of-friends, excluding those cases where the relationship "loops back".
-- For example, Alice is a friend of John; John is a friend of Mary; and Mary in turn is a friend of Alice.
-- This causes a "loop" back to Alice. In many cases, it is necessary to explicitly check for such loops and exclude the results.

SELECT CONCAT(Person.name, '->', Person2.name, '->', Person3.name, '->', Person4.name)
FROM Person, friendOf, Person as Person2, friendOf as friendOffriend, Person as Person3, friendOf as friendOffriendOfFriend, Person as Person4
WHERE MATCH (Person-(friendOf)->Person2-(friendOffriend)->Person3-(friendOffriendOfFriend)->Person4)
AND Person2.name != Person.name
AND Person3.name != Person2.name
AND Person4.name != Person3.name
AND Person.name != Person4.name;

Limpieza

Limpie el esquema y la base de datos creados para el ejemplo en SQL Server. Recuerda que se eliminaran los datos de las tablas

USE graphdemo;

DROP TABLE IF EXISTS likes;

DROP TABLE IF EXISTS Person;

DROP TABLE IF EXISTS Restaurant;

DROP TABLE IF EXISTS City;

DROP TABLE IF EXISTS friendOf;

DROP TABLE IF EXISTS livesIn;

DROP TABLE IF EXISTS locatedIn;


--Limpie el esquema y la base de datos creados para el ejemplo en Azure SQL Database.

--Connect to the graphdemo database

DROP TABLE IF EXISTS likes;

DROP TABLE IF EXISTS Person;

DROP TABLE IF EXISTS Restaurant;

DROP TABLE IF EXISTS City;

DROP TABLE IF EXISTS friendOf;

DROP TABLE IF EXISTS livesIn;

DROP TABLE IF EXISTS locatedIn;


--Connect to the  database

DROP DATABASE graphdemo;


11/10/2023

Practica Base de Datos

 Con esta actividad buscamos entender de manera clara el funcionamiento de la base de datos:



Insertar datos en la tablas, según la imagen iniciamos el proceso desde la línea 190
Ejemplo:
                        insert into clientes (ci_cli,nom_cli,ape_cli)
                values ('123456789','Paula','Gomez'),
('111222333','Juan','Piedra'),
        ('121212121','Martha','Vasquez');


Desde la línea marcada con 181 iniciamos con las diferentes consultas
Ejemplo
--1.listar el total y numero de la factura del cliente con la cedula 123456789--
        select ci_cli,nom_cli,ape_cli,num,total
from clientes,cabecera_nota_venta
                     where ci_cli='123456789' and ci_cli=ci_cliente;











































4/12/2022

3/19/2020

Inicio de Clase el Jueves 26/03/2020 Operaciones básicas de programas de oficina

Hola jóvenes según lo acordado por WhatsApp Aquí le dejo los enlaces para acceder a la clase en sus respectivos horario:
AF: 20200501557

Para el Horario de la Mañana entrar a este link y unirse a la clase, también pueden acceder por la dirección que le comente por WhatsApp
https://classroom.google.com/c/NjUwNjc4ODU0NzFa PULSA CLIC AQUI PARA INICIAR

Resultado de imagen para atras









AF: 20200501558
Resultado de imagen para atras
Para el Horario de la tarde entrar a este link y unirse a la clase, también pueden acceder por la dirección que le comente por WhatsApp

https://classroom.google.com/c/NjUwNjc4OTY2Nzda  PULSA CLIC AQUI PARA INICIAR

Glosario de Windows

Computadora:  Es un aparato electrónico, capaz de procesar cualquier tipo de información, de forma rápida y eficiente. La cual es presenta...