jueves, 27 de enero de 2011

Base de datos 2011

1.       QUE ES UNA BASE DE DATOS
Una base de datos o banco de un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso y que permiten almacenar y acceder a los datos de forma rápida y estructurada.

2.       PARA QUE SIRVE UNA BASE DE DATOS
Las bases de datos sirven para almacenar información de forma   estructurada y rápida,   para  realizar consultas específicas o generar informe.

3.       QUE ES INDICE
El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla en una base de datos sencilla. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hacen frecuentes búsquedas.

4.       QUE ES CLAVE

Se  le llama clave o llave a uno o varios campos dentro de un registro que permite la identificación del registro inequívocamente.
La característica de la llave es que es única dentro del archivo, es decir, que no puede repetirse.

5.       QUE ES MODELO DE ENTIDAD RELACIÒN

El modelo entidad-relación es el modelo conceptual más utilizado para el diseño conceptual de bases de datos. El modelo entidad-relación está formado por un conjunto de conceptos que permiten describir la realidad mediante un conjunto de representaciones gráficas y lingüísticas.




Originalmente, el modelo entidad-relación sólo incluía los conceptos de entidad, relación y atributo. Más tarde, se añadieron otros conceptos, como los atributos compuestos y las jerarquías de generalización, en lo que se ha denominado modelo entidad-relación extendido.

6.       CONSTRAINT

Las constraints son las encargadas de asegurar la integridad referencial en la base de datos. Tipos de constraints:

• CHECK
• NOT NULL
• UNIQUE KEY
• PRIMARY KEY
• FOREIGN KEY

Check constraints:

Este tipo de constraints son usadas para asegurar reglas simples de negocio sobre el contenido de los datos en las tablas.

Constraint NOT NULL:

Se aplica a una columna y requiere valores para la  columna que protege. Por defecto, Oracle pone a NULL las columnas no introducidas de la tabla
 La constraint NOT NULL aparece en la vista del diccionario de datos DBA_CONSTRAINTS como una check


Unique constraint :

Una constraint unique protege a una o más columnas de una tabla, asegurando que no hay dos filas que contengan información duplicada en las columnas aseguradas.

Primary key:
La clave principal de una tabla relacional identifica de forma única cada registro de la tabla.  Las claves principales pueden consistir en un solo atributo o atributos múltiples en combinación.

Foreign keys :

Una foreign key protege una o más columnas de una tabla, asegurando que cada valor de la fila es, o bien nulo en su conjunto, o bien apunta a un valor de una clave única o primaria.

7.       TABLA
Sse refiere al tipo de modelado de datos, donde se guardan los datos recogidos por un programa. Las tablas se componen de dos estructuras:

Registro: es cada una de las filas en que se divide la tabla. Cada registro contiene datos de los mismos tipos que los demás registros. Ejemplo: en una tabla de nombres y direcciones, cada fila contendrá un nombre y una dirección.

Campo: es cada una de las columnas que forman la tabla. Contienen datos de tipo diferente a los de otros campos. En el ejemplo anterior, un campo contendrá un tipo de datos único, como una dirección, o un número de teléfono, un nombre, etc.

8.       REGISTRO
Se denomina registro a un conjunto de campos relacionados sobre un mismo objeto (código de publicación, nombre, responsable, fecha de publicación). El largo mínimo de un registro es de un byte y el largo máximo es de 64 kbytes.

9.       TUPLA
Una tupla es un objeto que bien puede tener datos o diversos objetos, de forma similar a una tupla definida matemáticamente. Un objeto de este tipo es conocido también como record.
Una definición más formal del anterior párrafo sería: Conjunto de elementos de distinto tipo que se guardan de forma consecutiva en memoria.

10.   SELECT
El SQL SELECCIONE instrucción devuelve un conjunto de resultados de registros de una o más tablas.
Recupera cero o más filas de más o una base de tablas, tablas temporales, o vistas de una base de datos. En la mayoría de las aplicaciones, SELECCIONAR es el más comúnmente usado de manipulación de datos del lenguaje (DML) de comandos.

Ejemplo
Dada una tabla T, la consulta SELECT * FROM T dará lugar a todos los elementos de todas las filas de la tabla que se muestra.

Tabla "T"
Consulta
Resultados
C1
C2
1
Una
2
B
SELECT * FROM T;
C1
C2
1
una
2
b

11.   UPDATE
UPDATE instrucción cambia los datos de uno o más registros en una tabla. Cualquiera de todas las filas se pueden actualizar, o un subconjunto puede ser elegido mediante una condición.

