miércoles, 8 de junio de 2016

Expandir Esquemas (motor de base de datos)

Esquemas (motor de base de datos)


Un esquema es un contenedor que contiene tablas, vistas, procedimientos, etc. Se encuentra dentro de una base de datos, que a su vez está dentro de un servidor. Estas entidades se acomodan como cajas anidadas. El servidor es la caja más externa y el esquema la más interna. Contiene todos los asegurables que se mencionan a continuación. Pero no puede contener otra caja.


Para crear un esquema de forma visual
  1. En el Explorador de objetos, expanda la carpeta Bases de datos.
  2. Expanda la base de datos en la que se va a crear el esquema de la misma.
  3. Haga clic con el botón secundario en la carpeta Seguridad, seleccione Nuevo y, a continuación, seleccione Esquema.
  4. En el cuadro de diálogo Esquema - Nuevo, en la página General, escriba un nombre para el nuevo esquema en el cuadro Nombre de esquema.
  5. En el cuadro Propietario del esquema, escriba el nombre del usuario o rol de base de datos que va a poseer el esquema. Como alternativa, haga clic en Buscar para abrir el cuadro de diálogo Buscar roles y usuarios.
  6. Click en aceptar

Para crear un esquema TransactSQL
  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
  2. En la barra de Estándar, haga clic en Nueva consulta.
  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.


  1. USE AdventureWorks2012;
    GO
    -- Creates the schema Sprockets owned by Annik that contains table NineProngs. 
    -- The statement grants SELECT to Mandar and denies SELECT to Prasanna.
    
    CREATE SCHEMA Sprockets AUTHORIZATION Annik
        CREATE TABLE NineProngs (source int, cost int, partnumber int)
        GRANT SELECT ON SCHEMA::Sprockets TO Mandar
        DENY SELECT ON SCHEMA::Sprockets TO Prasanna;
    GO
    
    

Creacion de Base de Datos y Tablas

Crear una base de datos

Se le llama base de datos a los bancos de información que contienen datos relativos a diversas temáticas y categorizados de distinta manera, pero que comparten entre sí algún tipo de vínculo o relación que busca ordenarlos y clasificarlos en conjunto.
Requiere el permiso CREATE DATABASE en la base de datos maestra, o los permisos CREATE ANY DATABASE o ALTER ANY DATABASE.
Para mantener el control del uso del disco en una instancia de SQL Server, el permiso para crear bases de datos suele limitarse a un número reducido de cuentas de inicio de sesión.

Usar SQL Server Management Studio

  1. Para crear una base de datos
  2. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos de SQL Server y expándala.
  3. Haga clic con el botón secundario en Bases de datos y, a continuación, en Nueva base de datos.
  4. En Nueva base de datos, especifique un nombre de base de datos.
  5. Si desea crear la base de datos aceptando todos los valores predeterminados, haga clic en Aceptar; de lo contrario, continúe con siguientes los pasos opcionales.
  6. Para cambiar el nombre de nombre del propietario, haga clic en (…) para seleccionar otro.
  7. Para cambiar los valores predeterminados de los archivos de datos y de registro de transacciones principales, en la cuadrícula Archivos de la base de datos, haga clic en la celda correspondiente y especifique el nuevo valor. Para más información, consulte Agregar archivos de datos o de registro a una base de datos.
  8. Para cambiar la intercalación de la base de datos, seleccione la página Opciones y una intercalación de la lista.
  9. Para cambiar el modelo de recuperación, seleccione la página Opciones y un modelo de recuperación de la lista.
  10. Para cambiar opciones de base de datos, seleccione la página Opciones y modifique las opciones de la base de datos. Para obtener una descripción de cada una de las opciones, vea Opciones de ALTER DATABASE SET (Transact-SQL).
  11. Para agregar un nuevo grupo de archivos, haga clic en la página Grupos de archivos. Haga clic en Agregar y especifique los valores para el grupo de archivos.
  12. Para agregar una propiedad extendida a la base de datos, seleccione la página Propiedades extendidas.
  13. En la columna Nombre, escriba un nombre para la propiedad extendida.
  14. En la columna Valor, escriba el texto de la propiedad extendida. Por ejemplo, especifique una o varias instrucciones que describan la base de datos.
  15. Para crear la base de datos, haga clic en Aceptar.

