Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Proyecto de base de datos. Postgree (página 2)




Enviado por Nestor Vargas



Partes: 1, 2

DESCRIPCION DE TABLA

Nombre de la tabla:
________DETALLE______________

Llave Primaria: _{nventa,
cod_producto
} ____________

Llave secundaria:
________________________________

Llave Foránea: __ nventa,
cod_producto
_____________

Atributo

Tipo Dato

Tamaño

Observaciones

nventa

Character

8

cod_producto

Character

8

precio_venta

Real

Defecto

cantidad

Integer

Defecto

subtotal

Real

Defecto

impuesto

Real

Defecto

total

real

defecto

Diccionario de
datos

Nombre de archivo: ficha Fecha
creación:12/11/11 Descripcion: Base de datos que
contendrá la ficha de matrícula de los alumnos del
Instituto

Campo

Tamaño

Tipo de
datos

Descripción

rne

15

Character

Clave única de registro
nacional estudiantes

nombre

30

Character Varying

Nombre del alumno

apellidos

60

Character Varying

Apellido del alumno

dirección

70

Character Varying

Direccion del alumno

fecha_nacimiento

Date

Fecha que nació el
alumno

sexo

10

Character Varying

El sexo del estudiante

padre

70

Character Varying

Padre del estudiante

madre

70

Character Varying

Madre del estudiante

encargado

70

Character Varying

Encargado del alumno

cod_curso

8

Character

El código del curso que se
encuentra y es llave foranea

Fecha_matricula

Date

La fecha de matricula.

Relaciones: Campos Claves:

Ficha- Cursos rne- nombre, apellido,
encargado

Nombre de archivo: Curso Fecha
creación:12/11/11 Descripcion: Base de datos que
contendrá la información de los cursos del
Instituto.

Campo

Tamaño

Tipo de
datos

Descripción

cod_curso

8

Character

Llave principal único
código del curso

curso

20

Character Varying

El nombre del curso

modalidad

50

Character Varying

Modalidad de la carrera

sección

3

Character Varying

La sección

jornada

20

Character Varying

Jornada de estudio

Relaciones: Campos Claves:

Cursos – Ficha todos.

Nombre de archivo: Maestros Fecha
creación:12/11/11 Descripción: Base de datos que
contendrá la información de los Maestros del
Instituto.

Campo

Tamaño

Tipo de
datos

Descripción

cod_maestro

8

Character

Código único de los
maestros.

nombre

30

Character Varying

Código de los
maestros

apellido

60

Character Varying

Apellido del Maestro

direccion

70

Character Varying

Dirección del
maestro

teléfono

9

Character Varying

Teléfono del
maestro

email

60

Character Varying

Correo del maestro

Relaciones: Campos Claves:

X cod-maestro-nombre-apellido.

Nombre de archivo: Materias Fecha
creación:12/11/11 Descripción: Base de datos que
contendrá la información de las materias de las
carreras

Campo

Tamaño

Tipo de
datos

Descripción

cod_materia

8

Character

Codigo único de las
materias

materia

30

Character Varying

Nombre de la materia

Cod_curso

8

Character

El código del curso que
corresponde a la materia, llave foránea

Cod_maestro

8

Character

El código del maestro, llave
foránea.

Relaciones: Campos Claves:

Materias-curso-maestro
cod_materia-materia

Nombre de archivo: Notas Fecha
creación:12/11/11 Descripción: Base de datos que
contendrá la información de las Notas de los
alumnos.

Campo

Tamaño

Tipo de
datos

Descripción

rne

15

Character

Llave principal del registro nacional
del estudiante

cod_curso

8

Character

Llave principal del código del
curso

cod_materia

8

Character

Llave principal de la
materia

anio

defecto

Integer

Llave principal del
año

parcial1

defecto

Real

Nota del I parcial

parcial2

defecto

Real

Nota del II parcial

parcial3

defecto

Real

Nota del III parcial

parcial4

defecto

