lunes, 16 de mayo de 2016

Automatas

Diseñe Una MT que se comporte como reconocedor que reconozca el siguiente lenguaje:

L=d^n e^n; donde n sea mayo o igual a 1

El alfabeto de la cinta debe ser diferente al alfabeto de entrada.
Es decir si el alfabeto de entrada es “d” el de la cinta “1” con sus respectivos símbolos blanco si es que los necesita en su diseño.

1. Identifique los componentes de la Máquina de Turing -descríbala-.

2. Diséñela en el Diagrama.

3. Recorra la máquina con al menos una cadena válida explicando lo sucedido.

4. Identifique una cadena que no sea válida y justifíquela porque.

5. Ejecute el Test a una cadena aceptada que tenga el menos cinco símbolos

6. Identifique en que momento la máquina se detiene.

SOLUCIÓN :

https://youtu.be/lMtkzo_nkS8

INNER JOIN - SQL - ÁLGEBRA RELACIONAL


Tabla cliente:

idcliente
nombre
telefono
idciudad
122 edwin vanegas 5656565 001
123 karol claro 7565696 001
124 brayan alvarez 9656855 002
125 darwin salcedo 4561237 003

-------------------------------------------------------------------------------------------------

Tabla compra:

idcompra
idcliente
fechacompra
005 123 2016-06-18
006 124 2016-05-16



Necesitamos realizar una consulta que nos muestre el id de la compra la fecha de la compra el nombre del cliente y el telefono del cliente que realizo la compra

por lo tanto necesitamos hacer una unión de la tabla compra y de la tabla cliente para obtener dicha información.

Para este ejemplo usaremos el INNER JOIN.

Pero primero explicare en que consiste el inner join, y para explicarlo utilizaré el Diagrama de Venn:

















Representemos en un circulo los atributos de la tabla compra y en otro circulo los atributos de la tabla cliente:


compra:











cliente:
 












ahora realizamos una unión entre ambas tablas (círculos):
















como podemos ver existe un atributo común entre ambas tablas con la cual podemos realizar la unión (inner join)

ahora realizaremos una unión de los datos entre del atributo idcliente de ambas tablas


datos de la tabla compra:

idcompra
idcliente
fechacompra
005 123 2016-06-18
006 124 2016-05-16














datos de la tabla cliente:

idcliente
nombre
telefono
idciudad
122 edwin vanegas 5656565 001
123 karol claro 7565696 001
124 brayan alvarez 9656855 002
125 darwin salcedo 4561237 003












El resultado de la unión es el siguiente:













como podemos observar, la unión entre ambas tablas (con INNER JOIN) es la intercepción de los datos en común de la tabla compra con la tabla cliente.

ahora que hemos comprendido la manera en la que trabaja el INNER JOIN procederemos a realizar la consulta SQL obteniendo los datos que nos piden:


Realizar una consulta que nos muestre el id de la compra la fecha de la compra el nombre del cliente y el telefono del cliente que realizo la compra

y el resultado de la consulta es el siguiente:

SELECT compra.idcompra, compra.fecha, cliente.nombre, cliente.telefono
FROM compra
INNER JOIN cliente ON compra.idcliente = cliente.idcliente

como podemos observar, debemos especificar el nombre de la tabla al atributo que deseamos obtener en la consulta para evitar un error de ambigüedad:

compra.idcompra, compra.fecha, cliente.nombre, cliente.telefono

Primero se especifica la tabla principal en este caso la tabla compra y posteriormente escribimos INNER JOIN y seguido a esto el nombre de la tabla, en este caso la tabla cliente.

FROM compra
INNER JOIN cliente

Después debemos especificar en la consulta con cuales campos realizaremos el INNER JOIN (intercepción) como habiamos analizado anteriormente serían los campos idcliente de las dos tablas.

ON compra.idcliente = cliente.idcliente



PLUS:
podemos utilizar ALIAS en las consultas para simplificarla… como ejemplo, la consulta anterior pdria ser de la siguiente manera:

SELECT co.idcompra, co.fechacompra, cl.nombre, cl.telefono
FROM compra AS co
INNER JOIN cliente AS cl ON co.idcliente = cl.idcliente

la estructura de la consulta de un INNER JOIN es la siguiente:

SELECT
FROM tabla1
INNER JOIN tabla2
ON tabla1.atributo_clave = tabla2.atributo_clave

-------------------------------------------------------------------------------


INNER JOIN CON TRES O MÁS TABLAS:


SELECT
FROM tabla1
INNER JOIN tabla2 ON tabla1.atributo_clave = tabla2.atributo_clave
INNER JOIN tabla3 ON <tabla1.atributo_clave ó tabla2.atributo_clave> = tabla3.atributo_clave
INNER JOIN tabla4 ON <tabla1.atributo_clave ó tabla2.atributo_clave ó tabla3.atributo_clave > = tabla4.atributo_clave