luis palacio

luis palacio

viernes, 10 de diciembre de 2010

consulta linux

Características de LINUX

  1. UNIDADES DE ALMACENAMIENTO
UN BIT
Un bit es una señal electrónica que puede estar encendida (1) o apagada (0). Es la unidad más pequeña de información que utiliza un ordenador. Son necesarios 8 bits para crear un byte.

UN BYTE 
Una secuencia contigua de bits en una computadora binaria que comprende el sub-campo direccionable más pequeño del tamaño de palabra natural de la computadora. Esto es, la unidad de datos binarios más pequeña en que la computación es significativa, o se pueden aplicar las cotas de datos naturales. Por ejemplo, la serie CDC 6000 de mainframes científicas dividió sus palabras de 60 bits de punto flotante en 10 bytes de seis bits. Estos bytes convenientemente colocados forman los datos Hollerith de las tarjetas perforadas, típicamente el alfabeto de mayúsculas y los dígitos decimales

.UN KB ( kilobyte )
Es una unidad de almacenamiento de información cuyo símbolo es el kBy equivale a 103 bytes.

UN MB ( megabyte )
Es una unidad de medida de cantidad de datos informáticos. Es un múltiplo del byte u octeto, que equivale a 106 bytes.
 
UN GB ( gigabyte )
Un gigabyte es una unidad de almacenamiento de información cuyo símbolo es el GB, equivale a 109 bytes.

UN TB ( terabyte )
Un Terabyte es una unidad de almacenamiento de información cuyo símbolo es el TB, y equivale a 1012 bytes


2. ESTRUCTURA DE SISTEMAS DE ARCHIVOS DE LINUX


El proceso abierto y distribuido en el cual el sistema operativo Linux se ha desarrollado propicia un rápido crecimiento, tanto del sistema operativo, como de aplicaciones, y distribuciones integradas. Por tanto, existe la necesidad de la estandarización de la estructura del sistema de archivos de Linux. Este documento intenta especificar la localización estándar de archivos y directorios en sistemas Linux. Una estructura del sistema de archivos estandarizada permite a usuarios, desarrolladores, y distribuidores, el obtener componentes del sistema de varias fuentes que trabajarán juntas tan bien como si hubiesen sido desarrolladas bajo un proceso de desarrollo centralizado. Ésto también facilita la administración del sistema, así como el desarrollo de paquetes de segundas y terceras personas, y la  escritura de documentación que no depende de la implementación.

PROBLEMATICAS.

El sistema de archivos ha sido diseñado para ser usado por desarrolladores de distribuciones, desarrolladores de paquetes e implementadores de sistemas. De cualquier forma está hecho para ser una referencia y no es un tutorial de como manejar un sistema de archivos Linux ó jerarquía de directorios. 
Éstos son algunos de los problemas fundamentales que motivaron originalmente el esfuerzo de estandarización. No había una estructura única, bien aceptada estructura de directorios Linux, en su lugar había muchas estructuras cada una incompatible con las demás. Las jerarquías más ampliamente usadas no estaban bien estructuradas y diferían bastante de las estructuras de directorios modernas "estándares" (tales como System V, BSD, SunOS, y otras). El sistema de archivos era poco familiar e incómodo para los usuarios de UNIX con experiencia y los administradores que habían tenido experiencia con otros sistemas operativos similares a UNIX. La falta de regularidad también confundía a los recién-iniciados en Linux, especialmente aquellos que no tenían un conocimiento previo de UNIX. 
 
OBJETIVOS.

Al tratar de resolver los problemas arriba mencionados, se identificaron varios objetivos que necesitaban ser alcanzados en adición a los problemas más técnicos. Estas metas comprenden la corrección de problemas sobresalientes así como la validación de este estándar. 

Resolver los problemas listados antes, y al mismo tiempo limitar las dificultades transicionales mientras se traslada desde los antiguos estandartes de facto. Ganar la aprobación de los distribuidores, desarrolladores y otra gente importante en la comunidad Linux, así como alentarlos a que compartan con nosotros sus sugerencias. Proveer un estándar que la comunidad Linux escoja seguir por que resuelve los problemas anteriores y provee la más sensata estructura de sistemas de archivos de las instalaciones Linux. 