Real

Nota del IV parcial

promedio

defecto

Real

Nota promedio

recuperacion1

defecto

Real

Primera
recuperación

recuperacion2

defecto

Real

Segunda
recuperación

Relaciones: Campos Claves:

Notas-Materias-curso-maestro rne,
cod_curso, cod_materia, anio

Nombre de archivo:Conceptopago Fecha
creación:12/11/11 Descripción: Base de datos que
contendrá la información del pago que se
efectua.

Campo

Tamaño

Tipo de
datos

Descripción

cod_concepto

8

Character

Unico código del concepto de
pago

concepto

50

Character Varying

Concepto de pago

precio

defecto

Real

El valor del pago

Relaciones: Campos Claves:

Nombre de archivo:Conceptopago Fecha
creación:12/11/11 Descripción: Base de datos que
contendrá la información del pago que se
efectua.

Campo

Tamaño

Tipo de
datos

Descripción

cod_empleado

8

Character

Codigo único del
empleado

nombre

30

Character Varying

Nombre del empleado

apellidos

60

Character Varying

Apellidos del empleados

dirección

70

Character Varying

Dirección del
empleados

teléfono

9

Character Varying

Teléfono del
empleado

email

60

Character Varying

Correo del empleado

Consultas
SQL

  • 1- Contar el número
    total de alumnos.

Select count (rne)

From ficha

  • 2- Listado de Alumnos por un
    curso X.

Select ficha.rne, ficha.nombre,
ficha.apellidos, cursos.curso, cursos.modalidad,
cursos.seccion

From ficha, cursos

Where ficha.cod_curso=cursos.cod_curso and
ficha.cod_curso='1CC1'

  • 3- Cuadro de honor del parcial3
    (notas mayores de 91)

Select notas.rne, ficha.nombre,
ficha.apellidos, notas.cod_curso, avg (notas.parcial3)

From ficha, notas

Where notas.rne=ficha.rne and
parcial3>91

Group by
notas.rne,ficha.nombre,ficha.apellidos,notas.cod_curso

  • 4- Aplazados por
    materia

Select notas.rne, ficha.nombre,
ficha.apellidos, materias.materia, notas.promedio

From notas, ficha, materias

Where notas.rne = ficha.rne and
notas.promedio <60 and
notas.cod_materia=materias.cod_materia

Order by materias.materia

  • 5- Aplazados por
    curso

Select notas.rne, ficha.nombre,
ficha.apellidos, cursos.curso, cursos.modalidad, cursos.seccion,
notas.promedio

From notas, ficha, cursos

Where notas.rne = ficha.rne and
notas.promedio <60 and
notas.cod_curso=cursos.cod_curso

Order by cursos.modalidad, cursos.curso,
cursos.seccion

  • 6- Mejores 10 promedios de todo
    el sistema para asignarles becas

Select notas.rne, ficha.nombre,
ficha.apellidos, avg (notas.promedio)

From notas, ficha

Where notas.rne=ficha.rne

Group by notas.rne, ficha.nombre,
ficha.apellidos

Order by avg (notas.promedio) desc limit 10
offset 0

  • 7- Materias por
    maestros

Select materias.cod_materia,
materias.materia, maestros.nombre, maestros.apellidos

From materias, maestros

Where materias. Cod_maestro=maestros.
Cod_maestro

Order by maestros. Nombre,
materias.materia

  • 8- Contar cuantas materias por
    maestros.

Select maestros.nombre, maestros.apellidos,
count (materias.materia)

From materias, maestros

Where materias. Cod_maestro=maestros.
Cod_maestro

Group by maestros.nombre,
maestros.apellidos

Order by maestros. nombre

  • 9- Calcular el promedio anual
    de todas las notas.

Select avg (promedio)

From notas

  • 10- Calcular el promedio por
    sexo

Select avg (notas.promedio),
ficha.sexo

From notas, ficha

Where notas.rne=ficha.rne

