Está en la página 1de 7

Base de datos

Base de datos

Experimentar Nº 03
Restricciones
Logro:
- Aplica las restricciones default, check, unique y identity a los campos de las tablas, según
corresponda.

CASO DESARROLLADO: COLEGIO

En la base de datos BD_COLEGIO implementaremos las restricciones correspondientes a las tablas


de datos. En seguida se muestra el diagrama

Elaborado por: Equipo de Docentes Pág. 1


Base de datos

SCRIPT
USE MASTER
GO

IF DB_ID('BD_COLEGIO') IS NOT NULL


DROP DATABASE BD_COLEGIO
GO

CREATE DATABASE BD_COLEGIO


ON PRIMARY
(NAME = 'COLEGIO_DATA',
FILENAME = 'D:\COLEGIO_DATA.MDF',
SIZE = 10MB,
MAXSIZE = 20MB,
FILEGROWTH= 1MB)
LOG ON
(NAME = 'COLEGIO_LOG',
FILENAME = 'D:\COLEGIO_LOG.LDF',
SIZE = 5MB,
MAXSIZE = 10MB,
FILEGROWTH= 1MB)
GO
--ABRIENDO LA BASE DE DATOS BD_COLEGIO
USE BD_COLEGIO
GO

--CREACIÓN DE TABLAS:
--TABLA CURSO

CREATE TABLE CURSO


(
IDCURSO CHAR (5) NOT NULL PRIMARY KEY,
NOMBRECURSO VARCHAR (15) NOT NULL,
HORASTEORICAS NUMERIC NOT NULL,
HORASPRACTICAS NUMERIC NOT NULL,
NIVEL CHAR (1) NOT NULL,
GRADO CHAR (1) NOT NULL
)

--TABLA DOCENTE

CREATE TABLE DOCENTE


(
IDDOCENTE CHAR (5) NOT NULL PRIMARY KEY,
NOMBRE VARCHAR (25) NOT NULL,
APELLIDOS VARCHAR (35) NOT NULL,
DIRECCION VARCHAR (50) NOT NULL,
TELEFONO VARCHAR (12),
DNI CHAR (8) NOT NULL,
ESPECIALIDAD VARCHAR (25) NOT NULL,
E_MAIL VARCHAR (50),
SEXO CHAR (1) NOT NULL
)

Elaborado por: Equipo de Docentes Pág. 2


Base de datos

--TABLA UBIGEO
CREATE TABLE UBIGEO
(
IDUBIGEO CHAR (6) NOT NULL PRIMARY KEY,
DISTRITO VARCHAR (35) NOT NULL,
PROVINCIA VARCHAR (25) NOT NULL,
DEPARTAMENTO VARCHAR (25) NOT NULL
)

--TABLA ALUMNO
CREATE TABLE ALUMNO
(
IDALUMNO CHAR (5) NOT NULL PRIMARY KEY,
NOMBRE VARCHAR (25) NOT NULL,
APELLIDOS VARCHAR (35) NOT NULL,
FECHANAC DATETIME NOT NULL,
TELEFONO VARCHAR (12),
SEXO CHAR (1) NOT NULL,
E_MAIL VARCHAR (50),
IDUBIGEO CHAR (6) NOT NULL REFERENCES UBIGEO
)

--TABLA PROMEDIO
CREATE TABLE PROMEDIO
(
IDALUMNO CHAR (5) NOT NULL REFERENCES ALUMNO,
IDCURSO CHAR (5) NOT NULL REFERENCES CURSO,
PROMEDIO REAL,
PRIMARY KEY (IDALUMNO, IDCURSO)
)

--TABLA ASIGNACIÓN
CREATE TABLE ASIGNACION
(
IDDOCENTE CHAR (5) NOT NULL REFERENCES DOCENTE,
IDCURSO CHAR (5) NOT NULL REFERENCES CURSO,
SECCION CHAR (1) NOT NULL,
PRIMARY KEY (IDDOCENTE, IDCURSO)
)

--TABLA NOTAS
CREATE TABLE NOTAS
(
IDCURSO CHAR (5) NOT NULL REFERENCES CURSO,
IDALUMNO CHAR (5) NOT NULL REFERENCES ALUMNO,
B1 FLOAT NOT NULL,
B2 FLOAT NOT NULL,
B3 FLOAT NOT NULL,
B4 FLOAT NOT NULL,
PROMEDIO FLOAT NOT NULL
PRIMARY KEY (IDCURSO, IDALUMNO)
)
GO

Elaborado por: Equipo de Docentes Pág. 3


Base de datos

Debe tener en cuenta los siguientes aspectos:

 Definir las llaves primarias y foráneas según se muestra en la imagen.


 Definir valores por defecto (DEFAULT)
 Definir restricciones (CHECK)
 Definir restricciones (UNIQUE)

IMPLEMENTACIÓN DE LAS RESTRICCIONES

--ABRIR LA BASE DE DATOS BD_COLEGIO


USE BD_COLEGIO
GO
--APLICANDO RESTRICCIÓN DEFAULT

--ASIGNAR EL VALOR CERO AL B1, B2, B3, B4 DE LA TABLA NOTAS

ALTER TABLE NOTAS


ADD CONSTRAINT DF_NOTASB1 DEFAULT 0
FOR B1

ALTER TABLE NOTAS


ADD CONSTRAINT DF_NOTASB2 DEFAULT 0
FOR B2

ALTER TABLE NOTAS


ADD CONSTRAINT DF_NOTASB3 DEFAULT 0
FOR B3

ALTER TABLE NOTAS


ADD CONSTRAINT DF_NOTASB4 DEFAULT 0
FOR B4

--ASIGNAR EL VALOR CERO AL CAMPO PROMEDIO DE LA TABLA PROMEDIO

ALTER TABLE PROMEDIO


ADD CONSTRAINT DF_NOTASPPROM DEFAULT 0
FOR PROMEDIO

--ASIGNAR EL VALOR CERO AL CAMPO HORASTEORICAS DE LA TABLA CURSO

ALTER TABLE CURSO


ADD CONSTRAINT DF_HT DEFAULT 0
FOR HORASTEORICAS

--ASIGNAR EL VALOR CERO AL CAMPO HORASPRACTICAS DE LA TABLA CURSO

ALTER TABLE CURSO


ADD CONSTRAINT DF_HP DEFAULT 0
FOR HORASPRACTICAS
GO

Elaborado por: Equipo de Docentes Pág. 4


Base de datos

--ASIGNAR EL VALOR 'NO REGISTRA' AL CAMPO E_MAIL DE LA TABLA DOCENTE

ALTER TABLE DOCENTE


ADD CONSTRAINT DF_EMAIL DEFAULT 'NO REGISTRA'
FOR E_MAIL
GO

--APLICANDO RESTRICCIÓN CHECK

--EL CAMPO SEXO DE LA TABLA ALUMNO Y DOCENTE DEBE PERMITIR VALOR F y M

ALTER TABLE ALUMNO


ADD CONSTRAINT CHK_SEXO CHECK (SEXO LIKE'[FM]')
GO

ALTER TABLE DOCENTE


ADD CONSTRAINT CHK_SEXODOC CHECK (SEXO LIKE'[FM]')
GO

--EL CODIGO DEL ALUMNO DEBE COMENZAR CON LA LETRA A

ALTER TABLE ALUMNO


ADD CONSTRAINT CHK_IDA CHECK (IDALUMNO LIKE 'A[0-9][0-9][0-9][0-9]')
GO

--EL CODIGO DEL DOCENTE DEBE COMENZAR CON LA LETRA D

ALTER TABLE DOCENTE


ADD CONSTRAINT CHK_IDD CHECK (IDDOCENTE LIKE 'D[0-9][0-9][0-9][0-9]')
GO

--EL CODIGO DEL CURSO DEBE COMENZAR CON LA LETRA C

ALTER TABLE CURSO


ADD CONSTRAINT CHK_IDC CHECK (IDCURSO LIKE 'C[0-9][0-9][0-9][0-9]')
GO

--EL CAMPO HORASTEORICAS DE LA TABLA CURSO DEBE ACEPTAR VALORES MAYORES IGUALES
A 0

ALTER TABLE CURSO


ADD CONSTRAINT CHK_CHT CHECK(HORASTEORICAS>=0)
GO

-- EL CAMPO HORASPRACTICAS DE LA TABLA CURSO DEBE ACEPTAR VALORES MAYORES IGUALES


A 0

ALTER TABLE CURSO


ADD CONSTRAINT CHK_CHP CHECK(HORASPRACTICAS>=0)
GO

-- EL CAMPO GRADO DEBE ACEPTAR VALORES MAYORES ENTRE 1 Y 6

Elaborado por: Equipo de Docentes Pág. 5


Base de datos

ALTER TABLE CURSO


ADD CONSTRAINT CHK_CGRADO CHECK (GRADO LIKE '[1-6]')
GO
-- EL CAMPO GRADO DEBE ACEPTAR VALORES MAYORES ENTRE 1 Y 6
ALTER TABLE CURSO
ADD CONSTRAINT CHK_CNIVEL CHECK (NIVEL IN('P','S'))
GO

--LOS CAMPOS B1 a B4 Y PROMEDIO DE LA TABLA NOTAS DEBE ACEPTAR VALORES DE 0 A 20

ALTER TABLE NOTAS


ADD CONSTRAINT CHK_NB1 CHECK(B1>=0 AND B1<=20),
CONSTRAINT CHK_NB2 CHECK(B2>=0 AND B2<=20),
CONSTRAINT CHK_NB3 CHECK(B3>=0 AND B3<=20),
CONSTRAINT CHK_NB4 CHECK(B4>=0 AND B4<=20),
CONSTRAINT CHK_NPROM CHECK(PROMEDIO>=0 AND PROMEDIO<=20)

--APLICANDO RESTRICCIÓN UNIQUE

--EL CAMPO EMAIL DE LA TABLA DOCENTE DEBE SER ÚNICO.

ALTER TABLE DOCENTE


ADD CONSTRAINT UQ_EMA
UNIQUE (E_MAIL)
GO

--EL CAMPO DIRECCIÓN DE LA TABLA DOCENTE DEBE SER ÚNICO

ALTER TABLE DOCENTE


ADD CONSTRAINT UQ_DIRECCION
UNIQUE (DIRECCION)
GO

--EL CAMPO DNI DE LA TABLA DOCENTE DEBE SER ÚNICO

ALTER TABLE DOCENTE


ADD CONSTRAINT UQ_DNI
UNIQUE (DNI)
GO

--EL CAMPO DEPARTAMENTO DE LA TABLA UBIGEO DEBE SER ÚNICO

ALTER TABLE UBIGEO


ADD CONSTRAINT UQ_DEPA
UNIQUE (DEPARTAMENTO)
GO

“La educación es el pasaporte hacia el futuro, el mañana


pertenece a aquellos que se preparan para él en el día de hoy.”
Malcolm X

Elaborado por: Equipo de Docentes Pág. 6


Base de datos

Nota: El siguiente caso debe desarrollar el docente con los estudiantes.

CASO PROPUESTO: VENTAS2017

En la base de datos VENTAS2017 implementaremos las restricciones correspondientes a las tablas


de datos. En seguida se muestra el diagrama

El Script de la base de datos Ventas, debe descargar del aula virtual Moodle.

Tener en cuenta

 Definir los siguientes valores por defecto:


o Asignar el valor cero al stock mínimo y stock actual de la tabla producto.
o Asignar el valor “AC” al estado de la boleta de la tabla boleta.
o Asignar el valor “No registra” al correo electrónico (Email) de la tabla cliente.
o Asignar el valor “000000000” al teléfono de la tabla cliente.
 Definir las siguientes restricciones:
o El precio de venta del producto debe ser mayor a cero.
o El estado de la boleta solo debe permitir los valores AC(activo) y AN(anulado).
o La fecha de emisión de la boleta debe ser mayor a la fecha actual.
o El campo Estado civil de los empleados solo debe permitir los valores C (Casado), S
(Soltero), T (Conviviente), D (Divorciado), V (Viudo)
o El campo nivel de educación de los empleados debe permitir los valores (Primaria,
Secundaria, Superior, Universitario).
o El sueldo básico de los empleados debe ser como mínimo 850.00
o El campo código de la tabla empleado debe empezar con la letra E
o El campo código de la tabla categoría debe empezar con la letra C
 Definir las siguientes restricciones:
o Los nombres de los distritos deben ser valores únicos.
o La descripción del producto deben ser valores únicos.
o El DNI de la tabla empleado deben ser valores únicos.
o El campo dirección de la tabla empleado deben ser valores únicos.

Elaborado por: Equipo de Docentes Pág. 7

También podría gustarte