Novedades Desafíos Papers y H-Zine Proyectos Foro
foros de discusión

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Base de datos SQL server, Si tienes el don de ayudar estas en el lugar indicado.
j0lvr
post Oct 7 2008, 07:08 PM
Post #1


Miembro
***


Group: Hackerss Member
Posts: 53
Joined: 25-September 08
From: Colombia
Member No.: 5,572



rolleyes.gif Hola de nuevo inicio un nuevo tema para despejar mis dudas sobre la programacion y la de otros personajes que se interesen en el tema.

BASE DE DATOS:

Database Management System (DBMS), Sistema de administración de bases de Datos.

Relational Database Management System (RDBMS)Sistemas de Bases de Datos Relacionales

Que es una Base de Datos:

Una base de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso.

compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta.

SISTEMA DE ADMINISTRACION DE BASES DE DATOS

Que es una DBMS:

Son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan.

El propósito general de los sistemas de gestión de base de datos es el de manejar de manera clara, sencilla y ordenada un conjunto de datos que posteriormente se convertirán en información relevante, para un buen manejo de datos.

USOS Y FUNCIONES DE UN DBMS

USOS:

Permitir a los usuarios ACCEDER y MANIPULAR la base de datos proveyendo métodos para construir sistemas de procesamiento de datos para aplicaciones que requieran acceso a los datos.

PROVEER a los administradores las herramientas que les permitan ejecutar tareas de MANTENIMIENTO y ADMINISTRACIÓN de los datos.

USOS Y FUNCIONES DE UN DBMS

FUNCIONES:

Definición de la base de datos - como la información va a ser almacenada y organizada.
Creación de la base de datos - almacenamiento de datos en una base de datos definida.
Recuperación de los datos - consultas y reportes.
Actualización de los datos - cambiar los contenidos de la base de datos.
Programación de aplicaciones de para el desarrollo de software.
Control de la integridad de la base de datos.
Monitoreo del comportamiento de la base de datos.

USOS Y FUNCIONES DE UN DBMS

CARACTERISTICAS DE UN DBMS:

Control de la redundancia de datos.
Compartimiento de datos
Mantenimiento de la integridad
Soporte para control de transacciones y recuperación de fallas.
Independencia de los datos.
Seguridad
Velocidad
Independencia del hardware

Sistemas de Bases de Datos Relacionales (RDBMS)

Los sistemas de base de datos relacionales son aquellos que almacenan y administran de manera lógica los datos en forma de tablas. Una TABLA es, a su vez, un método para presentar los datos en la forma de filas y columnas.

Le permiten ingresar datos al sistema.
Le permiten almacenar los datos.
Le permiten recuperar los datos y trabajar con ellos.
Le proveen herramientas para capturar, editar y manipular datos.
Le permiten aplicar seguridad.
Le permiten crear reportes e informes con los datos.

Sistemas de Bases de Datos Relacionales (RDBMS)

La Tabla Empleado: consiste en tres
columnas y tres filas. Las columnas o
campo conforman un registro lógico,
correspondiente a un empleado. La
tabla Empleados esta relacionada
con la tabla de Departamentos por
medio de columna "Numero de
Departamento“ que aparece en
ambas tablas.


Llave Primaria: Esta columna debe ser tal que identifique
de manera única e inequívoca cada fila.

Llave Foránea: Primaria y la llave foránea son usadas para
establecer relaciones entre tablas.

Nulos

Un Nulo se puede interpretar como un valor indefinido o como ningún valor. Los nulos son usados en las columnas donde se desconozca su valor (NO SIGNIFICA ESPACIOS EN BLANCO)

Vistas

los RDBMS proporcionan un mecanismo de vistas que permite que cada usuario tenga su propia vista o visión de la base de datos

Las vistas proporcionan un nivel de seguridad, ya que permiten excluir datos para que ciertos usuarios no los vean. Las vistas proporcionan un mecanismo para que los usuarios vean los datos en el formato que deseen.

Una vista representa una imagen consistente y permanente de la base de datos, incluso si la base de datos cambia su estructura.

REGLAS TEORICAS QUE ESTABLECIÓ CODD PARA DEFINIR UN SISTEMA DE ADMINISTRACIÓN DE BASES DE DATOS RELACIONALES

NORMALIZACION:

Normalización es una serie de reglas que involucra análisis y transformación de las estructuras de los datos en relaciones que exhiban propiedades únicas de consistencia, mínima redundancia y máxima estabilidad.

La normalización provee un método de remover todas estas indeseables anomalías haciendo la base de datos mas confiable y estable.

ANAMOLIAS:

Anomalía de inserción (INSERT)
Anomalía de Actualización (UPDATE)
Anomalía de borrado (DELETE)

PROPIEDADES DE UNA BASE DE DATOS DESPUÉS DE LA NORMALIZACION

Los requerimientos para almacenamiento de datos se minimizan, dado que el proceso de normalización sistemáticamente elimina la duplicación de los datos.

Desde que los datos son almacenados en el mínimo número de lugares, las posibilidades de inconsistencias en la información son reducidas al mínimo.

Las estructuras normalizadas son óptimas para efectuar actualizaciones de los datos. Dado que los datos existen en el mínimo número de lugares, una operación de actualización (UPDATE) necesitará acceder a una mínima cantidad de datos.

Normalización es un conjunto de reglas que sirven para ayudar a los diseñadores a desarrollar un esquema que minimice los problemas de lógica

Otra ventaja de la normalización de su base de datos es el consumo de espacio. Una base de datos normalizada puede ocupar menos espacio en disco que una no normalizada. Hay menos repetición de datos, lo que tiene como consecuencia un mucho menor uso de espacio en disco.

GRADOS DE NORMALIZACIÓN

Existen básicamente tres niveles de normalización:

Primera Forma Normal (1NF),
Segunda Forma Normal (2NF) y
Tercera Forma Normal (3NF).

GRADOS DE NORMALIZACIÓN

Primera Forma Normal (1NF)
La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas. Ésta es una regla muy fácil de seguir. Observe el esquema de la tabla Clientes de la base de datos.

Primera Forma Normal (1NF)

Clientes

ID Cliente
Nombre
Apellidos
Nombre_Producto1
Costo_Producto1
Imagen_Producto1
Nombre_Producto2
Costo_Producto2
Imagen_Producto2
Fecha_Pedido
Cantidad_Pedido
Nombre Cia Envios

La tabla tiene varias columnas repetidas. Éstas se refieren principalmente a los productos. De acuerdo con la regla, debe eliminar las columnas repetidas y crearles su propia tabla.

Primera Forma Normal (1NF)

Clientes Pedidos

ID_Clientes
Nombre_Productos
Nombre Costo_Producto
Apellidos Imagen_Producto
Direccion
Numero_Pedido
Fecha_Pedido
Cantidad_Pedido
Clave_Cia_Envios
Nombre_Ci_ Envios

Ahora tiene dos tablas.
No hay forma de relacionar los datos de la tabla original con los de la nueva tabla.
se debe añadir un campo clave a la segunda tabla de forma que se establezca la relación. Añada a la tabla Productos una clave primaria que se llame ID_Producto y añada una clave a la tabla Clientes que la relacione con la tabla Productos.

Clientes Pedidos

ID_Productos _ ID_Productos
ID_Clientes
Nombre_Productos
Nombre Costo_Producto
Apellidos Imagen_Producto
Direccion
Numero_Pedido
Fecha_Pedido
Cantidad_Pedido
Clave_Cia_Envios

Segunda Forma Normal (2NF)

La regla de la Segunda Forma Normal establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas. Una dependencia parcial es un término que describe a aquellos datos que no dependen de la clave de la tabla para identificarlos

Segunda Forma Normal (2NF)

Clientes Pedidos Productos

ID_Productos ID_Productos ID_Producto
ID_Clientes Nombre_Productos Fecha_Compra
Nombre Cantidad_Pedido Costos_Productos
Apellidos Imagen_Producto
Direccion
Numero_Pedido
Nombre_Cia_Envios

Tercera Forma Normal (3NF)

La regla de la Tercera Forma Normal señala que hay que eliminar y separar cualquier dato que no sea clave. El valor de esta columna debe depender de la clave. Todos los valores deben identificarse únicamente por la clave

Tercera Forma Normal (3NF)

Clientes Productos PedidoMaestro PedidoDetallado Cias_Envios

ID_cliente ID_Producto ID_Pedido
ID_PedidoDetallado ID_Cia_Envios

ID_Producto Nombre_Producto Fecha_Pedido
ID_Pedido Nombre_Cia_Envios.

Numero_Pedido Costos_Productos
Cantidad_Pedidos Fecha_Pedido

ID_Cia_EnviosFoto_ProductoCantidad_Pedido

Nombre

Apellidos

Direccion


Espero que me hallan entendido --> biggrin.gif

Go to the top of the page
 
+Quote Post
j0lvr
post Oct 7 2008, 07:10 PM
Post #2


Miembro
***


Group: Hackerss Member
Posts: 53
Joined: 25-September 08
From: Colombia
Member No.: 5,572



Yo pregunto --> como realizar un diccionario de datos ?
Go to the top of the page
 
+Quote Post
Ironic
post Oct 7 2008, 09:45 PM
Post #3


Adicto a Hackerss
Group Icon


Group: Root Admin
Posts: 1,443
Joined: 7-July 07
From: Buenos Aires, Argentina
Member No.: 2,688



http://es.wikipedia.org/wiki/Diccionario_de_datos

El diccionario de datos, es basicamente es donde especificas para que funciona cada tabla, cada campo, cada vista, cada store procedure, cada trigger...

Es decir, explicas que hace cada cosa...

Si tienes una tabla

Clientes
-IdCliente
-Nombre
-ApellidoCliente
-TieneAbono

Dberias especificar que hace esa tabla:
Cliente: Almacena la informacion existente de los actuales clientes
IdCliente: Identificador unico de cada cliente. Es autonumerico.
Nombre: Nombre del cliente. Longitud de 30 caracteres. No puede estar vacio
Apellido: Apellido del cliente. Es Opcional.
TieneAbono: Booleano. True si el cliente presenta un abono pago mensual. False si no lo hace.

algo asi seria...


--------------------
Mi blog: http://www.ironicnet.com
Mi fotolog: http://www.fotolog.com/ironicnet_com

Cualquier cosa: ironic@ironicnet.com
Msn: ironic@ironicnet.com

Registrate en Bux.to y sumate unos dolares mensuales!
No te hace millonario, pero ayuda...

Go to the top of the page
 
+Quote Post
j0lvr
post Oct 8 2008, 02:59 PM
Post #4


Miembro
***


Group: Hackerss Member
Posts: 53
Joined: 25-September 08
From: Colombia
Member No.: 5,572



Gracias por el apoyo compañero...

Pero tengo inconvenientes con el siguiente punto-->

Normalizacion de la siguiente estructura:

FAC-NUM:
FAC-FECHA: CLI-NOM:
CLI-DIR:
CLI-CC:
CLI-TEL:
CATEGORIA:
CODIGO:
DESC:
VR-UNIT:
CANT:

Para cada uno de ellos desarrolle el modelo entidad - relación, el modelo relacional y la normalización en 1FN, 2FN y 3FN:

El Seguro Sociall desea conocer los pacientes (DNI) que han sido atendidos en sus hospitales
(COD_H) y el doctor (COD_D) que los atiende. Se supone que un doctor sólo puede atender en
un hospital y que, aunque un paciente puede ser atendido en varios hospitales, en cada uno de
ellos sólo le atiende un doctor.
Go to the top of the page
 
+Quote Post
Ironic
post Oct 8 2008, 07:24 PM
Post #5


Adicto a Hackerss
Group Icon


Group: Root Admin
Posts: 1,443
Joined: 7-July 07
From: Buenos Aires, Argentina
Member No.: 2,688



Con que punto?

El diccionario de datos de eso, deberia especificar que tipo de dato (int, string, bit, etc) recibe el campo. Que funcion cumple el campo (guarda el nombre del cliente) y otras cosas(auto incremental, referencia a otra tabla, etc)


--------------------
Mi blog: http://www.ironicnet.com
Mi fotolog: http://www.fotolog.com/ironicnet_com

Cualquier cosa: ironic@ironicnet.com
Msn: ironic@ironicnet.com

Registrate en Bux.to y sumate unos dolares mensuales!
No te hace millonario, pero ayuda...

Go to the top of the page
 
+Quote Post
j0lvr
post Oct 14 2008, 10:40 AM
Post #6


Miembro
***


Group: Hackerss Member
Posts: 53
Joined: 25-September 08
From: Colombia
Member No.: 5,572



alguien me puede ayudar a entender la segunda forma normal (2FN) de codd cuando dice que Una tabla que está en la primera forma normal (1NF) debe satisfacer criterios adicionales para calificar para la segunda forma normal. Específicamente: una tabla 1NF está en 2NF si y solo si, dada cualquier clave candidata y cualquier atributo que no sea un constituyente de la clave candidato, el atributo no clave depende de toda la clave candidata en vez de solo una parte de ella.
Go to the top of the page
 
+Quote Post
j0lvr
post Oct 17 2008, 07:59 AM
Post #7


Miembro
***


Group: Hackerss Member
Posts: 53
Joined: 25-September 08
From: Colombia
Member No.: 5,572



QUOTE(j0lvr @ Oct 14 2008, 11:40 AM) *

Gracias por la ayuda no suministrada....

bueno tengo otra duda, en estos momentos empece a ver sql comand y quiero saber como puedo realizar codigo para insertar registros de dos o mas tablas diferentes... bueno aqui les dejo lo que he realizado asta. Ahora es facil, pero yo apenas lo veo. Me interesa el tema (los cuadros se los debo por que no se como subir la imagen a este post).

tengo seis tablas en sql comand:

QUOTE
-DEPART
-EMPLE
-HERRAMIENTAS
-HOSPITALES
-MEDICOS
-PERSONAS


codigo para crear la tablas -->

QUOTE
CREATE TABLE nombre_tabla ( nom_columna1 LONG, nom_columna2 TEXT (20), nom_columna3 TEXT (15));


codigo para ingresar registros a la tabla -->

QUOTE
INSERT INTO nombre_tabla VALUES ("registro1","registro2","registro3","registro4"); ..... etc

realizar el mismo procedimiento para demas filas...

codigo para realizar busqueda de datos -->

por ejemple:

Datos de los empleados ordenados por apellidos. -->

QUOTE
SELECT APELLIDO FROM EMPLE;



Datos de los empleados ordenados por número de departamento descendentemente -->
QUOTE
SELECT * FROM EMPLE ORDER BY EMP_NO DESC;

Datos de los empleados ordenados por número de departamento descendentemente y dentro de cada departamento ordenados por apellido ascendentemente. -->
QUOTE
SELECT * FROM EMPLE ORDER BY EMP_NO DESC,APELLIDO ASC;

Mostrar los datos de los empleados cuyo salario sea mayor que 2000000.-->
QUOTE
SELECT * FROM EMPLE WHERE SALARIO>2000000;

Mostrar los datos de los empleados cuyo oficio sea ‘ANALISTA’.-->
QUOTE
SELECT * FROM EMPLE WHERE OFICIO="ANALISTA";

Seleccionar el apellido y oficio de los empleados del departamento número 20.-->
QUOTE
SELECT * FROM EMPLE WHERE OFICIO AND APELLIDO AND DEP_NO=20;



Mostrar todos los datos de los empleados ordenados por apellido.-->
QUOTE
SELECT * FROM EMPLE ORDER BY APELLIDO;



Seleccionar los empleados cuyo oficio sea ‘VENDEDOR’. Mostrar los datos ordenados por apellido.-->
QUOTE
SELECT * FROM EMPLE WHERE OFICIO="VENDEDOR" ORDER BY APELLIDO;


espero que me halla espresado bien... blush.gif





This post has been edited by j0lvr: Oct 17 2008, 08:43 AM
Go to the top of the page
 
+Quote Post
j0lvr
post Oct 17 2008, 08:41 AM
Post #8


Miembro
***


Group: Hackerss Member
Posts: 53
Joined: 25-September 08
From: Colombia
Member No.: 5,572



Si han leido el post se daran cuenta que es facil pero yo tengo una dudita Como puedo seleccionar varios registros de varias tablas distintas... blink.gif

This post has been edited by j0lvr: Oct 17 2008, 08:49 AM
Go to the top of the page
 
+Quote Post
Ironic
post Oct 17 2008, 12:32 PM
Post #9


Adicto a Hackerss
Group Icon


Group: Root Admin
Posts: 1,443
Joined: 7-July 07
From: Buenos Aires, Argentina
Member No.: 2,688



Utilizando JOINS, es decir entrelazar informacion entre tablas

Por ejemplo
teniendo las tablas
Empresa, Empleado, Posicion

CODE
Select
*
from
Empleado EMPL
inner join Empresa EMPR on EMPL.idEmpresa = EMPR.idEmpresa
inner join Posicion Pos on EMPL.idPosicion = EMPL.idPosicion

Eso mostrara todos los empleados, la empresa a la que corresponde (todo el registro de la tabla), y la posicion (todo el registro de la posicion)

Hay diferentes tipos de joins, te recomiendo que busques informacion sobre ellos



--------------------
Mi blog: http://www.ironicnet.com
Mi fotolog: http://www.fotolog.com/ironicnet_com

Cualquier cosa: ironic@ironicnet.com
Msn: ironic@ironicnet.com

Registrate en Bux.to y sumate unos dolares mensuales!
No te hace millonario, pero ayuda...

Go to the top of the page
 
+Quote Post
j0lvr
post Oct 18 2008, 12:38 PM
Post #10


Miembro
***


Group: Hackerss Member
Posts: 53
Joined: 25-September 08
From: Colombia
Member No.: 5,572



Gracias de nuevo por la ayuda... ironic ...

Ahora quiero "impresionar" a mi profe y a mis compañeros y necesito de la colaboracion de "ustedes" bueno por lo que ven estoy aprendiendo sql comand y ya estamos que entramos a mysql y necesitaba un codigo sql comand para mi trabajo,.. bueno algo diferente algo sencillo pero impactante algo de lo que ustedes y no como yo podrian hacer si me entienden... se los agradeceria mucho.

This post has been edited by j0lvr: Oct 18 2008, 12:41 PM
Go to the top of the page
 
+Quote Post
Ironic
post Oct 18 2008, 01:11 PM
Post #11


Adicto a Hackerss
Group Icon


Group: Root Admin
Posts: 1,443
Joined: 7-July 07
From: Buenos Aires, Argentina
Member No.: 2,688



algo impactante? impresionar?

que quieres hacer?
no hay mucha ciencia en sql...


--------------------
Mi blog: http://www.ironicnet.com
Mi fotolog: http://www.fotolog.com/ironicnet_com

Cualquier cosa: ironic@ironicnet.com
Msn: ironic@ironicnet.com

Registrate en Bux.to y sumate unos dolares mensuales!
No te hace millonario, pero ayuda...

Go to the top of the page
 
+Quote Post
pelu
post Oct 18 2008, 01:32 PM
Post #12


Talibán del software libre.
Group Icon


Group: Colaborador
Posts: 633
Joined: 21-April 06
From: La concha de la lora
Member No.: 164



QUOTE(j0lvr @ Oct 18 2008, 08:38 PM) *
Gracias de nuevo por la ayuda... ironic ...

Ahora quiero "impresionar" a mi profe y a mis compañeros y necesito de la colaboracion de "ustedes" bueno por lo que ven estoy aprendiendo sql comand y ya estamos que entramos a mysql y necesitaba un codigo sql comand para mi trabajo,.. bueno algo diferente algo sencillo pero impactante algo de lo que ustedes y no como yo podrian hacer si me entienden... se los agradeceria mucho.


Siento ser un poco duro, pero si quieres realmente impresionar, te recomiendo que empieces de cero a hacer tus tablas.

CODE
[b]SELECT * FROM EMPLE WHERE OFICIO="ANALISTA";[/b]
   [b]SELECT * FROM EMPLE WHERE OFICIO="VENDEDOR" ORDER BY APELLIDO;[/b]


Vamos, tio, create una tabla para los oficios, creo que no es tan complicada y HAZ LOS JOINS por codigos NO POR VARCHARS, create sus indices y foreigns keys que tocan, y creo que así "impresionarás" mas a la gente, demostrando que sabes hacer tablas relacionales como toca.
Utiliza nomenclaturas claras, para que cuando alguien vea tu codigo, sepa exactamente de que va el tema.
Por ejemplo si tenemos una tabla llamada "EMPLE", haz los campos con nombre "EMP_"+ nombre_campo, para los campos que son de otras tablas (como OFICIO) si tienes un tabla OFICIO, por OFI_CODIGO, OFI_DESCRIPCION, y en la tabla "EMPLE" pon el campo "EMP_OFI_CODIGO".
Así es como se hacen las cosas bien y profecionalmente, la organizacion, simplicidad y calidad de tus desarrollos harán a los demás "asombrarse" smile.gif y te aseguro que si cumples estos puntos, las complejidades de las SELECTS serán mucho mas faciles.

Para muestra una imagen (no he puesto mas campos en la tabla empleado, por que es solo una imagen):



Saludos

This post has been edited by pelu: Oct 18 2008, 01:58 PM


--------------------
Go to the top of the page
 
+Quote Post
j0lvr
post Oct 20 2008, 03:19 PM
Post #13


Miembro
***


Group: Hackerss Member
Posts: 53
Joined: 25-September 08
From: Colombia
Member No.: 5,