Para crear una base de datos


  1. Conéctese con el Motor de base de datos.
  2. En la barra Estándar, haga clic en Nueva consulta.
  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. Este ejemplo crea la base de datos Sales. Debido a que no se usa la palabra clave PRIMARY, el primer archivo (Sales_dat) se convierte en el archivo principal. Como no se especifica MB ni KB en el parámetro SIZE del archivo Sales_dat, se utiliza MB y el tamaño se asigna en megabytes. El tamaño del archivo Sales_log se asigna en megabytes porque el sufijo MB se ha indicado explícitamente en el parámetro SIZE.

USE master ;  
GO  
CREATE DATABASE Sales  
ON   
( NAME = Sales_dat,  
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\saledat.mdf',  
    SIZE = 10,  
    MAXSIZE = 50,  
    FILEGROWTH = 5 )  
LOG ON  
( NAME = Sales_log,  
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\salelog.ldf',  
    SIZE = 5MB,  
    MAXSIZE = 25MB,  
    FILEGROWTH = 5MB ) ;  
GO  

Tabla 
en las bases de datos, se refiere al tipo de modelado de datos, donde se guardan los datos recogidos por un programa. Su estructura general se asemeja a la vista general de un programa de hoja de cálculo.
Una tabla es utilizada para organizar y presentar información. Las tablas se componen de filas y columnas de celdas que se pueden rellenar con textos y gráficos.
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.
Ejemplo:
Las columnas de la tabla son ProductID, ProductName, Price y ProductDescription. La columna ProductID es la clave principal de la tabla.int, varchar(25), money y text son todos los tipos de datos. Solo las columnas Price y ProductionDescription pueden no tener datos cuando se inserta o cambia una fila. Esta instrucción contiene un elemento opcional (dbo.) denominado esquema. El esquema es el objeto de base de datos propietario de la tabla. Si es un administrador, dbo es el esquema predeterminado.dbo hace referencia al propietario de la base de datos.

CREATE TABLE dbo.Products
   (ProductID int PRIMARY KEY NOT NULL,
    ProductName varchar(25) NOT NULL,
    Price money NULL,
    ProductDescription text NULL)
GO

Tipos de Datos

TipoBytesDescripción
INT o INTEGER4Números enteros. Existen otros tipos de mayor o menor longitud específicos de cada base de datos.
DOUBLE o REAL8Números reales (grandes y con decimales). Permiten almacenar todo tipo de número no entero.
CHAR1/caracterAlfanuméricos de longitud fija predefinida
VARCHAR1/caracter+1Alfanuméricos de longitud variable
DATE3Fechas, existen multiples formatos específicos de cada base de datos
BLOB1/caracter+2Grandes textos no indexables
BIT o BOOLEAN1Almacenan un bit de información (verdadero o falso)

Funciones

Funciones

Inserción de datos

insert into nombre_tabla (lista_atributos)
values (lista_valores)

  • Introduce información en la tabla y atributos indicados.
  • El orden y el tipo de los tributos debe coincidir con el orden y tipo de los valores.
  • los valores se pueden obtener mediante una consulta.
  • si un atributo no se indica toma valor null.
  • Si se omite la lista de atributos, los valores se almacenan de acuerdo al orden de definición de los mismo en el create table.
  • Los tipos de la lista de valores deben coincidir con los tipos de definición en el create table.


Modificación de datos

UPDATE nombre_tabla
SET nombre_atributo= nuevo_valor,....
WHERE condicion;

  • Actualiza en la tabla indicada los valores del atributo siempre y cuando se cumpla la condición especificada.
  • Los valores se pueden obtener mediante una sub consulta o mediante formulas matemáticas
  • Si no hay condición se actualizan todas las filas de la tabla.


Borrado de Datos

