Programación Web
Intermedio.
PROF. Jorge Nicolás Terradillos
Cardinalidad y 01
Modelo E-R
Complejizando el modelo entidad-relación
REPASANDO
En el curso trabajamos el back-end de un sitio web: las
bases de datos y el pasar datos desde el front-end
Para empezar con bases de
datos (BDD) hablamos de
como planificarlas mediante
el modelo entidad-relación
REPASANDO
En BDD de tipo relacional (como las que trabajaremos)
los datos se ordenan en “tablas” que representan
entidades reales. Varias tablas componen una base de
datos, y en este caso, cada tabla se puede relacionar
con otra de la misma BDD
EL MODELO ENTIDAD-RELACIÓN
• ENTIDAD: Objeto concreto o abstracto que figura en nuestra base
de datos como por ejemplo: alumno, cliente, empresa, sucursal, etc.
• ATRIBUTO: características de una entidad. Por ejemplo: en la
entidad ‘ALUMNO’, los atributos podrían ser Nombre, Apellido,
Legajo, etc.
• RELACIONES: asociación entre entidades. Permite relacionar en sí
los datos del mismo para no tener información aislada. Por ejemplo,
en el caso de que tengamos una entidad personas y otra entidad
trabajos.
ENTIDAD
RELACIÓN
ATRIBUTO
CARDINALIDAD
Un último elemento a considerar es cuanto tipos de entidad se
relacionan con otra entidad: por ejemplo, un esposo (entidad)
está casado (relación) con una única pareja y viceversa. Esto
sería una relación 1:1. El vínculo es unívoco
- RELACIÓN 1 a N (ej : un profesor dicta varias materias)
Una factura (entidad) se emite (relación) a una persona (entidad) y solo
una, pero una persona puede tener varias facturas emitidas a su nombre.
Todas las facturas se emiten a nombre de alguien. Es una relación N:1.
Otro Ejemplo: Si se tiene las entidades “Ciudad” y “País” con la relación
“Pertenecer” veríamos que a un país pertenecen muchas ciudades pero
cada una de esas ciudades pertenece a un solo país. Tomando un caso
en particular, en Argentina hay muchas ciudades entre ellas ‘Buenos
Aires’, pero ‘Buenos Aires’ solo se encuentra en un solo país, el cual es
‘Argentina’.
- RELACIÓN N a M. Varias entidades relacionadas entre sí. Por
ejemplo: varios equipos juegan varios campeonatos
Un cliente (entidad) puede comprar (relación) varios servicios
(entidad) y un servicio puede ser comprado por varios clientes
distintos. Es una relación N:M
Un empleado maneja solamente un departamento, y un
departamento es gerenciado por un empleado, pero podría ser no
ser manejado por ningún empleado.
Un empleado trabaja en uno o en varios departamentos, pero en
un departamento trabaja solamente un departamento
TABLAS RELACIONALES
El MER está para guiarnos a
la hora de crear bases: una
base relacional es en un
conjunto de TABLAS, donde
cada fila de la tabla
representa una relación entre
el conjunto de valores
Viendo esta tabla: cuenta tiene 3 cabeceras, nombre_sucursal,
numero_cuenta y saldo. Siguiendo los terminos del modelo
relacional, se puede referir a estas columnas como atributos.
Para cada atributo hay un
conjunto de valores
permitidos denominado
dominio de ese atributo.
Si pensamos en la tabla
cuenta recién vista, todas
las filas de cuenta deben
en una tupla (v1, v2, v3).
Es posible que varios
atributos tengan el mismo
dominio. Por ejemplo si se
tiene una relación cliente,
otra empleado.
También es posible que varios
atributos tengan el mismo dominio.
Por ejemplo si se tiene una relación
cliente, otra empleado. Acá el
dominio son todos los posibles
nombres.
El concepto de ejemplar de una relación se corresponde con el
valor de una variable o instancia en los lenguajes de
programación.
Lenguaje SQL 02
Interpretando y creando bases de datos
SQL
El lenguaje de consulta estruturada
(Structured Query Language, SQL),
es un lenguaje hecho para crear
tablas y bases
Se basa en la escritura de sentencias (también denominadas
comandos o cláusulas), son las palabras reservadas para
ejecutar acciones sobre la base de datos. Gracias a estas, los
usuarios pueden operarlas de acuerdo con su objetivo.
MYSQL
MySQL es un sistema de gestión de
bases de datos de código abierto, uno
de los más utilizados en el mundo, el
cuál usa SQL.
De hecho, ya está integrado con
InfinityFree y podemos usarlo desde la
web de cualquier sitio que hayamos
creado allí
En cualquier página que hayamos
creado en InfinityFree, vamos a la
opción que dice “MySQL Databeses”
Este hosting nos permite tener una
base de datos por sitio. Esta BDD
estará alojada en InfinityFree. Presten
especial atención al nombre de usuario
mysql que nos proporciona el sitio y la
contraseña
CREAR BASE DE DATOS
Para empezar, haremos una BDD en InfinityFree. Tocamos en
“Create database” y nos pedirá darle un nombre. Noten que el nombre
estará antecedido por el usuario que nos asignó este hosting
Luego nos va a aparecer una opción de usar “phpMyAdmin”, el
cuál es una muy potente aplicación para administrar bases de
MySQL
Para empezar a escribir en SQL vamos a ir a la pestaña que
dice SQL
Luego de crear tablas, estas nos van a aparecer en la zona de
“Estructura”
CREAR TABLAS
El primer comando en SQL que veremos será el de crear tablas:
CREATE TABLE nombreDeMiTabla (nombreDeColumna1
tipoDeLaColumna, nombreDeColumna2 tipoDeLaColumna2, etc.)
Para que una columna sea el
atributo clave, se debe colocar
primary key al lado del tipo
TIPOS DE DATOS
Los tipos básicos de datos que
podemos tener son:
VARCHAR(tamaño): Tiene una cadena
de longitud variable (puede contener
letras, números y caracteres especiales).
El tamaño máximo se especifica entre paréntesis.
ej: ‘bases’ , ‘saenz peña 222’, ‘3’.
INT(tamaño): Números enteros. La cantidad máxima de dígitos se
puede especificar entre paréntesis. Ej: 2323,111,9, -4.
FLOAT(): Un pequeño número con un punto decimal flotante.
La cantidad máxima de dígitos se puede especificar en el
parámetro de tamaño. El número máximo de dígitos a la
derecha del punto decimal se especifica en el parámetro d
DATE : Una fecha. Formato: AAAA-MM-DD
Nota: el rango admitido es de '1000-01-01' a '9999-12-31'
DATETIME: Una combinación de fecha y hora. Formato: AAAA-
MM-DD HH: MI: SS
Nota: el rango admitido es de '1000-01-01 00:00:00' a '9999-12-
31 23:59:59'
INSERTAR DATOS
La sentencia INSERT sirve para agregar un registro nuevo dentro de
una tabla
INSERT INTO tabla donde se quiere agregar el valor
VALUES (los valores en orden según están las columnas)
VISUALIZAR TABLAS
SELECT seguido de la columna que se quiere visualizar (si se pone *
selecciona todas) FROM nombre de la tabla
Esto crea una vista de la tabla.
También podemos usar la
pestaña de Estructura
Observemos este gráfico entidad-relación y pensemoslo en
código
Ahora pasamos al código:
CREATE TABLE sucursal (nombre_sucursal varchar(45),
id_sucursal int primary key);
CREATE TABLE cuenta (id_cuenta int primary key, saldo
int, sucursal int);
CREATE TABLE cliente (cliente_id int primary key, cuenta
int, nom_apellido varchar(45));
Rellenemos las tablas con algo de información:
En clientes:
INSERT INTO cliente VALUES (022, 2315, ‘Jao Velez’);
INSERT INTO cliente VALUES (255, 1706, ‘Mariana Garcia’);
INSERT INTO cliente VALUES (184, 0135, ‘Alberto Josefo’);
INSERT INTO cliente VALUES (773, 0995, ‘Ale Altamira’);
INSERT INTO cliente VALUES (096, 2010, ‘Franco Antonio’);
Después en la otra tabla de cuentas:
En cuentas:
INSERT INTO cuenta VALUES (1706, 05877, 04);
INSERT INTO cuenta VALUES (2315, 45002, 06);
INSERT INTO cuenta VALUES (0135, 99054, 04);
INSERT INTO cuenta VALUES (2010, 22000, 06);
INSERT INTO cuenta VALUES (0995, 21500, 06);
Ahora podremos visualizar tablas con varios registros
Probemos visualizarlas usando SELECT * FROM «nombre de
Tabla». Además podemos especificar qué columnas queremos
ver en el SELECT reemplazando el asterisco por el nombre de
la columna deseada, por ejemplo:
SELECT nom_apellido FROM cliente
SELECT saldo FROM cuenta
SELECT nom_apellido, cliente_id FROM cliente
Eso es todo
Fin de la clase
Se escuchan dudas, quejas y
propuestas