“Año de la Diversificación Productiva y

del Fortalecimiento de la Educación”

TRABAJO FINAL
Implementación de
Base de Datos
PROFESOR

:

Jorge Luis Del Mar Arzola

ESTUDIANTE

:

Juan Alejandro Rosales Coronel

SECCIÓN

:

X51B

Lima - Perú

2015

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

ÍNDICE DEL TRABAJO
FINAL
ÍNDICE DEL TRABAJO................................................................................................... 2
FINAL.......................................................................................................................... 2
PARTE I: PARTE APLICATIVA....................................................................................... 4
1.

SELECCIÓN DE LA BASE DE DATOS...................................................................5

2.

DESCRIPCIÓN DE LA BASE DE DATOS................................................................5
2.1.

DESCRIPCIÓN FUNCIONAL DE LA DE DATOS (PARA QUE SE UTILIZA)..........6

2.2.

REGLAS DEL NEGOCIO APLICADO A LA BASE DE DATOS.............................7

3.

MÓDELO CONCEPTUAL Y LÓGICO....................................................................7
3.1.

MÓDELO CONCEPTUAL..............................................................................7

3.2.

MÓDELO LÓGICO....................................................................................... 7

4.

ANALISIS DEL MÓDELO CONCEPTUAL..............................................................7
4.1.

VENTAJAS................................................................................................... 7

4.2.

DESVENTAJAS............................................................................................. 7

5. CREACIÓN DE LA BASE DE DATOS Y TABLAS INDICADAS EN EL MODELO
CONCEPTUAL UTILIZANDO MS SQL SERVER 2012....................................................7
5.1.
6.

SCRIPT DE LA CREACIÓN DE LA BASE DE DATOS Y TABLAS........................7

CARGAR CON DATOS LAS TABLAS.....................................................................8

7. CREACIÓN DE CONSULTAS, STORED PROCEDURES, TRIGGER, COMNADOS DDL
Y COMANDOS DCL................................................................................................... 8
7.1.

SCRIPT DE LA CREACION DE CONSULTAS SQL SERVER...............................8

7.2.

SCRIPT DE LA CREACION DE STORED PROCEDURE....................................8

7.3.

SCRIPT DE LA CREACION DE TRIGGER.......................................................8

7.4.
SCRIPT DE LA CREACION DE COMNADOS DDL PARA REALIZAR CAMBIOS A
LAS TABLAS.......................................................................................................... 8
7.5.
SCRIPT DE LA CREACION DE COMANDOS DCL PARA OTORGAR
PRIVILEGIOS A LAS TABLAS................................................................................. 8
8.............................................................................................................................. 8
PARTE II: PARTE INVESTACIÓN.................................................................................10
1.

TABLAS E ÍNDICES CON PARTICIONES............................................................11
1.1.

DEFINICIÓN DE TABLA PARTICIONADA.....................................................11

1.2.

ARQUITECTURA DE LAS PARTICIONES.....................................................12

1.3.

PROCEDIMIENTO PARA CREAR UNA TABLA PARTICIONADA.....................13

REGLAS DE COLUMNAS DE PARTICIÓN........................................................13
2

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

CREATE PARTITION FUNCTION (Transact-SQL)..........................................................14
b)

Crear una función de partición RANGE RIGHT en una columna int.........................15

CREATE PARTITION SCHEME (Transact-SQL).............................................................17
a)

Crear un esquema de partición que asigne cada partición a un grupo de archivos diferente
18

b)

Crear un esquema de partición que asigne varias particiones al mismo grupo de archivos
19

c) Crear un esquema de partición que asigne todas las particiones al mismo grupo de
archivos............................................................................................................... 20
d)

Crear un esquema de partición que especifica un grupo de archivos NEXT USED........20

Para crear particiones en una tabla o un índice en el momento de su creación, debe especificar lo
siguiente en la instrucción CREATE TABLE o CREATE INDEX:........................................21
CREATE TABLE (Transact-SQL)...................................................................................21
CREATE INDEX (Transact-SQL)................................................................................... 25
PARTE III: PARTE DE BUENAS PRÁCTICAS................................................................27