Ejemplo:
La ACTUALIZACIÓN declaración tiene la siguiente forma:
UPDATE nombre_tabla JUEGO column_name = valor [, column_name = valor ... ] [ EN condición ]

12.   DELETE
1. (Eliminar, borrar). Opción o utilidad para eliminar cualquier tipo de información. En Windows los archivos eliminados paran en la papelera de reciclaje.

2. Tipo de tecla de los teclados. Ver tecla Delete.
Borrado de datos.

La sentencia DELETE.

    Para borrar datos de una tabla, debemos utilizar la sentencia DELETE.
    La sintaxis de la sentencia DELETE es la siguiente:

DELETE FROM <nombre_tabla>
[ WHERE <condicion>];

•             Solo podemos borrar datos de una única tabla.
•             Cuando borramos datos de una vista, los estamos borrando también de la tabla. Las vistas son solo una forma de ver los datos, no una copia.

•             Si intentamos borrar un registro de una tabla referenciada por una FOREING KEY como tabla maestra, si la tabla dependiente tiene registros relacionados la sentencia DELETE fallará.

13.   DROP
La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si está abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad referencial (si interviene como tabla padre en una relación y tiene registros relacionados)
.
La sintaxis es la siguiente:

Ejemplo:
DROP TABLE tab1

14.   FUNCIONES DE GRUPO (TODAS)
Funciones de Grupo (I)

·    AVG ([DISTINCT | ALL] n)
o    Valor promedio de n.
·    COUNT ({* | [DISTINCT | ALL |] expr})
o    Cantidad de filas con expr no nulo. Con * se cuentan todas las filas incluyendo duplicadas y valores nulos.
·    MAX ([DISTINCT | ALL] expr)
o    Valor máximo de expr.
·    MIN ([DISTINCT | ALL] expr)
o    Valor mínimo de expr., ignorando los valores nulos.
S.Q.L.
Funciones de Grupo (II)
·    STDDEV ([DISTINCT | ALL] n)
o    Desviación estándar de n, ignorando los valores nulos.
·    SUM ([DISTINCT | ALL] n)
o    Suma los valores de n, ignorando los valores nulos.
·    VARIANCE ([DISTINCT | ALL] n)
o    Varianza de n, ignorando los valores nulos
·    Estas funciones no se pueden usar en la cláusula WHERE.
S.Q.L.

Funciones de grupo y Nulos
·    Las funciones de grupo IGNORAN los valores nulos de las columnas.
·    ¿Qué resultado obtendríamos se calculamos la media de la comisión de los empleados?

S.Q.L.
NVL y funciones de grupo
·    Esta media no es correcta porque se han ignorado las filas cuya comisión es nula.
·    Solución: Uso de la función NVL para forzar a las funciones de grupo que admitan los valores nulos.


S.Q.L.
Sintaxis de GROUP BY



·    Crea grupo de datos, por lo tanto se pueden usar funciones de grupo para devolver información resumida para cada grupo.
S.Q.L.
Uso de GROUP BY (I)
·    Si se incluye una función de grupo en una cláusula SELECT, no se puede seleccionar resultados individuales a menos que la columna aparezca en la cláusula GROUP BY.
·    No se pueden usar alias en GROUP BY.
·    Por defecto, tras un GROUP BY, las filas se ordenan de forma ascendente
·    Exempla:
>SQL> SELECT lepton, AVG(sal) FROM emp GROUP BY lepton;
S.Q.L.
Uso de GROUP BY (II)
·    La columna referenciada por GROUP BY no es necesario seleccionarla.
·    Todas las columnas mencionadas en la SELECT que no son funciones de grupo, tienen que estar en la cláusula GROUP BY.
·    Se pueden formar agrupaciones sobre múltiples columnas:
>SQL> SELECT deptno, job, sum(sal) FROM emp GROUP BY deptno, job;
S.Q.L.
Consultas no válidas
·    Cualquier columna o expresión en la SELECT que no sea una función agregada, tiene que ser especificada en la cláusula GROUP BY
SQL> SELECT deptno, COUNT(ename) FROM emp;
·    No puede usar una cláusula WHERE para restringir grupos. Utilice la cláusula HAVING para restringir grupos.
SQL> SELECT lepton, AVG(sal) FROM emp WHERE AVG(sal) > 2000 GROUP BY lepton;
S.Q.L.
Cláusula HAVING
·    Use la cláusula HAVING para restringir grupos:
o    Los registros son agrupados
o    Se aplica la función de grupo
o    Los grupos que se corresponden con la cláusula HAVING se visualizan (condición TRUE).
·    HAVING puede preceder a GROUP BY, pero se recomienda que se ponga en primer lugar GROUP BY porque es más lógico. (1º se calculan grupos y posteriormente se calcula HAVING sobre esos gpos.).
S.Q.L.
Sintaxis de HAVING