Group by ficha.sexo

  • 11- Alumnos a los que no se les
    ha asignado ninguna nota.

Select ficha.rne, ficha.nombre from ficha
left join notas on ficha.rne=notas.rne

Where (notas.rne) is null

  • 12- Maestros a los que no se
    les ha asignado ninguna materia.

Select maestros.cod_maestro,
maestros.nombre, maestros.apellidos, materias.cod_maestro from
maestros left join materias on
maestros.cod_maestro=materias.cod_maestro

Where (materias.cod_maestro) is
null

Order by nombre

  • 13- Ver el historial de un
    alumno X

select notas.rne, ficha.nombre,
ficha.apellidos, notas.cod_materia, materias.materia,
notas.cod_curso, cursos.curso, cursos.modalidad, notas.anio,
notas.parcial1, notas.parcial2, notas.parcial3, notas.parcial4,
round(promedio)

From notas, ficha, materias,
cursos

Where notas.rne=ficha.rne and
notas.cod_curso=cursos.cod_curso and
notas.cod_materia=materias.cod_materia and notas.rne =
'0503-1999-00562'

  • 14- Ver la nota más alta
    del año.

Select Max (promedio)

From notas

  • 15- Ver la nota más baja
    del año.

Select Min (promedio)

From notas

  • 16- Alumnos que pierden derecho
    a Primera Recuperación (promedio <
    40)

Select * from notas where promedio
<40

  • 17- Materias por
    curso

Select materias.cod_materia,
materias.materia, cursos.curso, cursos.modalidad,
cursos.seccion

From materias, cursos

Where
materias.cod_curso=cursos.cod_curso

Order by curso, modalidad, seccion,
materia

  • 18- Cuantos alumnos van a
    Recuperación

Select count (promedio)

From notas

Where promedio<60

  • 19- Cuantos alumnos van a
    Recuperación por Materia.

Select notas.cod_materia, materias.materia,
cursos.curso, cursos.modalidad, cursos.seccion, count
(promedio)

From notas, materias, cursos

Where
notas.cod_materia=materias.cod_materia and
notas.cod_curso=cursos.cod_curso and promedio <60

Group by notas.cod_materia,
materias.materia, cursos.curso, cursos.modalidad,
cursos.seccion

Order by curso, modalidad,
seccion

  • 20- Alumnos
    Repitentes

Select * from ficha where repite =
'SI'

  • 21- Sumar cuanto ha cobrado
    cada empleado.

Select cobros.cod_empleado,
empleados.nombre, sum (conceptopago.precio)

From empleados, conceptopago,
cobros

Where cobros.
Cod_concepto=conceptopago.cod_concepto and
empleados.cod_empleado=cobros.cod_empleado

Group by cobros.cod_empleado,
empleados.nombre

  • 22- Sumar Todos los Cobros
    realizados.

Select sum (conceptopago.precio)

From conceptopago, cobros

Where cobros.
Cod_concepto=conceptopago.cod_concepto

  • 23- Sumar los Cobros por
    Concepto.

Select cobros.cod_concepto, sum
(precio)

From cobros, conceptopago

Where cobros.
Cod_concepto=conceptopago.cod_concepto

Group by cobros.cod_concepto,
conceptopago.cod_concepto

  • 24- Contar cuantos cobros se
    han hecho.

Select count (numcobro)

From cobros

Select cobros.rne, ficha.nombre,
ficha.apellidos, cobros. Cod_concepto, conceptopago. Concepto,
cobros.mes

From cobros, ficha, conceptopago

Where cobros.rne=ficha.rne and cobros.
Cod_concepto=conceptopago.cod_concepto and
cobros.rne='0503-1978-01415'

  • 26- Contar cuantos empleados
    hay.

Select count (cod_empleado)

From empleados

  • 27- Alumnos que no han
    realizado ningún pago.

Select ficha.rne, ficha.nombre,
ficha.apellidos

From ficha left join cobros on ficha.rne =
cobros.rne

