Logo Studenta

QA E13- Base de datos - Sistema MySQL I

¡Este material tiene más páginas!

Vista previa del material en texto

Módulo 4 / Encuentro 13/20
Base de datos
SistemaMySQL I
OBJETIVOS DEL MÓDULO 4
¿Qué habilidades desarrollarás?
● Aprendizaje cooperativo entre pares
● Atención al detalle para el manejo de base de datos
¿Qué herramientas técnicas aprenderás?
● Tipos y motores de bases de datos
● SQL
● CRUD
*No es necesario solicitar permiso de edición del documento, si
deseas puedes crear una copia �Archivo > Crear una copia]*
¡Te damos la bienvenida al encuentro de trabajo N°13!
Tómense unos minutos para intercambiar dudas e inquietudes de los temas
vistos hasta ahora... ¿Necesitan llamar a un mentor? ¡Este es el momento!
A lo largo de esta guía, la información se complejiza. Presten atención,
revisen contenidos previos, hagan preguntas y cooperen entre ustedes.
¿Comenzamos?
MATERIAL DE LECTURA
Introducción
Llegó el momento de diseñar una tabla... ¿Qué aspectos hay que tener en
cuenta? Los desarrolladores deben ser estrictos y cuidadosos al diseñarlas,
para que guarden sólo aquellos datos y caracteres que sean estrictamente
necesarios para la información que se desea guardar.
La correcta decisión en el modelado de tablas no solamente cumple una
función de seguridad y consistencia de la base, sino que también se
relaciona con la velocidad con la que se podrán ejecutar las consultas.
Como tester o QA, es importante que consideres siempre poner a prueba
todos los puntos de entrada para el guardado de información en base de
datos.
Secreto de la industria 1�
Revisa que cada campo de formulario y cada input sólo acepte
el tipo de dato que corresponde al tipo de campo que estás
probando.
¿NECESITAS UN EJEMPLO?
Un campo “email” solo debería aceptar texto con el siguiente formato:
carácteres alfanuméricos y / o algunos tipos de símbolos con al menos un
2
“@” y un “.” entre medio. Lo que sigue después del “.” podría ser una lista
específica de extensiones, tales como .com.ar, .mx. .de, .com, etc. No
deberían ser aceptados .js o .exe.
Ejercicio #1
¿Por qué les parece que el ejemplo anterior debería ser así?
Debatan en equipo y pueden revisar la solución aquí
Es imprescindible realizar pruebas para verificar que los campos (que se
utilizan como inputs para guardar información en base de datos) sólo
admiten el ingreso de los tipos y cantidad de datos correspondientes a lo
que se debe guardar en cada uno.
Tipos de datos
A continuación veremos tres tipos de datos que pueden guardarse en una
tabla y sus características principales.
Cadenas de texto-String
Nombre Descripción
CHAR Almacena cadenas de longitud fija. [puede abarcar entre 1 a 255
caracteres]
El campo ocupará siempre el máximo de longitud que se le haya
asignado, aunque el tamaño del dato ingresado sea menor.
VARCHAR Almacena cadenas de longitud variable en el rango 1�255. Defino
un máximo, pero la longitud de la cadena guardada puede ser
menor.
TINYTEXT Texto de longitud variable de hasta 255 caracteres.
TEXT Texto de longitud variable de hasta 65535 caracteres
MEDIUMTEXT Texto de longitud variable de hasta 16777215 caracteres
LONGTEXT Texto de longitud variable de hasta 4.294.967.295 caracteres
BLOB Dato binario que puede almacenar archivos o texto. �TINYBLOB,
3
https://docs.google.com/document/d/1pNSmRJJDsJD9Ih8LfvI7ePdrZitzNysuBRdnSr1xTkw/edit?usp=sharing
MEDIUMBLOB, LONGBLOB� Las búsquedas en un tipo blob son
case sensitive
Numérico
Nombre Descripción
BIT o BOOL 0 , 1 / False, True
TINYINT Entero. Rango de valores: ��128; 127� – If unsigned (sin signo) rango
�0; 255�
SMALLINT Enteros. Rango ��32768; 32767�. If Unsigned �0; 65535�
MEDIUMINT Enteros. Rango ��8388608;8388607�. Unsigned �0; 429967295�
INT Enteros. ��2.147.463.848;2.147.483.647�. Unsigned �0;
4.294.967.295�
BIGINT Enteros. ��9.223.372.036.854.775.808;9.223.372.036.854.775.807�.
Unsigned �0; 18.446.744.073.709.551.615�
FLOAT (m,d) Decimales. Se puede especificar cuántos dígitos (m) y cuántos en
la parte decimal (d)
DOUBLE Decimal
DECIMAL Almacena los números como cadenas
Fecha
Nombre Descripción
DATE Fecha. Formato por defecto: YYY MM DD desde 0000 00 00 a 999
12 31
DATETIME Fecha y hora. Formato: año-mes-dia hh:mm:ss Rango: 1001�01�01
00�00�00 hasta 9999�12�31 23�59�59
TIME Hora. Rango: �838 hh, 59m 59s a 838h 59m 59s Formato: hh:mm:ss
YEAR Año. Rango 1901 a 2155
Como parte del equipo de testing podrás tener acceso a la base de datos o
al menos a la documentación creada para el desarrollo del sistema (por
ejemplo diagramas entidad-relación �DER��
4
Saber en qué tabla se guardarán los datos que serán ingresados a través
de la interfaz de usuario �UI� de la aplicación que tendrás que probar y
conocer cómo fue construida la tabla (es decir qué tipo de datos soporta)
es información valiosa para la creación de casos de prueba.
Para la detección temprana de defectos -durante la etapa estática- podrías
revisar como la construcción de las tablas, tipos y longitud de datos que
podrá capturar cada campo.
En esa etapa será momento de poner a prueba las especificaciones y
señalar un posible problema.
¿NECESITAS UN EJEMPLO?
Podrías notar que todos los campos van a soportar VARCHAR�255, es decir
cadenas de texto muy largas que pueden no ser necesarias para todos los
campos.
¡MANOS A LA OBRA!
Ejercicio #2
Marca V o F� Justifica y compara tus respuestas con las de tus
compañeros.
● Para que exista una relación se requiere de una llave foránea. ¿V o F?
● Pueden existir relaciones entre tablas de muchos a muchos. ¿V o F?
● En un diagrama ERD con una llave dorada se identifica la llave
foránea. ¿V o F?
● Existen cuatro tipos de relaciones entre tablas. ¿V o F?
Puedes ver la solución aquí
5
https://docs.google.com/document/d/1FXMiwWVQi7WbxxxN_DSCEBOs5Tqf9DyvRkEHy4dvTb4/edit?usp=sharing
¿Qué esMySQL?
MySQL es un sistema de gestión de bases de datos relacionales �SGBD�
multihilo y multiusuario de código abierto basado en SQL.
Fue diseñado y optimizado para aplicaciones web y puede ejecutarse en
cualquier plataforma. A medida que surgían nuevos y diferentes requisitos
con Internet, MySQL se convirtió en la plataforma elegida por los
desarrolladores web y las aplicaciones basadas en la web. Debido a que
está diseñada para procesar millones de consultas y miles de
transacciones. La flexibilidad bajo demanda es la característica principal de
MySQL.
Las principales ventajas de este Sistema Gestor de Bases de datos son:
● Facilidad de uso y gran rendimiento.
● Facilidad para instalar y configurar.
● Soporte multiplataforma.
● Soporte SSL.
La principal desventaja es la escalabilidad, es decir, no trabaja de manera
eficiente con bases de datos muy grandes que superan un determinado
tamaño.
Secreto de la industria 2�
¿Porqué SQL para Testers / QA’s?
● Entender cómo funciona el sistema / tecnología mejora
nuestras capacidades de testear
● Amplía nuestras herramientas de debugging
● Permite setear data de testing con más rapidez
● Empleabilidad
Lenguaje de consulta estructurado SQL
SQL es un acrónimo en inglés para Structured Query Language,
un lenguaje de Consulta Estructurado.
6
Es un tipo de lenguaje de programación que permite acceder, manipular y
descargar datos de una base de datos mediante comandos, mejor conocido
como consultas �Querys).
Tiene capacidad de hacer cálculos avanzados y álgebra. Es utilizado en la
mayoría de empresas que almacenan datos en una base de datos. Ha sido y
sigue siendo el lenguaje de programación más usado para bases de datos
relacionales.
El lenguaje SQL también se usa para controlar el acceso a datos y para la
creación y modificación de esquemas de Base de datos. SQL utiliza los
términos tabla, fila y columna para los términos relación, tupla y atributo del
modelo relacional formal, respectivamente. Por lo tanto, es posible utilizar
todos estos términos indistintamente.
Existen varios tipos de sentencias SQL y se clasifican en:
● Sentencias de manipulación de datos �DML�
● Sentencias de Definición de datos �DDL�
● Sentencias de control de acceso o control de transacciones �DCL�
Veamos en profundidad cadauna de estas:
Lenguaje de Definición de Datos �DDL��
Permite crear y definir nuevas bases de datos, campos e índices.
● CREATE: Crea nuevas tablas, campos e índices.
● DROP: Elimina tablas e índices.
● ALTER: Modifica las tablas agregando campos o cambiando la
definición de los campos.
Lenguaje de Manipulación de Datos �DML��
Permiten generar consultas para ordenar, filtrar y extraer datos de la base
de datos.
● SELECT: Consulta registros de la base de datos que satisfagan un
criterio determinado.
● INSERT: Carga lotes de datos en la base de datos en una única
operación.
● UPDATE: Modifica los valores de los campos y registros
especificados.
7
● DELETE: Elimina registros de una tabla de una base de datos.
Control de acceso �DCL��
Permiten generar consultas para ordenar, filtrar y extraer datos de la base
de datos.
● COMMIT: Es para commitear / llevar a cabo / confirmar una
transacción
● ROLLBACK: Deshace una transacción. No todos los resultados de las
transacciones se pueden deshacer
● REVOKE: Quita privilegios
● GRANT: Asigna privilegios
● START: Inicia una transacción
Utilizando una herramienta visual como Workbench es posible que no se
necesite escribir sentencias DCL, ya que la herramienta tiene una interfaz
para ejecutar esas sentencias de manera fácil e intuitiva con opciones
visuales.
Si estuvieras consultando una base de datos desde un terminal, entonces sí
utilizarías algunas de las sentencias mencionadas.
Scripts
Los scripts son fragmentos de código. Podremos encontrar scripts de
distintos lenguajes y con diversos objetivos. Cuando hablamos de scripts
de bases de datos éstos contienen consultas específicas a la base de datos
que se utilizan para compartir con otras personas. En general
encontraremos dos funciones principales:
● Scripts para compartir bases de datos. Al ejecutar este tipo de
scripts podremos obtener una misma base de datos que otra
persona.
● Scripts para compartir consultas a una base de datos específica. Al
ejecutar este tipo de scripts podremos obtener consultas que
podrían guardarse en nuestros ordenadores en caso de ser muy
complejas o utilizarse a diario.
8
TIP😀 En este módulo utilizaremos mucho los scripts para realizar
ejercitación.
Encontrarás más material al respecto conforme avanzamos en la guía.
Consultas de Definición de Datos �DDL�
Estas son las consultas que vamos a escribir en nuestro software de base
de datos para crear, actualizar, borrar, acceder y manipular información
de nuestra base de datos.
Consultas para crear
Estas son las cuatro opciones de sentencias para crear una base de datos
nueva:
● CREATE DATABASE nombre_base_datos
● CREATE SCHEMA nombre_base_datos
● CREATE DATABASE �IF NOT EXISTS� nombre_base_datos
● CREATE SCHEMA �IF NOT EXISTS� nombre_base_datos
¡Atención! CREATE SCHEMA o CREATE DATABASE son sinónimos.
Algunas aclaraciones:
1. Para poder crear una base de datos, el usuario que la crea debe
tener privilegios de creación asignados.
2. IF NOT EXISTS significa: SI NO EXISTE� la cláusula IF EXISTS
devuelve una Advertencia en caso de que no exista la tabla a
eliminar.
3. No se pueden crear dos bases de datos con el mismo nombre en el
mismo servidor.
TIP😀 AfortunadamenteMySQL está muy bien documentado. Puedes
acceder al manual y buscar en la documentación por palabra clave en su
página oficial https://dev.mysql.com/doc/
9
https://dev.mysql.com/doc/
Veamos cómo crear una tabla:
1. CREATE TABLE
CREATE TABLE crea una tabla con el nombre que le asignes. La sentencia
puede ser tan simple como:
CREATE TABLE tabla_test (1
campo1,
campo2,
campo3�
O tener ciertas opciones y restricciones para sus campos, lo que la hace
ver un poco más compleja.
CREATE �TEMPORARY� TABLE �IF NOT EXISTS� nombre_de_tabla (
campo1 tipoDato �NULL/NOT NULL� | CHECK (expresiónLógica) | [
DEFAULT expresiónConstante],
campo2 tipoDato �NULL/NOT NULL� | CHECK (expresiónLógica) | [
DEFAULT expresiónConstante ],
campo-N,
PRIMARY KEY(campo_llave),
FOREIGN KEY (campo_llave) REFERENCES tabla2 (campo_llave-tabla2��
1 El paréntesis de apertura se escribe justo luego del nombre de la tabla. Toda la sentencia
está en la misma línea en términos del programa que la lee y ejecuta. Ordenamos las
sentencias largas en renglones solamente para mejor legibilidad para el humano.
Estrictamente todo va en una sola línea, pero si le agregas enter el programa que ejecuta el
código no ve el enter. No ve el salto de línea. Entonces nosotros podemos poner tantos
saltos de línea como creamos conveniente para mejor legibilidad.
10
¿NECESITAS UN EJEMPLO?
CREATE TABLE Vehiculos (
idVehiculo INT�6� UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY
KEY,
Nombre VARCHAR�20� NOT NULL,
Precio DOUBLE,
Marca VARCHAR�20� NOT NULL,
Stock INT�6� NOT NULL,
Publicado BOOLEAN DEFAULT false
);2
El ejemplo de arriba crea una tabla de nombre “Vehiculos” con 6 columnas.
La columna idVehiculo admite solamente hasta 6 enteros positivos,
no puede quedar vacía, se auto completa e incrementa
automáticamente cada vez que se agrega un registro a la tabla y es
la clave primaria de la tabla.
Las columna nombre y marca admiten cadenas de texto de hasta 20
caracteres y no puede quedar vacía
La columna precio admite decimales
La columna stock admite solamente números enteros y no puede
quedar vacía
La columna publicado solo admite el tipo de dato es booleano, es
decir 1 y 0. 0 es considerado Falso y 1 es considerado Verdadero.
2 El primer paréntesis luego del nombre de la tabla, salto de línea, atributos y el paréntesis
de cierre puede ir en una línea abajo al final de todo.
11
Nota para curiosos
Como QA es posible que nunca necesites ni crear una base de datos ni crear
tablas nuevas. Sin embargo es útil conocer para qué sirven estas sentencias
y qué significan cada uno de sus componentes. Esto te permitirá interpretar
mejor la documentación debes revisar.
Si queres leer todo sobre la sentencia CREATE TABLE en MySQL 8 podes ver
https://dev.mysql.com/doc/refman/8.0/en/create-table.html
Atributos de las columnas - CONSTRAINTS
Los Constraints por su nombre en inglés o restricciones (por su traducción)
son atributos que se usan para especificar reglas que deberán cumplir los
datos ingresados en cada columna.
● DEFAULT: Esta restricción asigna un valor específico a una columna
cuando éste, no fue explícitamente proporcionado para tal columna
en una sentencia "INSERT" o de adición de un nuevo registro en la
tabla.
● CHECK: Especifica los valores de datos que el DBMS acepta le sean
ingresados para una columna.
● REFERENCES: Específica los valores de datos que el DBMS acepta le
sean ingresados para una columna.
● PRIMARY KEY: Se usa para identificar los datos de qué columnas se
utilizarán como llave primaria. Tener una llave primaria de la columna
no contendrá valores duplicados. Los valores nulos no están
permitidos para este tipo de restricción.
● UNIQUE: indica que la columna no tendrá ningún valor repetido.
Similar a Primary Key, pero a diferencia de ésta última, permite un
valor nulo, y puede haber varias columnas de este tipo en una tabla.
● FOREIGN KEY� En esta restricción se define una llave foránea, una
columna o combinación de columnas en las cuales su valor debe
corresponder al valor de la llave primaria en la misma u en otra tabla.
● NOT NULL: indica que una columna no puede ser NULL. NULL
constituye un valor en sí (valor desconocido). No es vacío en un
campo de tipo texto, ni 0 en un campo numérico.
● BINARY: indica que los valores en esta columna se almacenarán en
modo binario, respetando mayúsculas y minúsculas.
12
https://dev.mysql.com/doc/refman/8.0/en/create-table.html
● UNSIGNED: indica que esta columna no usará un byte para el signo, o
sea que permitirá almacenar números positivos solamente.
● ZERO FILL: indica que el contenido del campo se completará con
ceros si es numérico.
● AUTO_INCREMENTO: el motor de base de datos incrementará
automáticamente su valor. Una tabla sólo puede tener un campo
autoincremental y éste tiene que formarparte de la PK
● ## ENUM >>: es como un single option field. permite hacer que solo
puedas elegir entre x y z opciones
Extra credits:
Si queres leer más sobre este tema podes ver
https://www.w3schools.com/sql/sql_constraints.asp
¡Hora de cerrar!
¡¡Bravo!! Seguimos profundizando en aspectos teóricos de este
módulo. No es fácil, ¡lo sabemos!... Estamos seguros de que pronto
dominarás todos los contenidos vistos hasta aquí.
¡Llegó el momento de los pulsos. ¿Te gustaría recibir alguno? Demuéstrales
a tus compañeros qué estás presente para promover su aprendizaje y el
tuyo también.
13
https://www.w3schools.com/sql/sql_constraints.asp

Continuar navegando