15.   MY ISAM
Es la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL. Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones.

Cada tabla de tipo MyISAM se guarda en tres archivos. Los archivos tienen el nombre de la tabla y una extensión que indica el tipo de archivo,
.frm almacena la definición de la tabla
.MYD (MyData) contiene los registros de la tabla
.MYI (MyIndex) contiene los índices de la tabla

16.   INNODB
InnoDB es una tecnología de almacenamiento de datos de código abierto para la base de datos MySQL, incluidos como formato de tabla estándar en todas las distribuciones de MySQL AB a partir de las versiones 4.0. Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM, la anterior tecnología de tablas de MySQL, si bien el mejor rendimiento de uno u otro formato dependerán de la aplicación específica.

17.   DICCIONARIO DE DATOS
Un diccionario de datos es un conjunto de metadatos que contiene las características lógicas y puntuales de los datos que se van a utilizar en el sistema que se programa, incluyendo nombre, descripción, alias, contenido y organización.

En un diccionario de datos se encuentra la lista de todos los elementos que forman parte del flujo de datos de todo el sistema. Los elementos más importantes son flujos de datos, almacenes de datos y procesos. El diccionario de datos guarda los detalles y descripción de todos estos elementos.

18.   CLAVE FORANEA
Las claves foráneas son definidas bajo el estandard SQL a través de la restricción FOREIGN KEY. La sintaxis para agregar tal restricción a una tabla existente es definida en SQL: 2003 según se muestra debajo. Si se omite la lista de columnas en la cláusula REFERENCES implica que la clave foránea tendrá que referenciar o relacionarse con la clave primaria de la tabla referenciada.

ALTER TABLE <nombre tabla> 
   ADD [CONSTRAINT <nombre restricción>] 
      FOREIGN KEY (<expresión columna> [, <expresión columna>]...)
      REFERENCES <nombre tabla> [(<expresión columna> [, <expresión columna>]...)]
      [ON UPDATE <acción>]
      [ON DELETE <acción>];

19.   CLAVE UNICA
Cada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, es decir, no pueden existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos. Este conjunto de campos se llama clave única.
Pueden existir varias claves únicas en una determinada tabla, y a cada una de éstas suele llamársele candidata a clave primaria.
20.   CLAVE COMPUESTA

Una clave compuesta es una clave que consta de dos o más atributos que identifican de forma única una ocurrencia de entidad. Cada atributo que constituye la clave compuesta es una clave simple en su propio derecho.

21.   INSERT
Un SQL INSERTAR sentencia añade uno o más registros a un solo cuadro en una base de datos relacional.

Ejemplo

INSERT INTO tabla ( columna1 , [ Columna2, ... ]) VALUES ( valor1 [ valor2, ... ])

22.   WHERE
DÓNDE cláusula en SQL especifica que SQL Lenguaje de manipulación de datos (LMD) declaración sólo debe afectar a las filas que cumplen los criterios especificados. Los criterios se expresan en forma de predicados. DONDE cláusulas no son cláusulas obligatorias de SQL DML, pero debería utilizarse para limitar el número de filas afectadas por un LMD instrucción SQL o devueltos por una consulta.

23.   NORMALIZACIÒN DE BASES DE DATOS
Las formas normales son aplicadas a las tablas de una base de datos. Decir que una base de datos está en la forma normal N es decir que todas sus tablas están en la forma normal N.
En general, las primeras tres formas normales son suficientes para cubrir las necesidades de la mayoría de las bases de datos.

 Primera forma normal:
Una tabla está en Primera Forma Normal si:
§  Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos.
§  La tabla contiene una clave primaria.
§  La clave primaria no contiene atributos nulos.
§  No debe de existir variación en el número de columnas.
§  Los Campos no clave deben identificarse por la clave (Dependencia Funcional)
Una tupla no puede tener múltiples valores en cada columna. Los datos son atómicos. (Si a cada valor de X le pertenece un valor de Y viceversa)
Esta forma normal elimina los valores repetidos dentro de una BD

