Dados dos conjuntos A y B, el producto cartesianos de estos
dos conjuntos es el conjunto formado por todos los pares ordenados (a,b) donde a es un elemento de A y b es un elemento de B. Relacin Dados dos conjuntos A y B una relacin es un subconjunto del producto cartesiano A x B.
Un elemento a, que pertenece al conjunto A, est relacionado con un elemento b, que pertenece al conjunto B, si el par (a, b) pertenece a un subconjunto G (llamado grafo) del producto cartesiano A x B. Ejemplo: Sean A = {a, b, c} y B = {1, 2} dos conjuntos. El producto cartesiano A x B = {(a,1), (a,2), (b,1), (b,2), (c,1), (c,2)}. Una relacin sera R = {(a,1),(c,2)}.
A las relaciones tambin se les llama correspondencias.
Producto cartesiano Considere dos conjuntos arbitrarios A y B. El conjunto de todas las parejas ordenadas (a, b) en donde a A y b B se llama producto o producto cartesiano de A y B. La definicin de producto cartesiano puede extenderse fcilmente al caso de ms de dos conjuntos.
Se llama producto cartesiano de dos conjuntos A y B y se representa A x B, al conjunto de pares ordenados (a, b), tales que el primer elemento pertenece al primer conjunto y el segundo elemento al segundo conjunto. Es decir: A x B = {(a, b) / a A, b B} El producto cartesiano, en general, no es conmutativo. Es decir: A x B B x A.
Puede ocurrir que los conjuntos A y B sean coincidentes.
EJEMPLO:
Si A = {a, b, c} y B = {1, 2, 3, 4}, el producto cartesiano es:
A x B = {(a, 1), (a, 2), (a, 3), (a, 4), (b, 1), (b, 2), (b, 3), (b, 4), (c, 1), (c, 2), (c, 3), (c, 4)}
Se puede representar grficamente por medio de puntos en un plano, como se muestra a continuacin. Aqu, cada punto P representa una pareja ordenada (a, b) de nmeros reales y viceversa; la lnea vertical a travs de P encuentra al eje x en a, y la lnea horizontal a travs de P encuentra el eje y en b. A esta representacin se le conoce como diagrama cartesiano.
Hay otra manera de visualizar una relacin y es a travs de una representacin grfica, donde se destaquen los puntos en el plano que pertenecen a A y los puntos que pertenecen a B. Se trazan flechas que indican la relacin que existe entre cada elemento del conjunto A y su correspondiente en el conjunto B. A esta representacin grfica se le conoce como un diagrama de flechas.
Propiedades De Las Relaciones (Reflexiva, Simtrica, Asimtricas y Transitivas, etc...) Relaciones Reflexivas e Irreflexivas
Una relacin R en un conjunto A es reflexiva si (a, a) R para todas las a A, esto es, si a R e para todas las a e A. Una relacin R en un conjunto A es irreflexiva si a R a para toda a A.
Por consiguiente, R es reflexiva si cada elemento a e A est relacionado consigo mismo y es irreflexiva si ningn elemento est relacionado consigo mismo.
Ejemplo 1:
(a) Sea = [(a, a)\ a A], de modo que A es la relacin de igualdad en el conjunto A. Entonces A es reflexiva, ya que (a, a) para todas las a e A.
(b) Sea R = {(a, b) e A x A | a + b}, R es la relacin de desigualdad en el conjunto A. Entonces R es irreflexible, ya que (a, a) R para todas las x A.
(c) Sean A = {1, 2, 3}. y J = {(1, 1), (1, 2)}. Entonces A es reflexiva ya
(2,2) R y (.3,3) R. Por otra parte, R no es irreflexiva, ya que (1, l) R.
(d) Sea A un conjunto no vacio. Sea R = A x A, la relacin vaca. Enlaces R no es reflexiva, ya que (a, a) R para todas las a A (el conjunto vaco tiene elementos). Sin embargo, R es irreflexiva.
Relaciones Simtricas y Asimtrica
Una relacin R en un conjunto A es simtrica si cuando a R b, entonces b R a. De esto se sigue que R no es simtrica se tiene a y b A con a R b, pero b R a. Una relacin R en un conjunto A es asimtrica si cuando a R b, entonces b Ra. De esto se sigue que R no es simtrica si se tiene a y b e A con ambos a R b y b R a. Una relacin R en un conjunto A es asimtrica si cuando a R b y b R a, entonces a = b. Otra forma de expresar esta definicin es diciendo que R es anti simtrica si cuando a b, se tiene a R b o b R a. De esto se sigue que R no es anti simtrica si se tiene a y b en A. a b, y ambas a R b y b R a.
Ejemplo Sea A = [a, b, c, d, e} y sea R la relacin simtrica dada por R = {(a, b), (b, a), (a, c), (c, a), (b, c), (c, b), (b, e), (e, b), (e, a), (a, e), (c,a), (a,c)} El grafo dirigido de R se muestra en la figura 2(a), mientras que en la figura
Grafo dirigido de R Grafo dirigido de R
Aparece el grado de R. Obsrvese que cada arista no dirigida corresponde a dos pares ordenados en la relacin R.
A una relacin simtrica R en un conjunto A se le llamar conexa si existe una trayectoria de cualquier elemento de A a cualquier otro elemento de A. Esto significa sencillamente que el grafo de R est todo en una pieza. En la figura 3 se muestran los grafos de dos relaciones simtricas. El grafo de la figura 3(a) est conectado mientras que el de la figura 3(b) no lo est.
Relaciones Transitivas
Se dice que una relacin R en un conjunto A es transitiva si cuando a R b y b R e, entonces a R c. Se sigue que R no es transitiva si y slo si se puede encontrar elemento a, b y c en A tal que a R b y b R c, pero a R c. Ejemplo: Sea A = Z el conjunto de los enteros y sea R la relacin considerada en el ejemplo 2 Para ver si R es transitiva, se supone que a R b y b R c. Por consiguiente, a < b; b < c. Entonces se sigue que a < c, por lo cual a R c. De aqu que R sea transitiva.
Una relacin R en un conjunto A es transitiva si y slo si satisface las siguientes propiedades: Si existe una trayectoria de longitud mayor que 1 del vrtice a al vrtice b, hay una trayectoria de extensin 1 de a a b (esto es, a est relacionada con b). Establecido algebraicamente, R es transitiva si y slo si Rn R para todas las n 1.
Es posible caracterizar la relacin transitiva por su matriz MR = [mij] as:
si mij =1 y mjk = 1, entonces mik = 1
Para ver qu significa transitividad en trminos del grafo dirigido de una relacin, se traducir esta definicin a trminos geomtricos.
Si se examinan los vrtices particulares a y c, las condiciones a R b y b R c
ocurrirn si y slo si existe una trayectoria de longitud 2 de a a c, esto es, si y slo si a R2 c. Es posible replantear la definicin de transitividad como sigue: Si a R2 c, entonces a R c, esto es, R2 R (como un subconjunto de A x A).
Relaciones De Equivalencia (Cerraduras, Clases De Equivalencia y Particiones) Cerradura de una relacin Definicin. Sea R una relacin en un conjunto A. Una cerradura reflexiva ref( R ) de R en A es la menor relacin que la incluye y que es reflexiva, con smbolos: ( R reflexiva) (A R ref( R )) R = ref( R )) Una cerradura simtrica sim( R ) de R en A es la menor relacin que la incluye y que es simtrica, con smbolos: ( Rreflexiva) (A R ref( R )) R = ref( R )) Una cerradura transitiva trans( R ) de R en A es la menor relacin que la incluye y que es transitiva, con smbolos: ( R reflexiva) (A R ref( R )) R = ref( R )
La cerradura reflexiva y la cerradura simtrica de una relacin es muy simple de encontrar, solamente se le agregan los pares necesarios de una forma directa. Cuando conocemos la matriz asociada a la relacin, la forma de encontrar las cerraduras anteriores es muy simple.
Teorema: Sea R una relacin en A y M R su matriz asociada. La cerradura reflexiva y la cerradura simtrica de R son nicas y se pueden obtener mediante las matrices siguientes M ref(R) = M R I n , donde I n es la matriz identidad de orden |A|. M sim(R) = [a ij ], donde a ji = 1 si a ij = 1 en M R .
La Matriz identidad I n de orden n es: {$ {(1,,0), (vdots, ddots, vdots), (0,,1)] $} O sea que para lograr la cerradura reflexiva debemos agregar 1s en la diagonal, para la cerradura simtrica debemos agregar 1s en luagres simtricos a la diagonal principal donde existan 1s. Cierre de equivalencia
Para calcular el cierre de equivalencia de una relacin binaria R sobre un conjunto A: Calcularemos primero su cierre reexivo, (R) Sobre el resultado calcularemos el cierre simtrico, ((R)) nalmente el cierre transitivo del resultado anterior, (((R)))
Clases de Equivalencia Al conjunto de los elementos del conjunto A que estn relacionados con l se llama clase de equivalencia. Ejemplo: La relacin a - b = 2.k (mltiplo de 2), siendo a y b nmeros enteros es una relacin de equivalencia porque cumple las propiedades: Reflexiva: a - a = 0 = 2.k (k = 0). Simtrica: a - b = b - a porque b - a = -(a - b). Si a - b es mltiplo de 2, -(a - b) tambin lo ser. Transitiva: a - b = 2.k1 b - c = 2.k2 Sumando queda a - c = 2.k3 Entonces a - c es mltiplo de 2.
En el ejemplo anterior, la clase de equivalencia del nmero cero (uno de los elementos del conjunto de los nmeros enteros) C(0) = {... -4, -2, 0, 2, 4, ...}, pues 0 - (-4) es mltiplo de 2, 0 - (-2) es mltiplo de 2 ya s sucesivamente. La clase de equivalencia del nmero 1 ser C(1) = {... -5, -3, -1, 1, 3, 5, ...} pues la diferencia entre 1 y los nmeros indicados es mltiplo de 2.
Del mismo modo podramos calcular las clases de equivalencia de ms nmeros.
El conjunto formado por las clases de equivalencia se llama conjunto cociente. En el ejemplo anterior el conjunto cociente Z / 2 es el conjunto formado por las clases de todos los elementos Z / 2 = {C(0), C(1), C(2), ... }. Particiones
Sea X un conjunto. P es una particin de X si y slo si:
Los conjuntos de P son disyuntos 2 a 2, es decir, si y entonces Observe que si P es una particin de X, entonces todo elemento de X est en uno y slo un elemento uno y slo un elemento de modo que parte a en conjuntos disyuntos. Por ejemplo, el conjunto de barriles propuesto al comienzo de la seccin es una particin del conjunto de mangos. Otro ejemplo de una particin es de la divisin poltica de un pas: El pas (visto como un conjunto de personas) se parte en estados o departamentos no vacos disyuntos entre s. Ejemplo
Sea ={1, 2, 3, 4, 5, 6, 7, 8, 9} Entonces = {{1, 9}, {2, 8}, {3, 4, 5, 6, 7}} Es una particin de X en tres conjuntos: elementos externos (1,9), elementos semi-externos (2, 8) y elementos internos (3, 4, 5, 6, 7). Note que Q = {{1, 2, 9}, {2, 8}, {3, 4, 5, 6, 7}} no es particin de X (por qu?). Como lo habamos insinuado, resulta que toda relacin de equivalencia determina de manera natural una particin.
Base de datos: El lenguaje de consulta estructurado o SQL (por sus siglas en ingls Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus caractersticas es el manejo del lgebra y el clculo relacional que permiten efectuar consultas con el fin de recuperar de forma sencilla informacin de inters de bases de datos, as como hacer cambios en ellas. Caractersticas generales del SQL El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales y permite as gran variedad de operaciones. Es un lenguaje declarativo de "alto nivel" o "de no procedimiento" que, gracias a su fuerte base terica y su orientacin al manejo de conjuntos de registros y no a registros individuales permite una alta productividad en codificacin y la orientacin a objetos. De esta forma, una sola sentencia puede equivaler a uno o ms programas que se utilizaran en un lenguaje de bajo nivel orientado a registros. SQL tambin tiene las siguientes caractersticas: Lenguaje de definicin de datos: El LDD de SQL proporciona comandos para la definicin de esquemas de relacin, borrado de relaciones y modificaciones de los esquemas de relacin. Lenguaje interactivo de manipulacin de datos: El LMD de SQL incluye lenguajes de consultas basado tanto en lgebra relacional como en clculo relacional de tuplas. Integridad: El LDD de SQL incluye comandos para especificar las restricciones de integridad que deben cumplir los datos almacenados en la base de datos. Definicin de vistas: El LDD incluye comandos para definir las vistas. Control de transacciones: SQL tiene comandos para especificar el comienzo y el final de una transaccin. SQL incorporado y dinmico: Esto quiere decir que se pueden incorporar instrucciones de SQL en lenguajes de programacin como: C++, C, Java, PHP, Cobol, Pascal y Fortran. Autorizacin: El LDD incluye comandos para especificar los derechos de acceso a las relaciones y a las vistas. Tipos de Datos Algunos de los tipos de datos bsicos de SQL son: Date: una fecha de calendario que contiene el ao (de cuatro cifras), el mes y el da. Time: La hora del da en horas minutos segundos (el valor predeterminado es 0). Timestamp: la combinacin de Date y Time. Optimizacin Como ya se dijo antes, y suele ser comn en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qu es lo que se quiere y no cmo conseguirlo, por lo que una sentencia no establece explcitamente un orden de ejecucin. El orden de ejecucin interno de una sentencia puede afectar seriamente a la eficiencia del SGBD, por lo que se hace necesario que ste lleve a cabo una optimizacin antes de su ejecucin. Muchas veces, el uso de ndices acelera una instruccin de consulta, pero ralentiza la actualizacin de los datos. Dependiendo del uso de la aplicacin, se priorizar el acceso indexado o una rpida actualizacin de la informacin. La optimizacin difiere sensiblemente en cada motor de base de datos y depende de muchos factores. Existe una ampliacin de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el acceso a bases de datos difusas, usando la lgica difusa. Este lenguaje ha sido implementado a nivel experimental y est evolucionando rpidamente. Lenguaje sql para crear tablas, editar, insertar, consultar y borrar y todo lo referente. Lenguaje de definicin de datos (DDL) El lenguaje de definicin de datos (en ingls Data Definition Language, o DDL), es el que se encarga de la modificacin de la estructura de los objetos de la base de datos. Incluye rdenes para modificar, borrar o definir las tablas en las que se almacenan los datos de la base de datos. Existen cuatro operaciones bsicas: CREATE, ALTER, DROP y TRUNCATE. CREATE | CREAR Este comando permite crear objetos de datos, como nuevas bases de datos, tablas, vistas y procedimientos almacenados Ejemplo (crear una tabla) CREATE TABLE 'CUSTOMERS'; ALTER | MODIFICAR Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar ndices a una tabla, modificar un trigger, etc. Ejemplo (agregar columna a una tabla) ALTER TABLE 'ALUMNOS' ADD EDAD INT UNSIGNED; DROP | ELIMINAR Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, ndice, trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER. Ejemplo DROP TABLE 'ALUMNOS';. TRUNCATE | BORRAR TABLA Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho ms rpido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE slo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la clusula WHERE. Si bien, en un principio, esta sentencia parecera ser DML (Lenguaje de Manipulacin de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transaccin. Ejemplo TRUNCATE TABLE 'NOMBRE_TABLA'; Lenguaje de manipulacin de datos DML(Data Manipulation Language) Un lenguaje de manipulacin de datos (Data Manipulation Language, o DML en ingls) es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado para recuperar y manipular datos en una base de datos relacional. SELECT | SELECCIONAR La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base de datos. Forma bsica SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla>|<nombre_vista> [{,<nombre_tabla>|<nombre_vista>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC] [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]] SELECT Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de seleccin.
ALL Indica que queremos seleccionar todos los valores.Es el valor por defecto y no suele especificarse casi nunca.
DISTINCT Indica que queremos seleccionar slo los valores distintos.
FROM Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista ms de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas es necesario aplicar una condicin de combinacin a travs de una clusula WHERE.
WHERE Especifica una condicin que debe cumplirse para que los datos sean devueltos por la consulta. Admite los operadores lgicos AND y OR.
GROUP BY Especifica la agrupacin que se da a los datos. Se usa siempre en combinacin con funciones agregadas.
HAVING Especifica una condicin que debe cumplirse para que los datos sean devueltos por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY y la condicin debe estar referida a los campos contenidos en ella.
ORDER BY Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC. Ejemplo: Para formular una consulta a la tabla Coches y recuperar los campos matricula, marca, modelo, color, numero_kilometros, num_plazas debemos ejecutar la siguiente consulta. Los datos sern devueltos ordenados por marca y por modelo en orden ascendente, de menor a mayor. La palabra clave FROM indica que los datos sern recuperados de la tabla Coches. SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM Coches ORDER BY marca,modelo; Ejemplo de Consulta simplificada a travs de un comodn de Campos (*): El uso del asterisco indica que queremos que la consulta devuelva todos los campos que existen en la tabla y los datos sern devueltos ordenados por marca y por modelo. SELECT * FROM Coches ORDER BY marca, modelo; Clusula WHERE La clusula WHERE es la instruccin que nos permite filtrar el resultado de una sentencia SELECT. Habitualmente no deseamos obtener toda la informacin existente en la tabla, sino que queremos obtener slo la informacin que nos resulte til en ese momento. La clusula WHERE filtra los datos antes de ser devueltos por la consulta. Cuando en la Clusula WHERE queremos incluir un tipo texto, debemos incluir el valor entre comillas simples. Ejemplos: En nuestro ejemplo, se desea consultar un coche en concreto, para esto se agreg una clusula WHERE. Esta clusula especifica una o varias condiciones que deben cumplirse para que la sentencia SELECT devuelva los datos. En este caso la consulta devolver slo los datos del coche con matrcula para que la consulta devuelva slo los datos del coche con maricula MF-234- ZD o bien la matrcula FK-938-ZL . Se puede utilizar la clusula WHERE solamente, en combinacin con tantas condiciones como queramos. SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM Coches WHERE matricula = 'MF-234-ZD' OR matricula = 'FK-938-ZL' ;
Una Condicin WHERE puede ser negada a travs del Operador Lgico NOT. La Siguiente consulta devolver todos los datos de la tabla Coches, menos el que tenga la Matrcula MF-234- ZD . SELECT matricula,marca, modelo, color, numero_kilometros, num_plazas FROM coches WHERE NOT matricula = 'MF-234-ZD'; La Siguiente consulta utiliza la condicional DISTINCT, la cual nos devolver todos los valores distintos formados por los Campos Marca y Modelo. de la tabla coches. SELECT DISTINCT marca, modelo FROM coches; Clusula ORDER BY La clusula ORDER BY es la instruccin que nos permite especificar el orden en el que sern devueltos los datos. Podemos especificar la ordenacin ascendente o descendente a travs de las palabras clave ASC y DESC. La ordenacin depende del tipo de datos que este definido en la columna, de forma que un campo nmerico ser ordenado como tal, y un alfanmerico se ordenar de la A a la Z, aunque su contenido sea nmerico. El valor predeterminado es ASC si no se especifica al hacer la consulta. Ejemplos: SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM coches ORDER BY marca ASC,modelo DESC; Este ejemplo, selecciona todos los campos matricula, marca, modelo, color, numero_kilometros y num_plazas de la tabla coches, ordenndolos por los campos marca y modelo, marca en forma ascendente y modelo en forma descendente. SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM coches ORDER BY 2; Este ejemplo, selecciona todos los campos matrcula, marca, modelo, color, numero_kilometros y num_plazas de la tabla coches, ordenndolos por el campo marca, ya que aparece en segundo lugar dentro de la lista de campos que componen la SELECT. INSERT | INSERTAR Una sentencia INSERT de SQL agrega uno o ms registros a una (y slo una) tabla en una base de datos relacional. Forma bsica INSERT INTO 'tablatura' ('columna1',['columna2,... ']) VALUES ('valor1', ['valor2,...']) Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le ser asignado el valor por omisin. Los valores especificados (o implcitos) por la sentencia INSERT debern satisfacer todas las restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la fila y se devuelve un error. Ejemplo INSERT INTO agenda_telefonica (nombre, numero) VALUES ('Roberto Jeldrez', 4886850); Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada: INSERT INTO nombreTabla VALUES ('valor1', ['valor2,...']) Ejemplo (asumiendo que 'nombre' y 'nmero' son las nicas columnas de la tabla 'agenda_telefonica'): INSERT INTO agenda_telefonica VALUES ('Jhonny Aguiar', 080473968); Formas avanzadas Una caracterstica de SQL (desde SQL-92) es el uso de constructores de filas para insertar mltiples filas a la vez, con una sola sentencia SQL: INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1a'', [''valor1b,...'']), (''value2a'', [''value2b,...'']),...; Esta caracterstica es soportada por DB2, PostgreSQL (desde la versin 8.2), MySQL, y H2. Ejemplo (asumiendo que 'nombre' y 'nmero' son las nicas columnas en la tabla 'agenda_telefonica'): INSERT INTO agenda_telefonica VALUES ('Roberto Fernndez', '4886850'), ('Alejandro Sosa', '4556550'); Que poda haber sido realizado por las sentencias INSERT INTO agenda_telefonica VALUES ('Roberto Fernndez', '4886850'); INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550'); Notar que las sentencias separadas pueden tener semntica diferente (especialmente con respecto a los triggers), y puede tener diferente rendimiento que la sentencia de insercin mltiple. Para insertar varias filas en MS SQL puede utilizar esa construccin: INSERT INTO phone_book SELECT 'John Doe', '555-1212' UNION ALL SELECT 'Peter Doe', '555-2323'; Tenga en cuenta que no se trata de una sentencia SQL vlida de acuerdo con el estndar SQL (SQL: 2003), debido a la clusula subselect incompleta. Para hacer lo mismo en Oracle se usa DUAL TABLE, siempre que se trate de solo una simple fila: INSERT INTO phone_book SELECT 'John Doe', '555-1212' FROM DUAL UNION ALL SELECT 'Peter Doe','555-2323' FROM DUAL Una implementacin conforme al estndar de esta lgica se muestra el siguiente ejemplo, o como se muestra arriba (no aplica en Oracle): INSERT INTO phone_book SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c) UNION ALL SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c) Copia de filas de otras tablas Un INSERT tambin puede utilizarse para recuperar datos de otros, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningn procesamiento intermedio en la aplicacin cliente. Un SUBSELECT se utiliza en lugar de la clusula VALUES. El SUBSELECT puede contener JOIN, llamadas a funciones, y puede incluso consultar en la misma TABLA los datos que se inserta. Lgicamente, el SELECT se evala antes que la operacin INSERT est iniciada. Un ejemplo se da a continuacin. INSERT INTO phone_book2
SELECT * FROM phone_book WHERE name IN ('John Doe', 'Peter Doe') Una variacin es necesaria cuando algunos de los datos de la tabla fuente se est insertando en la nueva tabla, pero no todo el registro. (O cuando los esquemas de las tablas no son iguales.) INSERT INTO phone_book2 ( [name], [phoneNumber] )
SELECT [name], [phoneNumber] FROM phone_book WHERE name IN ('John Doe', 'Peter Doe') El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de la tabla donde los datos son insertados. UPDATE Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla. Ejemplo UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N'; DELETE Una sentencia DELETE de SQL borra uno o ms registros existentes en una tabla. Forma bsica DELETE FROM tabla WHERE columna1 = 'valor1' Ejemplo DELETE FROM My_table WHERE field2 = 'N'; Recuperacin de clave Los diseadores de base de datos que usan una clave suplente como la clave principal para cada tabla, se ejecutar en el ocasional escenario en el que es necesario recuperar automticamente la base de datos, generando una clave primaria de una sentencia SQL INSERT para su uso en otras sentencias SQL. La mayora de los sistemas no permiten sentencias SQL INSERT para retornar fila de datos. Por lo tanto, se hace necesario aplicar una solucin en tales escenarios. Implementaciones comunes incluyen: Utilizando un procedimiento almacenado especfico de base de datos que genera la clave suplente, realice la operacin INSERT, y finalmente devuelve la clave generada. Utilizando una sentencia SELECT especfica de base de datos, sobre una tabla temporal que contiene la ltima fila insertada. DB2 implementa esta caracterstica de la siguiente manera: SELECT * FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ) ) AS t Utilizando una sentencia SELECT despus de la sentencia INSERT con funcin especfica de base de datos, que devuelve la clave primaria generada por el registro insertado ms recientemente. Utilizando una combinacin nica de elementos del original SQL INSERT en una posterior sentencia SELECT. Utilizando un GUID en la sentencia SQL INSERT y la recupera en una sentencia SELECT. Utilizando la funcin de PHP mysql_insert_id() de MySQL despus de la sentencia INSERT. Utilizando un INSERT con la clusula RETURNING para Oracle, que slo se puede utilizar dentro de un PL/SQLbloque, en el caso de PostgreSQL se puede usar tambin tanto con SQL como con PL/SQL. INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ) RETURNING phone_book_id INTO v_pb_id En el caso de MS SQL se puede utilizar la siguiente instruccin: SET NoCount ON; INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ); SELECT @@IDENTITY AS ID Disparadores Los disparadores, tambin conocidos como desencadenantes (triggers en ingls) son definidos sobre la tabla en la que opera la sentencia INSERT, y son evaluados en el contexto de la operacin. Los desencadenantes BEFORE INSERT permiten la modificacin de los valores que se insertarn en la tabla. Los desencadenantes AFTER INSERT no puede modificar los datos de ahora en adelante, pero se puede utilizar para iniciar acciones en otras tablas, por ejemplo para aplicar mecanismos de auditora. Sistemas de gestin de base de datos Los sistemas de gestin de base de datos con soporte SQL ms utilizados son, por orden alfabtico: DB2 Firebird HSQL Informix Interbase MariaDB Microsoft SQL Server MySQL Oracle PostgreSQL PervasiveSQL SQLite Sybase ASE
Diccionario de datos. Es un catlogo, un depsito, de los elementos en un sistema. Como su nombre lo sugiere, estos elementos se centran alrededor de los datos y la forma en que estn estructurados para satisfacer los requerimientos de los usuarios y las necesidades de la organizacin. En un diccionario de datos se encuentra la lista de todos los elementos que forman parte del flujo de datos en todo el sistema. Los elementos ms importantes son flujos de datos, almacenes de datos y procesos. El diccionario guarda los detalles y descripciones de todos estos elementos. Si los analistas desean conocer cuntos caracteres abarca un determinado dato o qu otros nombres recibe en distintas partes del sistema, o dnde se utiliza, encontrarn las respuestas en un diccionario de datos desarrollado en forma apropiada. El diccionario se desarrolla durante el anlisis de flujo de datos y auxilia a los analistas que participan en la determinacin de los requerimientos de sistemas. Definicin de Elementos El nivel ms importante de datos es el elemento dato. (es probable que usted conozca otros nombres que se le dan a este trmino: campo dato o parte elemental.). Ninguna unidad ms pequea tiene significado para los analistas de sistemas o usuarios. Los elementos dato son los bloques bsicos para todos los dems datos del sistema. Por si mismo conllevan suficiente significado para ningn usuario.
Diccionario de datos Contiene las caractersticas lgicas de los sitios donde se almacenan los datos del sistema, incluyendo nombre, descripcin, alias, contenido y organizacin. Identifica los procesos donde se emplean los datos y los sitios donde se necesita el acceso inmediato a la informacin, se desarrolla durante el anlisis de flujo de datos y auxilia a los analistas que participan en la determinacin de los requerimientos del sistema, su contenido tambin se emplea durante el diseo. Razones para su utilizacin: 1- Para manejar los detalles en sistemas muy grandes, ya que tienen enormes cantidades de datos, aun en los sistemas mas chicos hay gran cantidad de datos.
Los sistemas al sufrir cambios continuos, es muy difcil manejar todos los detalles. Por eso se registra la informacin, ya sea sobre hoja de papel o usando procesadores de texto. Los analistas mas organizados usan el diccionario de datos automatizados diseados especficamente para el anlisis y diseo de software. 2- Para asignarle un solo significado a cada uno de los elementos y actividades del sistema. Los diccionarios de datos proporcionan asistencia para asegurar significados comunes para los elementos y actividades del sistema y registrando detalles adicionales relacionadas con el flujo de datos en el sistema, de tal manera que todo pueda localizarse con rapidez. 3- Para documentar las caractersticas del sistema, incluyendo partes o componentes as como los aspectos que los distinguen. Tambien es necesario saber bajo que circunstancias se lleva a cabo cada proceso y con que frecuencia ocurren. Produciendo una comprensin mas completa. Una vez que las caractersticas estn articuladas y registradas, todos los participantes en el proyecto tendrn una fuente comn de informacin con respecto al sistema. 4- Para facilitar el anlisis de los detalles con la finalidad de evaluar las caractersticas y determinar donde efectuar cambios en el sistema. Determina si son necesarias nuevas caractersticas o si estn en orden los cambios de cualquier tipo. Se abordan las caractersticas: * Naturaleza de las transacciones: las actividades de la empresa que se llevan a cabo mientras se emplea el sistema. * Preguntas: solicitudes para la recuperacin o procesamiento de informacin para generar una respuesta especifica. * Archivos y bases de datos: detalles de las transacciones y registros maestros que son de inters para la organizacin. * Capacidad del sistema: Habilidad del sistema para aceptar, procesar y almacenar transacciones y datos 5- Localizar errores y omisiones en el sistema, detectan dificultades, y las presentan en un informe. Aun en los manuales, se revelan errores. Contenido de un registro del diccionario El diccionario tiene dos tipos de descripciones para el flujo de datos del sistema, son los elementos datos y estructura de datos.
Elemento dato: son los bloques bsicos para todos los dems datos del sistema, por si mismos no le dan un significado suficiente al usuario. Se agrupan para formar una estructura de datos. Descripcin: Cada entrada en el diccionario consiste de un conjunto de detalles que describen los datos utilizados o producidos por el sistema. Cada uno esta identificado con: Un nombre: para distinguir un dato de otro. Descripcin: indica lo que representa en el sistema. Alias: porque un dato puede recibir varios nombres, dependiendo de quien uso este dato. Longitud: porque es de importancia de saber la cantidad de espacio necesario para cada dato. Valores de los datos: porque en algunos procesos solo son permitidos valores muy especficos para los datos. Si los valores de los datos estn restringidos a un intervalo especifico, esto debe estar en la entrada del diccionario. Estructura de datos: es un grupo de datos que estn relacionados con otros y que en conjunto describen un componente del sistema. Descripcin: Se construyen sobre cuatro relaciones de componentes. Se pueden utilizar las siguientes combinaciones ya sea individualmente o en conjuncin con alguna otra. Relacin secuencial: define los componentes que siempre se incluyen en una estructura de datos. Relacin de seleccin: (uno u otro), define las alternativas para datos o estructuras de datos incluidos en una estructura de datos. Relacin de iteracin: (repetitiva), define la repeticin de un componente. Relacin opcional: los datos pueden o no estar incluidos, o sea, una o ninguna iteracin. Notacin: Los analistas usan smbolos especiales con la finalidad de no usar demasiada cantidad de texto para la descripcin de las relaciones entre datos y mostrar con claridad las relaciones estructurales. En algunos casos se emplean trminos diferentes para describir la misma entidad (alias) estos se representan con un signo igual (=) que vincula los datos.