DELETE nombre_tabla
WHERE condición;
  • Borra la tabla las tuplas que cumplen cierta condición.
  • Si no hay condición se borran todas las filas de la tabla.
  • A diferencia de DROP TABLE no borra la estructura de la tabla.



Consultas de Selección
  Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable.
  Consultas básicas
La sintaxis básica de una consulta de selección es la siguiente:

SELECTCampos
FROMTabla

En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo:

SELECTNombre, Teléfono
FROMClientes

Esta consulta devuelve un recordset con el campo nombre y teléfono de la tabla clientes.

Tambien tenemos algunos otros comanos como:


SELECT lista_atributos
FROM lista_tablas
WHERE condición
GROUP BY lista_atributos
HAVING condición
ORDER BY lista_Atributos
  • Las únicas partes obligatorias son SELECT y FROM, el resto son opcionales 
    • Si aparecen deben ir en orden que pertennecen en al sentencia
    • HAVING solo se puede aparecer si hay un GROUP BY


Operadores y Operadores logicos

ANDEs el "y" lógico. Evalua dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.
OREs el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.
NOTNegación lógica. Devuelve el valor contrario de la expresión.
Operadores de Comparación
   Hay nueve operadores de comparación en SQL:
=Igual
<>Distinto
<Menor
>Mayor
<=Menor Igual
<=Mayor Igual
betweenUtilizado para especificar un intervalo de valores.
likeUtilizado en la comparación de un campo contra un patrón
inUtilizado para verificar la existencia de un valor dentro de un conjunto de valores

Normalizacion

Normalización de bases de datos



Las bases de datos relacionales se normalizan para:Evitar la redundancia de los datos.Disminuir problemas de actualización de los datos en las tablas.Proteger la integridad de los datos.


Primera Forma Normal (1FN)



Elimine los grupos repetidos de las tablas individuales.

Cree una tabla independiente para cada conjunto de datos relacionados.
Identifique cada conjunto de datos relacionados con una clave principal.


Segunda forma normal
Cree tablas independientes para conjuntos de valores que se apliquen a varios registros.Relacione estas tablas con una clave externa
Tercera forma normal
Elimine los campos que no dependan de la clave

Otras formas de normalización
La cuarta forma normal, también llamada Forma normal de Boyce Codd (BCNF, Boyce Codd Normal Form), y la quinta forma normal existen, pero rara vez se consideran en un diseño real. Si no se aplican estas reglas, el diseño de la base de datos puede ser menos perfecto, pero no debería afectar a la funcionalidad.

Algebra Relacional

El álgebra relacional

Es un conjunto de operaciones que describen paso a paso cómo computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.

Operaciones Básicas

Cada operador del álgebra acepta una o dos relaciones y retorna una relación como resultado. σ y Π son operadores unarios, el resto de los operadores son binarios. Las operaciones básicas del álgebra relacional son:
  • Selección - restricción (σ)
Permite seleccionar un subconjunto de tuplas de una relación (R), todas aquellas que cumplan la(s) condición(es) P, esto es:
Ejemplo:
Selecciona todas las tuplas que contengan Gómez como apellido en la relación Alumnos.
Una condición puede ser una combinación booleana, donde se pueden usar operadores como:  , , combinándolos con operadores .
  • Proyección (Π)
Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto vertical de atributos de la relación, esto es:
donde  son atributos de la relación R .
Ejemplo:
Selecciona los atributos Apellido, Semestre y NumeroControl de la relación Alumnos, mostrados como un subconjunto de la relación Alumnos
  • Producto cartesiano (x)
El producto cartesiano de dos relaciones se escribe como:
y entrega una relación, cuyo esquema corresponde a una combinación de todas las tuplas de R con cada una de las tuplas de S, y sus atributos corresponden a los de Rseguidos por los de S.
Ejemplo:
Muestra una nueva relación, cuyo esquema contiene cada una de las tuplas de la relación Alumnos junto con las tuplas de la relación Maestros, mostrando primero los atributos de la relación Alumnos seguidos por las tuplas de la relación Maestros.
  • Unión (∪)
La operación
retorna el conjunto de tuplas que están en R, o en S, o en ambas. R y S deben ser uniones compatibles.
  • Diferencia (-)
La diferencia de dos relaciones, R y S denotada por:
entrega todas aquellas tuplas que están en R, pero no en S. R y S deben ser uniones compatibles.


Estas operaciones son fundamentales en el sentido en que (1) todas las demás operaciones pueden ser expresadas como una combinación de éstas y (2) ninguna de estas operaciones pueden ser omitidas sin que con ello se pierda información.

No básicas o Derivadas

Entre los operadores no básicos tenemos:
Intersección (∩)
La intersección de dos relaciones se puede especificar en función de otros operadores básicos:
La intersección, como en Teoría de conjuntos, corresponde al conjunto de todas las tuplas que están en R y en S, siendo R y S uniones compatibles.
Unión natural (⋈) (Natural Join)
La operación unión natural en el álgebra relacional es la que permite reconstruir las tablas originales previas al proceso de normalización. Consiste en combinar las proyección, selección y producto cartesiano en una sola operación, donde la condición  es la igualdad Clave Primaria = Clave Externa (o Foránea), y la proyección elimina la columna duplicada (clave externa).
Expresada en las operaciones básicas, queda


Una reunión theta ( θ-Join) de dos relaciones es equivalente a:
donde la condición  es libre.
Si la condición  es una igualdad se denomina EquiJoin.
División (/)
Supongamos que tenemos dos relaciones A(x, y) y B(y) donde el dominio de y en A y B, es el mismo.
El operador división A / B retorna todos los distintos valores de x tales que para todo valor y en B existe una tupla  en A.
Agrupación (Ģ)
Permite agrupar conjuntos de valores en función de un campo determinado y hacer operaciones con otros campos.
Por ejemplo: Ģ sum(puntos) as Total Equipo (PARTIDOS).
Ejemplo:

Mostrar los nombres de los alumnos y su apoderado

Primero, realizaremos una combinación entre alumnos y apoderados (pues necesitamos saber a que alumno le corresponde tal apoderado). La combinación realizará un producto cartesiano, es decir, para cada tupla de alumnos (todas las filas de alumnos) hará una mezcla con cada una tupla de apoderados y seleccionará aquellas nuevas tuplas en que alumnos.id sea igual a apoderados.id_alumno, esto es:
ID (alumno)NOMBRE (alumno)CIUDADEDADID (apoderado)NOMBRE (apoderado)FONOID_ALUMNO
01PedroSantiago14054Víctor65464421
01PedroSantiago14457José45465411
01PedroSantiago14354María99745531
01PedroSantiago14444Paz74742301
11JuanBuenos Aires18054Víctor65464421
11JuanBuenos Aires18457José45465411
11JuanBuenos Aires18354María99745531
11JuanBuenos Aires18444Paz74742301
21DiegoLima12054Víctor65464421
21DiegoLima12457José45465411
21DiegoLima12354María99745531
21DiegoLima12444Paz74742301
31RositaConcepción15054Víctor65464421
31RositaConcepción15457José45465411
31RositaConcepción15354María99745531
31RositaConcepción15444Paz74742301
41ManuelLima17054Víctor65464421
41ManuelLima17457José45465411
41ManuelLima17354María99745531
41ManuelLima17444Paz74742301
Por tanto, el resultado final de la combinación es:
Alumnos  Apoderados
ID (alumno)NOMBRE (alumno)CIUDADEDADID (apoderado)NOMBRE (apoderado)FONOID_ALUMNO
01PedroSantiago14444Paz74742301
11JuanBuenos Aires18457José45465411
21DiegoLima12054Víctor65464421
31RositaConcepción15354María99745531
Ahora, aquí debemos mostrar solo el nombre del alumno y el nombre del apoderado, esto lo hacemos con un Proyect o Proyección, donde la tabla final sería:
NOMBRE (alumno)NOMBRE (apoderado)
PedroPaz
JuanJosé
DiegoVíctor
RositaMaría