Segunda forma normal:
Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales. (Todos los atributos que no son clave principal deben depender únicamente de la clave principal).

Tercera forma normal:
La tabla se encuentra en 3FN si es 2FN y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave.
Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y.
24.   BASE DE DATOS RELACIONALES
Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y a través de dichas conexiones relacionar los datos de ambas tablas.

25.   BACKUP DE UNA BASE DE DATOS
Handy Backup es la solución backup más redituable para hacer copias de seguridad y recuperación de bases de datos. Efectivamente Handy Backup es igualmente bueno para hacer backup de MSSQL, Oracle, MS Access, Postgre SQL, DB2, FoxPro, etc.

26.   HACER UN EJEMPLO DE UN DICCIONARIO DE DATOS
Un diccionario de datos es un conjunto de metadatos que contiene las características lógicas y puntuales de los datos que se van a utilizar en el sistema que se programa, incluyendo nombre, descripción, alias, contenido y organización.
El diccionario de datos guarda los detalles y descripción de todos estos elementos.

Ejemplo
Masa = * masa del paciente al ingresar al hospital *
Unidad: kilo, rango: 2-150 * Altura = * unidad: cm, rango: 100-200 * Sexo = * valores: [F|M] *



 27. REALIZAR UNA TABLA EN EXCEL CON TODOS LOS TIPOS DE DATOS DE MYSQL

Los tipos de datos que puede haber en un campo, se pueden agrupar en tres grandes grupos:

Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que están en coma flotante (con decimales) y los que no.

TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255.

Bit ó Bool: un número entero que puede ser 0 ó 1.

SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535.

MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215.

Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295.

BigInt: número entero con o sin signo. Con signo el rango de valores va desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615.

Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38.

xReal, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308.

Decimal, Dec, Numeric: Número en coma flotante desempaquetado. El número se almacena como una cadena.


Tipo de Campo
Tamaño de Almacenamiento

TINYINT
1 byte

SMALLINT
2 bytes

MEDIUMINT
3 bytes

INT
4 bytes

INTEGER
4 bytes

BIGINT
8 bytes

FLOAT(X)
4 ú 8 bytes

FLOAT
4 bytes

DOUBLE
8 bytes

DOUBLE PRECISION
8 bytes

REAL
8 bytes

DECIMAL(M,D
M+2 bytes sí D > 0, M+1 bytes sí D = 0

NUMERIC(M,D)
M+2 bytes if D > 0, M+1 bytes if D = 0




A la hora de almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que el día esta comprendido entre 0 y 31.

Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-dia
DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos

TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo:



Tamaño
Formato
14
AñoMesDiaHoraMinutoSegundo aaaammddhhmmss
12
AñoMesDiaHoraMinutoSegundo aammddhhmmss
8
ñoMesDia aaaammdd
6
AñoMesDia aammdd
4
AñoMes aamm
2
Año aa


Time: almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'.
Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.


Tipo de Campo
Tamaño de Almacenamiento
DATE
3 bytes
DATETIME
8 bytes
TIMESTAMP
4 bytes
TIME
3 bytes
YEAR
1 byte



Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres.
VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres.
Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los tipo Test y los tipo BLOB (Binary large Object)
La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo test se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta.
Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros.
TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres.
Blob y Text: un texto con un máximo de 65535 caracteres.
MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres.
LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tener un máximo de 16 Mb.
Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535 valores distintos
Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.

Tipo de campo
Tamaño de Almacenamiento
CHAR(n)
n bytes
VARCHAR(n)
n +1 bytes
TINYBLOB, TINYTEXT
Longitud+1 bytes
BLOB, TEXT
Longitud +2 bytes
MEDIUMBLOB, MEDIUMTEXT
Longitud +3 bytes
LONGBLOB, LONGTEXT
Longitud +4 bytes
ENUM('value1','value2',...)
1 ó dos bytes dependiendo del número de valores
SET('value1','value2',...)
1, 2, 3, 4 ó 8 bytes, dependiendo del número de valores

Diferencia de almacenamiento entre los tipos Char y VarChar

Valor
CHAR(4)
Almace
VARCHAR(4)
Almace
namiento
namiento
''
''
4 bytes
"
1 byte
'ab'
'ab '
4 bytes
'ab'
3 bytes
'abcd'
'abcd'
4 bytes
'abcd'

'abcdefgh'
'abcd'
4 bytes
'abcd'
5 bytes