3

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

PARTE I: PARTE
APLICATIVA

1. SELECCIÓN DE LA BASE DE DATOS

4

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

Se eligió para el trabajo La Base de Datos de la empresa “M&M REPUESTOS Y
SERVICIOS S. A.”.

2. DESCRIPCIÓN DE LA BASE DE DATOS
La Base de datos seleccionada se encuentra en el Motor base de datos DB2.

2.1.

DESCRIPCIÓN FUNCIONAL DE LA DE DATOS (PARA QUE SE
UTILIZA)

5

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

La base de datos se utiliza para registrar las Transacciones de las diferentes aéreas de la
empresa:
-

Logística
Comercialización
Créditos y cobranzas
Finanzas
Contabilidad

2.2.
REGLAS DEL NEGOCIO APLICADO A LA BASE DE DATOS
-

Se debe de Guardar Auditoria de cada Transacción realizada.
Los precios de los artículos no deben de ser menores a cero. Solo se aceptan datos

-

mayores o iguales a cero.
Toda Fecha Registrada y Hora Registrada siempre debe de ser válida.
El Stock de cada artículo se calcula mediante la siguiente fórmula:

-

Stock Inicial + Cantidad Ingresada – Cantidad Salida – Stock
Comprometido
-

Toda tabla de la base de datos está protegido por una lista de autorizaciones.
Toda persona que realiza una transacción en la base de datos debe tener un perfil de
usuario y pertenecer a un grupo.

6

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

3. MÓDELO CONCEPTUAL Y LÓGICO
3.1.

MÓDELO CONCEPTUAL

3.2.

MÓDELO LÓGICO

4. ANALISIS DEL MÓDELO CONCEPTUAL
4.1.

VENTAJAS

4.2.

DESVENTAJAS

5. CREACIÓN DE LA BASE DE DATOS Y TABLAS INDICADAS EN EL MODELO
CONCEPTUAL UTILIZANDO MS SQL SERVER 2012
5.1.

SCRIPT DE LA CREACIÓN DE LA BASE DE DATOS Y TABLAS

6. CARGAR CON DATOS LAS TABLAS
7. CREACIÓN DE CONSULTAS, STORED PROCEDURES, TRIGGER, COMNADOS
DDL Y COMANDOS DCL.
7.1.

SCRIPT DE LA CREACION DE CONSULTAS SQL SERVER

7.2.

SCRIPT DE LA CREACION DE STORED PROCEDURE

7.3.

SCRIPT DE LA CREACION DE TRIGGER

7.4.

SCRIPT DE LA CREACION DE COMNADOS DDL PARA REALIZAR
CAMBIOS A LAS TABLAS

7.5.

SCRIPT DE LA CREACION DE COMANDOS DCL PARA OTORGAR
PRIVILEGIOS A LAS TABLAS

8.

7

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

8

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

PARTE II: PARTE
INVESTACIÓN

9

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

1. TABLAS E ÍNDICES CON PARTICIONES
1.1.

DEFINICIÓN DE TABLA PARTICIONADA
Los datos de tablas e índices con particiones se dividen en unidades que pueden

propagarse por más de un grupo de archivos de la base de datos. Los datos se dividen en
sentido horizontal, de forma que los grupos de filas se asignan a particiones individuales.
La tabla o el índice se tratarán como una sola entidad lógica cuando se realicen
consultas o actualizaciones en los datos. Las particiones de un índice o una tabla deben
encontrarse en la misma base de datos.
Las tablas y los índices con particiones admiten todas las propiedades y
características asociadas con el diseño y la consulta de tablas e índices estándar, incluidas las
restricciones, los valores predeterminados, los valores de identidad y marca de tiempo, así
como los desencadenadores. Por tanto, si desea implementar una vista con particiones local
en un servidor, puede interesarle implementar en su lugar una tabla con particiones.
La decisión acerca del uso de las particiones depende básicamente del tamaño actual o
futuro de la tabla, la forma en que se utiliza y el rendimiento que presenta en las consultas de
usuario y las operaciones de mantenimiento.
Por regla general, puede resultar adecuado crear particiones de una tabla grande si se
cumplen las dos condiciones siguientes:

La tabla contiene, o se espera que contenga, muchos datos que se utilizan de
formas diferentes.

Las consultas o las actualizaciones en la tabla no presentan el rendimiento que se
esperaba o los costos de mantenimiento superan los períodos de mantenimiento
predefinidos.
10

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

Por ejemplo, si los datos del mes actual se utilizan principalmente en operaciones
INSERT, UPDATE DELETE, y MERGE, mientras que los meses anteriores se usaban en
consultas SELECT, la administración de la tabla sería más fácil si se crearan particiones por
mes. La ventaja puede ser especialmente importante si las operaciones de mantenimiento
periódicas solo afectan a un subconjunto de los datos. Si la tabla no dispone de particiones,
estas operaciones pueden consumir muchos recursos en un conjunto de datos completo. Con
las particiones, las operaciones de mantenimiento como las regeneraciones de índice y las
desfragmentaciones se pueden realizar en los datos de solo escritura de un único mes; por
ejemplo, mientras que los datos de solo lectura siguen disponibles para el acceso en línea.
Para ampliar este ejemplo, supongamos que desea mover los datos de solo lectura de
un mes de esta tabla a una tabla de almacenamiento de datos para su análisis. Con las
particiones, se pueden separar rápidamente los subconjuntos de datos en áreas de
ensayo para el mantenimiento sin conexión y posteriormente agregarlos como
particiones a tablas con particiones existentes, siempre que dichas tablas se encuentren en
la misma instancia de base de datos.
La creación de particiones en una tabla o un índice puede mejorar el
rendimiento de las consultas si las particiones se diseñan correctamente, basándose en
los tipos de consultas que se ejecutan con más frecuencia y en la configuración del hardware.
La creación de particiones suele usarse junto con la replicación de SQL Server.
El uso de particiones puede permitirle optimizar el rendimiento de la replicación
transaccional y la replicación de mezcla reduciendo de forma efectiva la cantidad de datos y
metadatos que el sistema de replicación tiene que administrar. La replicación admite un
máximo de 1024 particiones por cada tabla.

1.2.

ARQUITECTURA DE LAS PARTICIONES
En SQL Server, se considera que todas las tablas e índices de una base de datos

disponen de particiones, incluso si se componen de una sola partición. Básicamente, las
particiones conforman la unidad básica de organización en la arquitectura física de tablas

11

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

e índices. Esto significa que la arquitectura lógica y física de las tablas y los índices
compuestos por varias particiones es igual a la de tablas e índices con una única partición.
1.3.

PROCEDIMIENTO PARA CREAR UNA TABLA PARTICIONADA
A continuación se enumeran los pasos necesarios para crear una tabla o índice con

particiones:

Cree una función de partición para especificar cómo puede dividirse una tabla o

índice que utilizará la función.
Cree un esquema de particiones para especificar la ubicación de las particiones de

una función de partición en los grupos de archivos.
Cree una tabla o un índice mediante el esquema de particiones.

1.3.1. CREAR UNA FUNCIÓN DE PARTICIÓN
Una función de partición especifica cómo se divide la tabla o el índice. La
función asigna el dominio a un conjunto de particiones. Para crear una función de
partición debe especificar el número de particiones, la columna de partición y
el intervalo de valores de columnas de partición para cada partición. Tenga en
cuenta que al especificar la columna de partición solamente puede especificar
una columna.

 REGLAS DE COLUMNAS DE PARTICIÓN

 Las columnas calculadas que participan en una función de partición deben
marcarse explícitamente como PERSISTED.

 Todos los tipos de datos válidos para el uso en columnas de índice pueden
utilizarse como una columna de partición con la excepción de timestamp.

12

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

 Los tipos de datos:
ntext, text, image, xml, varchar(max), nvarchar(max) o varbinary
(max) no se pueden especificar.

 Las columnas de tipos de datos de alias y de tipo definido por el usuario
CLR (Common Language Runtime) .NET Framework de Microsoft no se
pueden especificar.

 PARA CREAR UNA FUNCIÓN DE PARTICIÓN

CREATE PARTITION FUNCTION (Transact-SQL)

Crea una función en la base de datos actual que asigna las filas de una tabla o
un índice a particiones según los valores de una columna especificada. El uso de
CREATE PARTITION FUNCTION constituye el primer paso para la creación
de una tabla o un índice con particiones.

SINTAXIS:

13

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

EJEMPLOS:

a) Crear una función de partición RANGE LEFT en una columna int
La siguiente función de partición realizará cuatro particiones en una tabla
o un índice.

En la siguiente tabla se muestra cómo se crearían particiones en una tabla que
utiliza esta función de partición en la columna de partición col1.

14

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

b) Crear una función de partición RANGE RIGHT en una columna int

La

siguiente

función

de

partición

utiliza

los

mismos

valores

para boundary_value [ ,...n ] que el ejemplo anterior, con la excepción de que
especifica RANGE RIGHT.

En la siguiente tabla se muestra cómo se crearían particiones en una tabla
que utiliza esta función de partición en la columna de partición col1.

15

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

c) Crear una función de partición RANGE RIGHT en una columna
datetime

La siguiente función de partición divide una tabla o un índice en 12
particiones, una para cada mes de un año natural de valores en una columna
datetime.

En la siguiente tabla se muestra cómo se crearían particiones en una tabla o
índice que utiliza esta función de partición en la columna de partición datecol.

d) Crear una función de partición en una columna char
16

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

La siguiente función de partición realiza cuatro particiones en una tabla o
un índice.

En la siguiente tabla se muestra cómo se crearían particiones en una tabla
que utiliza esta función de partición en la columna de partición col1.

1.3.2. CREAR UN ESQUEMA DE PARTICIONES
Un esquema de particiones asigna las particiones creadas por una función
de partición a un conjunto de grupos de archivos que el usuario ha definido.

17

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

Al crear un esquema de particiones se definen los grupos de archivos en los
que se asignan las particiones de tabla basándose en los parámetros de la función
de partición. Debe especificar suficientes grupos de archivos para albergar todas
las particiones. Puede especificar que todas las particiones se asignen a un grupo
de archivos diferente, que algunas particiones se asignen a un solo grupo de
archivos o que todas las particiones se asignen a un único grupo de archivos.
También puede especificar grupos de archivos adicionales "no asignados" si
posteriormente desea agregar más particiones. En este caso, SQL Server marca
uno de los grupos de archivos con la propiedad NEXT USED. Esto significa que
el grupo de archivos albergará la siguiente partición que se agregue.

Un esquema de particiones sólo puede utilizar una función de partición. Sin
embargo, una función de partición puede participar en más de un esquema de
particiones.

 Para crear un esquema de particiones
CREATE PARTITION SCHEME (Transact-SQL)
Crea un esquema en la base de datos actual que asigna a grupos de archivos
las particiones de una tabla o índice con particiones. El número y el dominio
de las particiones de una tabla o índice con particiones se determinan en una
función de partición. Antes de crear un esquema de partición es necesario
crear una función de partición en una instrucción CREATE PARTITION
FUNCTION.

SINTAXIS:

18

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

EJEMPLOS:
a) Crear un esquema de partición que asigne cada partición a un grupo
de archivos diferente

En el ejemplo siguiente se crea una función de partición para
dividir una tabla o índice en cuatro particiones. Después, se crea un
esquema de partición que especifica los grupos de archivos que van a
contener cada una de las cuatro particiones. En este ejemplo se asume que
los grupos de archivos ya existen en la base de datos.

Las particiones de una tabla que utiliza la función de
partición myRangePF1 en la columna de partición col1 se asignarían
como se muestra en la tabla siguiente.
19

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

b) Crear un esquema de partición que asigne varias particiones al mismo
grupo de archivos

Si todas las particiones se asignan al mismo grupo de archivos,
utilice la palabra clave ALL. Sin embargo, si se asignan varias particiones
(no todas) al mismo grupo de archivos, el nombre del grupo de archivos
debe repetirse, tal como se muestra en el ejemplo siguiente.

Las particiones de una tabla que utiliza la función de
partición myRangePF2 en la columna de partición col1 se asignarían
como se muestra en la tabla siguiente.

20

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

c) Crear un esquema de partición que asigne todas las particiones al
mismo grupo de archivos

En el ejemplo siguiente se crea la misma función de partición que
en los ejemplos anteriores y se crea un esquema de partición que asigna
todas las particiones al mismo grupo de archivos.

d) Crear un esquema de partición que especifica un grupo de archivos
NEXT USED

En el ejemplo siguiente se crea la misma función de partición que
en los ejemplos anteriores y se crea un esquema de partición que especifica
un número de grupos de archivos superior al número de particiones
creadas por la función de partición asociada.

21

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

Al ejecutar la instrucción se devuelve el mensaje siguiente.
Partition scheme 'myRangePS4' has been created successfully.
'test5fg' is marked as the next used filegroup in partition
scheme 'myRangePS4'.

Si la función de partición myRangePF4 se cambia para agregar una partición,
el grupo de archivos test5fg recibe la partición que acaba de crearse.
1.3.3. CREAR UNA TABLA O UN ÍNDICE CON PARTICIONES
Para crear particiones en una tabla o un índice en el momento de su creación,
debe especificar lo siguiente en la instrucción CREATE TABLE o CREATE
INDEX:
 El esquema de particiones que la tabla utilizará para asignar las
particiones a los grupos de archivos.
 La columna en la que se creará la partición en la tabla (la columna de
partición). La columna de partición debe coincidir con la especificada en
la función de partición que el esquema de particiones está utilizando en
términos de tipo de datos, longitud y precisión. Si se calcula la columna,
debe especificarse como PERSISTED.

 Para crear una tabla que utiliza un esquema de particiones

CREATE TABLE (Transact-SQL)

SINTAXIS:

22

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

23

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

24

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

EJEMPLO:
25

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

 Crear una tabla con particiones

En el siguiente ejemplo se crea una función de partición para crear
cuatro particiones en una tabla o en un índice. A continuación, se crea un
esquema de partición en el que se especifican los grupos de archivos que
van a contener cada una de las cuatro particiones. Finalmente, en el
ejemplo se crea una tabla que utiliza el esquema de partición. En este
ejemplo se supone que los grupos de archivos ya existen en la base de
datos.

En función de los valores de la columna col1 de PartitionTable,
las particiones se asignan de los siguientes modos.

26

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

 Para crear un índice que utiliza un esquema de particiones

CREATE INDEX (Transact-SQL)

Crea un índice relacional en una tabla especificada o una vista de una
tabla especificada. Se puede crear un índice antes de que la tabla posea datos.
Los índices relacionales se pueden crear en tablas o vistas de otra base de
datos especificando un nombre completo de base de dato

SINTAXIS:

27

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

28

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

PARTE III: PARTE
DE BUENAS
PRÁCTICAS

29

Implementación de Base de Datos

Ingeniería de

Sistemas – EPE

1. CONJUNTO DE BUENAS PRÁCTICAS EN LA IMPLEMETACIÓN DE BASE DE
DATOS
2. COMO APLICAR LAS BUENAS PRACTICAS DE IMPLETACIÓN DE BASE DE
DATOS EN UNA EMPRESA

30