HISTORIA 

El mensaje original que motivó este esfuerzo para reestructurar el sistema de archivos Linux fue escrito por Olaf Kirsh <okir@monad.swb.de> el 02 de Agosto de 1993 en el entonces canal NORMAL de la lista de correo de los LINUX-activists. 

En corto tiempo se decidió que la mejor manera para acometer la necesaria reestructuración de el sistema de archivos de Linux sería la creación de una lista de correo separada con el fin de desarrollar un standard de consenso. 

Después de una discusión comprensiva y con muy pocas discordias un borrador preliminar fue emitido, con la ayuda de algunas personas dedicadas, el borrador fue terminado y el borrador resultante sometido a consideración en el canal FSSTND para mayor discusión. 

El primer borrador fue emitido al canal el 18 de Septiembre de 1993 por Daniel Quinlan. 

Al tiempo que la discusión continuaba y los borradores de las recomendaciones de el FSSTND se desarrollaban más, se establecieron contactos con los desarrolladores más accesibles quienes entonces ofrecieron su apoyo y comentarios a nuestro esfuerzo. 

Muchos desarrolladores de Linux estuvieron de acuerdo en que este esfuerzo de estandarización valía la pena y lo apoyaron. 

CARACTERISTICAS

El sistema de archivos UNIX está caracterizado por: 

Una estructura jerárquica. 
Un tratamiento consistente de la informacion de los archivos. 
Proteccion de los archivos. 

Este estándar del sistema de archivos Linux sigue el mismo principio basico que la mayoría de los sistemas de archivos UNIX siguen. Note, sin embargo que este estándar no intenta concordar en cada aspecto posible con alguna implementacion particular del sistema UNIX. De cualquier forma, muchos de los aspectos de este estándar estan basados en ideas encontradas en UNIX y sistemas similares a UNIX. 



3.COMANDOS LINUX-BAJO CONSOLA


password: contraseña. Con este comando podremos cambiar la contraseña de nuestra cuenta. Primero nos pedirá la contraseña actual como medida de seguridad. Después nos pedirá que introduzcamos dos veces seguidas la nueva contraseña.

aptitude: aptitud, habilidad. En el fondo juega con las siglas de apt para crear aptitude. Es una versión mejorada de apt. Si os habéis fijado en todos los manuales y entradas donde había un proceso de instalación he usado aptitude en lugar de apt. El segundo es quizá el más extendido al ser el que vio la luz primero.

cd
:
Nos devuelve al último directorio en el que estuviéramos. Lo descubrí por accidente.
Es muy práctico cuando queremos editar ficheros en dos lugares.
$ cd /etc/X11/
$ cd /backup/
$ cd -
Nos lleva a /etc/X11
$ cd -
nos devuelve a /backup
cd /…nos mandará a la raíz del sistema de ficheros.
Las rutas relativas son relativas a algo, y ese algo es la carpeta donde estemos actualmente. Imaginad que estamos en /home y queremos ir a una carpeta que se llama temporal dentro de vuestra carpeta personal. Con escribir…
$ cd tu_carpeta/temporal
…nos situará allí. Como véis hemos obviado el /home inicial ya que si no lo introducimos toma como referencia el directorio donde estamos, que es ese.
¿Y qué sucede si escribimos tan sólo…
$ cd
Sí, sólo “cd”. Esto lo que hace es que te lleva a tu carpeta personal directamente y estemos donde estemos. Es algo realmente muy práctico, muy simple y que no todos conocen.

apt:  cuando instala algo te puede realizar una sugerencia para que instales algo más que te podría venir bien, pero no lo hace. Hay programas que a la vez usan otros para algunas de sus funciones u opciones. apt no instalaría los segundos, como mucho te avisaría. Sin embargo aptitude sí que lo instalará porque sabe que de alguna forma es indispensable para el que has pedido.