Where (cobros.rne) is null

  • 28- Contar cuantos productos
    hay en la tienda.

Select sum (existencia) from
productos

  • 29- Calcular la
    Inversión Total hecha en la tienda
    escolar.

Select sum (preciocosto)

From productos

  • 30- Ver los artículos
    por proveedor.

Select productos.cod_producto,
productos.producto, productos.preciocosto,
proveedores.nombre

From productos, proveedores

Where
productos.cod_proveedor=proveedores.codproveedor

Order by proveedores.nombre

  • 31- Cuánto Dinero se le
    ha pagado a cada proveedor.

Select productos.cod_proveedor,
proveedores.nombre, sum (preciocosto)

From productos, proveedores

Where
productos.cod_proveedor=proveedores.codproveedor

Group by productos.cod_proveedor,
proveedores.nombre

  • 32- Cuantos proveedores
    tenemos

Select count (codproveedor)

From proveedores

  • 33- Total
    Vendido

Select sum (total)

From detalle

Select detalle. nventa,
detalle.cod_producto, productos.producto,
detalle.total

From detalle, productos

Where detalle. Cod_producto=productos.
Cod_producto

Order by nventa

  • 35- Total ventas por
    factura

Select nventa, sum (total)

From detalle

Group by nventa

Order by nventa

Select sum (impuesto) from
detalle

  • 37- Total impuesto cobrado por
    factura.

Select nventa, round (sum
(impuesto))

From detalle

Group by nventa

Order by nventa

Select productos.cod_producto,
productos.producto from productos left join detalle on productos.
Cod_producto=detalle. cod_producto

Where (detalle. cod_producto) is
null

Order by producto

  • 39- Ver la factura más
    alta

Select sum (total), nventa

From detalle

Group by nventa

Order by sum (total) desc limit 1 offset
0

  • 40- Ver una factura x
    completa.

Select empleados.nombre, ventas. Nventa,
detalle.cod_producto, productos.producto, detalle.precio_venta,
detalle.cantidad, detalle.subtotal, detalle.impuesto,
detalle.total

From empleados, ventas, detalle,
productos

Where
ventas.cod_empleado=empleados.cod_empleado and detalle.
cod_producto = productos. Cod_producto and ventas.
Nventa=detalle. Nventa

And ventas. Nventa='1'

Procedimientos
almacenados

En nuestro proyecto utilizamos los procedimientos
más que todo para asuntos de cálculo en las tablas
que tienen que ver con valores numéricos.

Dichos procedimientos los programamos junto a un trigger
para que se levanten automáticamente al efectuar una
acción ya sea la de insertar un registro o actualizar un
registro.

Para desarrollarlos hicimos una investigación en
internet a fin de empaparnos un poco más sobre el uso de
los mismos. Adjuntamos el manual que nos permitió
desarrollar nuestros procedimientos.

Procedimiento # 1

Nuestra primera función es la
más simple que se puede definir y lo único que
hará será devolver el valor NULL:

CREATE OR REPLACE FUNCTION
proteger_datos () RETURNS TRIGGER AS
$proteger_datos$

DECLARE

BEGIN

— Esta función es usada para
proteger datos en una tabla

— No se permitirá el borrado
de filas si la usamos

— en un disparador de tipo BEFORE /
row-level

RETURN NULL;

END;

$proteger_datos$ LANGUAGE
plpgsql;

Procedimiento # 2

Ahora vamos a definir una nueva función un poco
más complicada y un nuevo disparador en nuestra tabla
productos, el procedimiento como podemos ver
únicamente nos permite calcular el precio de venta de un
producto. La función se llama rellenar_datos ( ) y el
trigger tiene el mismo nombre,
como podemos ver en el trigger
le damos la orden que se debe ejecutar cuando insertemos o
modifiquemos una línea.

CREATE OR REPLACE FUNCTION
rellenar_datos () RETURNS TRIGGER AS
$rellenar_datos$