apt-get update:  Actualiza los repositorios que son los que contienen los paquetes. Los repositorios son como las direcciones que contienen nuestros paquetes. apt-get update lo que hace es actualizar el listado de todos esos paquetes, con la dirección de dónde obtenerlos para que a la hora de hacer la búsqueda y su posterior descarga sea más rápida haciéndolo en nuestro ordenador.

kill:  En ocasiones el proceso no “muere” del todo, pero se le puede forzar al sistema para que lo mate con seguridad del siguiente modo:kill -9 O sudo:  super-user do: hacer como superusuario. La cuenta de usuario en Ubuntu es relativamente normal. Tiene derechos de administrador a medias. Me explico, los tiene, pero cada vez que se haga algo importante y de riesgo para el sistema, hay que hacerlo mediante el prefijo “sudo” y escribiendo después la contraseña.

clear o ps:  process status: estado de los procesos. Nos muestra lo que queramos saber de los procesos que están corriendo en nuestro sistema. Cada proceso está identificado con un número llamado PID
cp o copy: copiar. 
Copia el archivo indicado donde le digamos. Aquí podemos también jugar con las rutas, tanto para el fichero origen, como en el del destino. También podéis poner el nombre que le queréis poner a la copia. Por ejemplo, si estuviéramos en /etc/X11 y quisiéramos hacer una copia de seguridad de xorg.conf en nuestra carpeta personal.

mkdir pepino o rm: 
remove: borrar. Borra el archivo o la carpeta que le indiquemos. Como antes se puede indicar la ruta completa o el nombre del archivo. Esto a partir de ahora lo vamos a obviar, creo que ya ha quedado claro con los dos comandos anteriores.
          mkdir:
make directory: hacer directorio. Crea una carpeta con el nombre que le indiquemos. Nuevamente podemos usar rutas absolutas y relativas. Podemos indicarle toda la ruta que le precede al directorio que queremos crear, o si estamos ya en la carpeta que lo va a contener basta con poner tan sólo el nombre:
$ mkdir /home/tu_cuenta/pepino
Si ya estamos en /home/tu_cuenta…
$ mkdir pepino
rm:
remove: borrar. Borra el archivo o la carpeta que le indiquemos. Como antes se puede indicar la ruta completa o el nombre del archivo. Esto a partir de ahora lo vamos a obviar, creo que ya ha quedado claro con los dos comandos anteriores.
Para borrar un archivo:
$ rm nombre_archivo
Para borrar una carpeta vacía:
rm nombre_carpeta
Para borrar una carpeta que contiene archivos y/o otras carpetas que pueden incluso contener más:
rm -r nombre_carpeta
Otras opciones: “-f” no te pide una confirmación para eliminar o “-v” va mostrando lo que va borrando.

ls:  Además acepta ciertos argumentos que pueden ser interesantes. Para mostrar todos los archivos y carpetas, incluyendo los ocultos

chmod:Asigna al fichero nombre archivo permisos del lectura, escritura y ejecución para el propietario, grupo e invitado

tar xvf fichero.tar: Desempaqueta el archivo "fichero.tar" 
tar -czvf fichero_tar ficheros_comprimir: Comprime/Empaqueta los ficheros especificados en "ficheros_comprimir" en el fichero "fichero_tar" 
tar -tzvf fichero_tar: Muestra el contenido del fichero "fichero_tar" (comprimido con "tar") 

tar -tzvf /dev/st: Muestra el contenido del dispositivo de copia de seguridad "/dev"st0" 
tar -czvf /dev/st0: Descomprime el contenido del dispositivo de copia de seguridad "/dev/st0" en la ubicación donde se ejecute el comando 

mv fich1 ...fichN dir : mueve archivos a un directorio 

mv fich1 fich2: renombra un archivo

rm -r deltree: Eliminación de subdirectorio y todo su contenido.


4.INSTALACIÓN DE PROGRAMA POR CONSOLA EN LINUX

sudo apt-get install nombre-de-paquete

Ej/ Sudo apt-get install filezilla

En Gnewsense

Gnewsense es un derivado de Ubuntu que tiene la particularidad de poseer sólamente programas bajo licencia GNU/GPL en sus repositorios.
La instalación de estos es idéntica a la de Ubuntu.

En Fedora

--AdminFlisol 04:45 15 mar 2009 (UTC)
En Fedora existen asistentes gráficos que pueden ayudar en la instalación y también existe la opción manual por medio de comandos, explicaremos ambas pero Ud. es quien decide que usar.

Forma Gráfica
§                     Con Gnome
1.    menú Sistema
2.    Administración
3.    Añadir/Quitar software
§                     Con KDE
1.    ir al menú
2.    Aplicaciones
3.    Administración
4.    Añadir/Quitar software


5. CONFIGURACION DEL PROXY

Si estamos en la situación de estar detrás de un proxy y estamos intentando ejecutar cualquier aplicación, que no esté configurada anteriormente, desde la línea de comandos que requiera una conexión a Internet, veremos como no podremos hacer uso de tal conexión por no tener configurado el acceso al proxy.
Para poder configurarlo, una vez abierta la línea de comandos tan solo debemos hacer:
export http_proxy=http://usuario:contraseña@proxy:puerto


6.EJECUTAR PROGRAMA BAJO EXTENSION “sh”

/home/alberto/ofimatica #  sh so-8-pp10-eval-bin-linux-en-US_es.sh


7.SIMBOLO DEL DIRECTORIO RAIZ-LINUX


8. DIRECTORIO ANTERIOR
cd cambia de directorio


9. PAQUETE GRAFICO
En Ubuntu el gestor de paquetes gráfico por defecto es Synaptic, el cual podemos encontrar siguiendo las siguientes instrucciones:
Synaptic
1.    Menú Sistema (o, si su escritorio usa un Menú Inicio, sería Menú Inicio, Sistema)
2.    Buscar Administrador de Paquetes (a veces puede llevar el nombre de Synaptic)
3.    al hacer clic, el sistema le pedirá que confirme su identidad ingresando su contraseña
Tradicionalmente hablando, el gestor de paquetes es un programa de consola llamado apt-get, el cual se puede invocar con un comando como el siguiente:

ADMINISTRADOR DE ARCHIVOS

ytree - Administrador de archivos –
GESTOR DE DESCARGAS O ACTUALIZACION
 
El entorno de escritorio predeterminado de Ubuntu es GNOME y se sincroniza con sus liberaciones. Existen otras dos versiones oficiales de la distribución, una con el entorno KDE, llamada Kubuntu, y otra con el entorno Xfce, llamada Xubuntu
Al igual que la mayoría de las distribuciones basadas en GNU/Linux, Ubuntu es capaz de actualizar a la vez todas las aplicaciones instaladas en la máquina a través de repositorios.
NAVEGADOR POR DEFECTO

navegador web Mozilla Firefox

 ADMINISTRADOR DE ARCHIVOSThunar

diagrama del proyecto

martes, 23 de noviembre de 2010

extraccion de datos

Que son metodologías de la extracción de datos?
Son aquellos pasos que llevamos a cabo con el fin de saber qué es lo que quiere el cliente en que momento y de qué forma para satisfacer sus necesidades

Cuáles son?
A pesar de ser la gestión del conocimiento un objetivo tan claro y conocido, de disponer de una gran cantidad de información y documentación y de acumularse varios años de experiencia y casos de su uso en organizaciones representativas, aún subsisten problemas a la hora de enfrentarse a dicha tarea. Esta metodología consta de las siguientes cinco fases:
1.      Identificar
2.      Extraer
3.      Procesar
4.      Almacenar
5.      Compartir.
Fase Identificar: Persigue identificar los conocimientos que poseen las diversas fuentes de la empresa, para manipularlos, reconociendo al mismo tiempo al experto que posee dicho conocimiento. Esta fase constituye el cimiento sobre la cual se erige toda la GC.
Fase Extraer: Establece los mecanismos para extraer la mayor cantidad de conocimiento que sea posible, así como su grado de participación en la solución de problemas en la organización.
Para facilitar esta tarea es útil seguir el modelo de referencia de clasificación del conocimiento propuesto por (Skyrme, 2002). 
Fase Compartir: Tiene como objetivo brindar acceso a los depósitos de conocimiento y a la red de expertos a través de un portal corporativo. El portal emplea el mapa de conocimientos y diversas herramientas de manipulación del conocimiento para ubicar y acceder a la información, la cual se puede encontrar de manera distribuida.

Como se aplican al desarrollo de sistemas de información?
Se aplican cuando nos comunicamos con un cliente en común para saber sus necesidades y como desarrollarlas, en que tiempo y con qué especificaciones para suplir las necesidades de su empresa o negocio.

jueves, 11 de noviembre de 2010

consulta base de datos

Registro: un registro representa un objeto único de datos implícitamente estructurados en una tabla. En términos simples, una tabla de una base de datos puede imaginarse formada de filas y columnas o campos. Cada fila de una tabla representa un conjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma estructura.
Un registro es un conjunto de campos que contienen los datos que pertenecen a una misma repetición de entidad. Se le asigna automáticamente un número consecutivo (número de registro) que en ocasiones es usado como índice aunque lo normal y práctico es asignarle a cada registro un campo clave para su búsqueda.
La estructura implícita de un registro y el significado de los valores de sus campos exige que dicho registro sea entendido como una sucesión de datos, uno en cada columna de la tabla. La fila se interpreta entonces como una variable relacional compuesta por un conjunto de tuplas, cada una de las cuales consta de dos ítems: el nombre de la columna relevante y el valor que esta fila provee para dicha columna.
Cada columna espera un valor de un tipo concreto.

Tupla: En las ciencias de la computación una tupla puede tener dos significados distintos. Generalmente en los lenguajes de programación funcional y en otros lenguajes de programación, una tupla es un objeto que bien puede tener datos o diversos objetos, de forma similar a una tupla definida matemáticamente. Un objeto de este tipo es conocido también como record.

Una definición más formal del anterior párrafo sería: Conjunto de elementos de distinto tipo que se guardan de forma consecutiva en memoria.

En algunos lenguajes y especialmente en la teoría de bases de datos, una tupla se define como una función finita que mapea (asocia unívocamente) los nombres con algunos valores. Su propósito es el mismo que se definió en las matemáticas.

Un pequeño ejemplo puede ilustrar esto:

(jugador: "Luis", puntuación: 25)

En este caso se trata de una función que mapea el campo "jugador" con la cadena "Luis" y el campo "puntuación" al número entero 25. Es de notar que el orden de los componentes no es relevante, de esta forma la misma tupla puede ser re-escrita como: (puntuación: 25, jugador: "Luis”). En un modelo relacional tal y como se define en las tuplas, se suele representar una proposición simple, en este caso existe un jugador con el nombre "Luis" y que posee una puntuación de 25.

En definitiva, una tupla es un conjunto de datos, en el caso de una base de datos de una lista de empleados, cada tupla es el conjunto de datos de un mismo empleado.

Columna o base: En el contexto de una tabla de base de datos relacional, una columna es un conjunto de valores de datos de un simple tipo particular, uno por cada fila de la tabla.  Las columnas proporcionan la estructura según la cual se componen las filas.
El término campo es frecuentemente intercambiable con el de columna, aunque muchos consideran más correcto usar el término campo (o valor de campo) para referirse específicamente al simple elemento que existe en la intersección entre una fila y una columna.
Por ejemplo, una tabla que representa compañías pudo tener las siguientes columnas:
§  ID(identificador entero, único a cada fila)
§  Nombre (texto)
§  Dirección 1 (texto)
§  Dirección 2 (texto)
§  Ciudad (identificador entero, proviene de una tabla separada de ciudades, de la que cualquier información del estado o del país puede ser tomada)
§  Código postal (texto)
§  Industria (identificador entero, Proviene de una tabla separada de industrias)
§  etc.
Cada fila proporcionaría un valor de los datos para cada columna y después sería entendida como solo simple valor de datos estructurado, en este caso representando a una compañía. Más formalmente, cada fila puede ser interpretada como una variable relacional, compuesta por un conjunto de tuplas, con cada tupla consistiendo en los dos elementos: el nombre de la columna relevante y el valor que esta fila proporciona para esa columna.
Columna 1
Columna 2
Fila 1
Fila 1 Columna 1
Fila 1 Columna 2
Fila 2
Fila 2 Columna 1
Fila 2 Columna 2
Fila 3
Fila 3 Columna 1
Fila 3 Columna 2

Índice: El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla en una base de datos sencilla. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hagan frecuentes búsquedas.
El índice tiene un funcionamiento similar al índice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posición en la base de datos. Para buscar un elemento que esté indexado, sólo hay que buscar en el índice dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posición marcada por el índice.
Los índices pueden ser creados usando una o más columnas, proporcionando la base tanto para búsquedas rápidas al azar como de un ordenado acceso a registros eficiente.
Los índices son construidos sobre árboles B, B+, B* o sobre una mezcla de ellos, funciones de cálculo u otros métodos.
El espacio en disco requerido para almacenar el índice es típicamente menor que el espacio de almacenamiento de la tabla (puesto que los índices generalmente contienen solamente los campos clave de acuerdo con los que la tabla será ordenada, y excluyen el resto de los detalles de la tabla), lo que da la posibilidad de almacenar en memoria los índices de tablas que no cabrían en ella. En una base de datos relacional un índice es una copia de parte de una tabla.
Algunas bases de datos amplían la potencia del indexado al permitir que los índices sean creados de funciones o expresiones. Por ejemplo, un índice puede ser creado sobre la función upper (apellido), que almacenaría en el índice solamente las versiones mayúsculas del campo apellido. Otra opción a veces soportada, es el uso de índices "filtrados", donde las entradas del índice son creadas solamente para los registros que satisfagan una cierta expresión condicional. Un aspecto adicional de flexibilidad es permitir la indexación en funciones definidas por el usuario, también como expresiones formadas de un surtido de funciones incorporadas. Todos estos refinamientos de la indexación son soportados en Visual FoxPro, por ejemplo.1
Los índices pueden ser definidos como únicos o no únicos. Un índice único actúa como una restricción en la tabla previniendo filas idénticas en el índice.

Llave o clave: una llave o clave primaria es un indicador único en una tabla, por ejemplo:

Tabla: Facturas
Campos:
- ID Factura (ID Factura es la clave primaria, única e irrepetible para cada factura)
- SucursalDeVenta (otro campo)
- FechaDeVenta (otro campo)

Luego tenemos la clave foránea, que también es un indicador muy similar a la clave primaria:

Tabla: Detalles Facturas
Campos:
- IDDetalleFactura (IDDetalleFactura es la clave primaria, única e irrepetible para cada detalle de cada factura)
-ID Factura (ID Factura es ahora nuestra clave foránea ya que es la clave por la cual se relacionan ambas tablas)
- Ítem (otro campo)
- Cantidad (otro campo)

En resumen, las claves primarias y foráneas permiten relacionar tablas, cuando la clave se encuentra como índice único de la tabla se llama primaria, y cuando es la referencia y relación hacia otra tabla es la foránea. En las fuentes te dejo más información.

--------------------------------------…
Ahora, los atributos son las propiedades de una entidad. Están relacionados a la POO (Programación Orientada a Objetos). Para definirlo en términos más comunes, son como características de cierto objeto.

Por ejemplo:

Objeto: Silla

Atributos (propiedades):
Color: Marrón
Material: Madera.
Etc...

Clave primaria: En el diseño de bases de datos relacionales, se llama clave primaria a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No pueden haber dos filas en una tabla que tengan la misma clave primaria.
Una clave primaria debe identificar unívocamente a todas las posibles filas de una tabla y no solo a las filas que se encuentran en un momento determinado. Ejemplos de claves primarias son DNI (asociado a una persona) o ISBN (asociado a un libro). Las guías telefónicas y diccionarios no pueden usar nombres o palabras o números del sistema decimal de Dewey como claves candidatas, porque identifican unívocamente números de teléfono o palabras.
Una clave primaria es un caso especial de clave única. La mayor diferencia es que para claves únicas, no se impone automáticamente la restricción implícita NOT NULL, mientras que para claves primarias, sí. Así, los valores en columnas de clave única pueden o no ser NULL. Otra diferencia es que las claves primarias deben definirse por medio de otra sintaxis.
El modelo relacional, según se lo expresa mediante cálculo relacional y álgebra relacional, no distingue entre clave primaria y otros tipos de claves. Las claves primarias fueron agregadas al estándar SQL principalmente para conveniencia del programador.
Tanto claves únicas como claves primarias pueden referenciarse con claves foráneas.

Clave foránea: En el contexto de bases de datos relacionales, una clave foránea (o Foreign Key FK) es una limitación referencial entre dos tablas. La clave foránea identifica una columna o grupo de columnas en una tabla (tabla hija o referendo) que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las columnas en la tabla referendo deben ser la clave primaria u otra clave candidata en la tabla referenciada.
Los valores en una fila de las columnas referendo deben existir solo en una fila en la tabla referenciada. Así, una fila en la tabla referendo no puede contener valores que no existen en la tabla referenciada. De esta forma, las referencias pueden ser creadas para vincular o relacionar información. Esto es una parte esencial de la normalización de base de datos. Múltiples filas en la tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma fila en la tabla referenciada. Mayormente esto se ve reflejado en una relación uno (tabla maestra o referenciada) a muchos (tabla hija o referendo).
La tabla referendo y la tabla referenciada pueden ser la misma, esto es, la clave foránea remite o hace referencia a la misma tabla. Esta clave externa es conocida en SQL: 2003 como auto-referencia o clave foránea recursiva. Una tabla puede tener múltiples claves foráneas y cada una puede tener diferentes tablas referenciadas. Cada clave foránea es forzada independientemente por el sistema de base de datos. Por tanto, las relaciones en cascada entre tablas pueden realizarse usando claves foráneas. Configuraciones impropias de las claves foráneas o primarias o no forzar esas relaciones son frecuentemente la fuente de muchos problemas para la base de datos o para el modelamiento de los mismos.



Tipos de bases de datos: Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se esté manejando, o la utilidad de la misma:
Según la variabilidad de los datos almacenados
Bases de datos estáticas
Éstas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones.
Bases de datos dinámicas
Éstas son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización, borrado y adición de datos, además de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un sistema de información de una tienda de abarrotes, una farmacia, un videoclub.
Según el contenido
Bases de datos bibliográficas
Solo contienen un subrogante (representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque si no, estaríamos en presencia de una base de datos a texto completo (o de fuentes primarias —ver más abajo). Como su nombre lo indica, el contenido son cifras o números. Por ejemplo, una colección de resultados de análisis de laboratorio, entre otras.
Bases de datos de texto completo
Almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una colección de revistas científicas.
Directorios
Un ejemplo son las guías telefónicas en formato electrónico.
Bases de datos o "bibliotecas" de información química o biológica
Son bases de datos que almacenan diferentes tipos de información proveniente de la química, las ciencias de la vida o médicas. Se pueden considerar en varios subtipos:
§  Las que almacenan secuencias de nucleótidos o proteínas.
§  Las bases de datos de rutas metabólicas.
§  Bases de datos de estructura, comprende los registros de datos experimentales sobre estructuras 3D de biomoléculas-
§  Bases de datos clínicas.
§  Bases de datos bibliográficas (biológicas, químicas, médicas y de otros campos): PubChemMedlineEBSCOhost.
Modelos de bases de datos: Además de la clasificación por la función de las bases de datos, éstas también se pueden clasificar de acuerdo a su modelo de administración de datos.
Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos.
Algunos modelos con frecuencia utilizados en las bases de datos:
Bases de datos jerárquicas
Éstas son bases de datos que, como su nombre indica, almacenan su información en una estructura jerárquica. En este modelo los datos se organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas.
Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento.
Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos.
Base de datos de red
Éste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico).
Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución eficiente al problema de redundancia de datos; pero, aun así, la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales.
Bases de datos transaccionales
Son bases de datos cuyo único fin es el envío y recepción de datos a grandes velocidades, estas bases son muy poco comunes y están dirigidas por lo general al entorno de análisis de calidad, datos de producción e industrial, es importante entender que su fin único es recolectar y recuperar los datos a la mayor velocidad posible, por lo tanto la redundancia y duplicación de información no es un problema como con las demás bases de datos, por lo general para poderlas aprovechar al máximo permiten algún tipo de conectividad a bases de datos relacionales.
Bases de datos relacionales
Éste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postulados sus fundamentos en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese a que ésta es la teoría de las bases de datos relacionales creadas por Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es pensando en cada relación como si fuese una tabla que está compuesta por registros (las filas de una tabla), que representarían las tuplas, y campos (las columnas de una tabla).
En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario esporádico de la base de datos. La información puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información.
El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQLStructured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales.
Durante su diseño, una base de datos relacional pasa por un proceso al que se le conoce como normalización de una base de datos.
Durante los años 80 la aparición de dBASE produjo una revolución en los lenguajes de programación y sistemas de administración de datos. Aunque nunca debe olvidarse que dBASE no utilizaba SQL como lenguaje base para su gestión.
Bases de datos multidimensionales
Son bases de datos ideadas para desarrollar aplicaciones muy concretas, como creación de Cubos OLAP. Básicamente no se diferencian demasiado de las bases de datos relacionales (una tabla en una base de datos relacional podría serlo también en una base de datos multidimensional), la diferencia está más bien a nivel conceptual; en las bases de datos multidimensionales los campos o atributos de una tabla pueden ser de dos tipos, o bien representan dimensiones de la tabla, o bien representan métricas que se desean estudiar.
Bases de datos orientadas a objetos
Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos losobjetos completos (estado y comportamiento).
Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos:
§  Encapsulación - Propiedad que permite ocultar la información al resto de los objetos, impidiendo así accesos incorrectos o conflictos.
§  Herencia - Propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases.
§  Polimorfismo - Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos.
En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre los datos como parte de la definición de la base de datos. Una operación (llamada función) se especifica en dos partes. La interfaz (o signatura) de una operación incluye el nombre de la operación y los tipos de datos de sus argumentos (o parámetros). La implementación (o método) de la operación se especifica separadamente y puede modificarse sin afectar la interfaz. Los programas de aplicación de los usuarios pueden operar sobre los datos invocando a dichas operaciones a través de sus nombres y argumentos, sea cual sea la forma en la que se han implementado. Esto podría denominarse independencia entre programas y operaciones.
SQL: 2003, es el estándar de SQL92 ampliado, soporta los conceptos orientados a objetos y mantiene la compatibilidad con SQL92.
Bases de datos documentales
Permiten la indexación a texto completo, y en líneas generales realizar búsquedas más potentes. Tesaurus es un sistema de índices optimizado para este tipo de bases de datos.
Bases de datos deductivas
Un sistema de base de datos deductiva, es un sistema de base de datos pero con la diferencia de que permite hacer deducciones a través de inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base de datos. Las bases de datos deductivas son también llamadas bases de datos lógicas, a raíz de que se basa en lógica matemática.
Gestión de bases de datos distribuida (SGBDD)
La base de datos y el software SGBD pueden estar distribuidos en múltiples sitios conectados por una red. Hay de dos tipos:
1. Distribuidos homogéneos: utilizan el mismo SGBD en múltiples sitios.
2. Distribuidos heterogéneos: Da lugar a los SGBD federados o sistemas multibase de datos en los que los SGBD participantes tienen cierto grado de autonomía local y tienen acceso a varias bases de datos autónomas preexistentes almacenados en los SGBD, muchos de estos emplean una arquitectura cliente-servidor.
Estas surgen debido a la existencia física de organismos descentralizados. Esto les da la capacidad de unir las bases de datos de cada localidad y acceder así a distintas universidades, sucursales de tiendas, etcétera.