DECLARE

BEGIN

NEW.precioventa:=
(NEW.preciocosto+NEW.utilidad);

RETURN NEW;

END;

$rellenar_datos$ LANGUAGE
plpgsql;

CREATE TRIGGER rellenar_datos BEFORE
INSERT OR UPDATE

ON numeros FOR EACH
ROW

EXECUTE PROCEDURE rellenar_datos
();

Procedimiento # 3

Nuestro tercer procedimiento tiene como función
encontrar los promedios de los alumnos una vez que les hemos
introducido los 4 parciales, ejecutamos un trigger con el mismo
nombre del procedimiento; rellenar_notas

CREATE OR REPLACE FUNCTION
rellenar_notas () RETURNS TRIGGER AS
$rellenar_notas$

DECLARE

BEGIN

NEW.promedio :=( round
(NEW.parcial1+NEW.parcial2+NEW.parcial3+NEW.parcial4)/4);

RETURN NEW;

END;

$rellenar_notas$ LANGUAGE
plpgsql;

CREATE TRIGGER rellenar_notas BEFORE
INSERT OR UPDATE

ON numeros FOR EACH
ROW

EXECUTE PROCEDURE rellenar_notas
();

Procedimiento # 4

Nuestro cuarto procedimiento tiene como
objetivo calcular los valores de las facturas,
específicamente sobre la tabla detalle. Lo
acompañamos con un trigger con el mismo nombre del
procedimiento; rellenar_detalle () para que funcione
debemos llenarle el precio_venta y la cantidad.

CREATE OR REPLACE FUNCTION
rellenar_detalle () RETURNS TRIGGER AS
$rellenar_detalle$

DECLARE

BEGIN

NEW.subtotal:=
(NEW.precio_venta*New.cantidad);

New.impuesto:=(New.subtotal*0.12);

New.total:= (NEW.subtotal
New.impuesto);

RETURN NEW;

END;

$rellenar_detalle$ LANGUAGE
plpgsql;

CREATE TRIGGER rellenar_detalle
BEFORE INSERT OR UPDATE

ON numeros FOR EACH
ROW

EXECUTE PROCEDURE rellenar_detalle
();

Procedimiento # 5

Este procedimiento permite que al ingresar datos en la
tabla ficha, solo debamos escribir la F o M y sea
el procedimiento quien escriba la palabra completa
Femenino o Masculino.

CREATE OR REPLACE FUNCTION rellenar_genero
() RETURNS TRIGGER AS $rellenar_genero$

DECLARE

BEGIN

if New.sexo = 'F' then

New.sexo:='Femenino'

elsif;

if New.sexo = 'M' then

New.sexo:='Masculino'

endif;

end if;

End if;

RETURN NEW;

END;

$rellenar_genero$ LANGUAGE
plpgsql;

CREATE TRIGGER rellenar_genero BEFORE
INSERT OR UPDATE

ON ficha FOR EACH ROW

EXECUTE PROCEDURE rellenar_genero
();

Desarrollo en SQL
SERVER 2005

En vista de que nuestro sistema deseamos
subirlo a internet de manera que funcione en ambiente web,
elegimos SQLSERVER 2005 ¿Por qué
SQLSERVER?

Lo elegimos ya que la plataforma que vamos
a elegir para programar el sistema es visual studio 2005 y de
alguna forma pues funcionan como mejor estos dos programas
juntos. Aparte que ya hemos tenido un poco de experiencia en
SQLSERVER.

A continuación se presenta el
diagrama relacional de sqlserver:

Monografias.com

Adjunto enviamos la base de datos creada en
SQLSERVER 2005.

Monografias.com

 

 

Autor:

Néstor Domingo Vargas
Galindo

Luis Alonso Ríos
Galindo

Monografias.com

PROYECTO DE BASE DE DATOS

2011

UNIVERSIDAD PEDAGOGICA NACIONAL
FRANCISCO MORAZA

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter