Professional Documents
Culture Documents
Una base de datos, bien diseñada y alimentada, no es más que una herramienta de consulta
pura y dura. Este es el verdadero valor añadido que le da a una empresa, ya que le permite
combinar cualquier información con todo tipo de consultas que se le formulen. Disponer de
una buena base de datos significa controlar la amplia gama de información con la que trabaja
cualquier tipo de negocio. La franquicia no es una excepción.
Su finalidad es la de servir a una aplicación ó más de la mejor manera posible; los datos se
almacenan de modo que resulten independientes de los programas que usan; se emplean
métodos bien determinados para incluir nuevos datos y para modificar o extraer los datos
almacenados.
ORGANIZACIÓN: Puede ser una empresa de cualquier tipo bancos, hospitales, universidades,
etc.
DATOS: Representación de la información.
COLECCIÓN ALMACENADA: Significa un conjunto de datos que se guardan en algún dispositivo
de almacenamiento manual o automatizado. Los datos están interrelacionados porque
representan información de varias áreas de aplicación.
Sus Orígenes y Antecedentes surgen desde mediados de los años sesenta. En 1970 Codd
propuso el modelo relacional, este modelo es el que ha marcado la línea de investigación por
muchos años, ahora se encuentran los modelos orientados a objetos.
1.- Los datos almacenados por una base de datos deben de tener usos múltiples. Diferentes
usuarios que ven los mismos datos pueden emplearlos de diferentes maneras.
2.- Claridad: Los usuarios deben conocer y entender los datos que tienen a su disposición.
3.- Proteger la inversión intelectual: Los programas y estructuras de datos existentes que
representan muchos hombres de trabajo, no deben tener que hacerse completamente cuando
hay cambios en la base de datos.
4.- Facilidad de uso: Los usuarios deben tener acceso a los datos de una manera simple.
5.- Independencia física de los datos: El hardware de almacenamiento y las técnicas físicas de
almacenamiento podrán ser modificadas sin obligar a la modificación de los programas de
aplicación, ni a la estructura lógica general.
6.- Independencia lógica de los datos: Podrán agregarse nuevos ítems de datos o expandirse
la estructura lógica general sin que sea necesario reescribir los programas de aplicación
existentes.
7.- Redundancia controlada: Los ítems de datos serán almacenados una sola vez, excepto
cuando existan razones técnicas económicas que aconsejen al almacenamiento redundante.
8.- Facilidad del cambio: La base de datos puede crecer y variar sin interferir con las maneras
establecidas de usar los datos.
9.- Protección contra pérdida o daño: Los datos estarán protegidos contra fallas y catástrofes y
contra delincuentes, vándalos incompetentes y personas que intenten falsearlos.
Según los autores ABRAMHAM, KORTH y SUDARSHAN se deben de evitar algunas situaciones
con las bases de datos:
• Evitar el aislamiento de datos.- Debido a que los datos están dispersos en varios archivos, y
los archivos pueden estar en diferentes formatos, es difícil escribir nuevos programas de
aplicación para recuperar los datos apropiados.
Puesto que los archivos que mantienen almacenada la información son creados por diferentes
tipos de programas de aplicación existe la posibilidad de que si no se controla detalladamente
el almacenamiento, se pueda originar un duplicado de información. Esto aumenta los costos
de almacenamiento y acceso a los datos, además de que puede originar la inconsistencia de
los datos - es decir diversas copias de un mismo dato no concuerdan entre sí -, por ejemplo:
que se actualiza la dirección de un cliente en un archivo y que en otros archivos permanezca
la anterior.
Por otro lado hay diversas razones para considerar la redundancia de datos como una
característica deseable:
1.- Las aplicaciones locales pueden incrementarse si los datos están duplicados los sitios
donde las aplicaciones necesitan estos.
2.- La disponibilidad del sistema puede ser incrementada, porque si un sitio falla no debe
pararse la ejecución de las aplicaciones en otros sitios si los datos están duplicados.
Una base de datos computarizada puede ser creada y mantenida por un grupo de programas
de aplicación escritos o realizados específicamente para esta tarea o por un sistema
manejador de base de datos (SMBD System Manager Data Base).
Un SMBD es una colección de programas que permiten al usuario crear y mantener una base
de datos. El SMBD es en esencia un sistema de software de propósito general que facilita los
procesos de definición, construcción y manipulación de las bases de datos para varias
aplicaciones.
La definición de una base de datos involucra la especificación de los tipos de datos al ser
almacenados en la base de datos, con una detallada descripción de cada tipo de dato. La
construcción de la base de datos es el proceso de almacenamiento de los mismos datos en
algún medio de almacenamiento que es controlado por el SMBD. La manipulación de una base
de datos incluye algunas funciones como consultas a la base de datos, actualización de la
base de datos y generación de reportes de los datos.
1.2.1 Organización
DEFINICIÓN
DE LA BD
ALMACE- BD ALMACE-
NADA NADA
1.2.2 Lenguajes de Bases de Datos
Lenguaje de un sistema generalizado para manejo de banco de datos (GDBMS), usado para
definir la estructura lógica de los datos; se tienen tres lenguajes DDL; el DDL de esquemas,
para uso del administrador del banco de datos; el DDL de subesquemas también para uso del
administrador de datos y el DDL de subesquemas para el usuario.
Conjunto de comandos de un sistema generalizado para el manejo del banco de datos (o base
de datos) (GDBMS), se usa para almacenar, recopilar, actualizar, agregar y eliminar datos de
un banco; el DML incluye a todos los comandos para entrada / salida y otros para navegación
en el banco; los comandos del DML se usan en la división de procedimientos de un programa
en cobol.
Lenguaje de alto nivel para manipulación de datos que permite la interacción con el archivo o
banco de datos; el lenguaje está muy orientado al no-programador, no recurre al uso de
procedimientos y es semejante al lenguaje natural. El lenguaje de consultas de un GDBMS ha
sido diseñado para atender rápidamente solicitudes de acceso y almacenamiento de pequeños
volúmenes basados en criterios complejos sobre el contenido del banco de datos.
A continuación seMODELO
presenta un esquema que MODELO
muestra la arquitectura para
ESQUEMAS el SMBD:
EXTERNO A EXTERNOS EXTERNO B
USUARIO 1 USUARIO 2 USUARIO 3 USUARIO 4
MAPEO EXTERNO
Lenguaje 1 Lenguaje 2 CONCEPTUAL Lenguaje 3 Lenguaje 4
Área de trabajo Área de trabajo Área de trabajo Área de trabajo
MODELO CONCEPTUAL
ESQUEMA
(MODELO DE DATOS)
CONCEPTUAL
SISTEMA
MAPEO CONCEPTUAL INTERNO MANEJADO
R DE BD
MAPEO INTERNO
(DEFINICIÓN DE LA
ESTRUCTURA DE MODELO INTERNO
ALMACENAMIENTO)
La arquitectura consta de tres niveles:
1.- NIVEL INTERNO.- Es el más cercano al almacenamiento físico. Se refiere a la forma en que
realmente están almacenados los datos (en ceros y unos). Consta de múltiples ocurrencias
de registros almacenados (la misma información pero de diferente matrícula). Se define
usando un DDL interno.
2.- NIVEL EXTERNO.- Es el más cercano al usuario, se refiere a la forma en que el usuario ve
los datos, es decir, la manera en la cuál los datos están considerados por los usuarios
individualmente. A este nivel los usuarios tienen un lenguaje a su disposición, el Query
(Lenguaje de consultas) ó programas con menús.
3.- NIVEL CONCEPTUAL.- Es la correspondencia entre los dos niveles. Es una vista de
comunidad. Trata de expresar como son los datos realmente. Se define la vista conceptual
usando un DDL particular.
Los usuarios finales son las personas que no tienen que saber como se almacenan los datos.
RELACIÓN: Conectividad existente entre los atributos de una entidad o entre entidades. Es
decir, los atributos en relación a algo (englobados) conforman una entidad.
1.- Relación 1:1 (uno a uno). Un conjunto de atributos de relación 1:1 forman una entidad.
Por ejemplo, un número de atributos tiene una sola restricción, un costo, etc.
2.- Relación 1:N débil (cero, uno o más). Se da siempre en entidades. Por ejemplo, un
cliente tiene muchas facturas.
3.- Relación 1:N fuerte (uno más).
4.- Relación N:M (varios a varios). Por ejemplo, una ciudad tiene varias tiendas, pero
varias tiendas pueden existir en varias ciudades.
Las estructuras fundamentales en el modelo jerárquico las forman los árboles por los que se
conocen también como gráficas que no forman ciclos. Un árbol consta de nodos conectados y
uniones, el nodo superior se conoce como raíz y todos los nodos que no tienen hijos como las
copas. Todo nodo de árbol exceptuando la raíz, tienen exactamente un padre, mientras que un
padre puede tener varios hijos. En un árbol no se permiten las asociaciones entre hermanos,
esto significa que los nodos al mismo nivel no se pueden unir.
En una jerarquía, como modelo conceptual, en cada nodo se sitúa un tipo de registro
diferente. Cada tipo de registro está formado por datos, de los cuales unos sirven para
identificar en forma única al registro, ya que estos son interpretados como llave, los enlaces
entre tipos de registros no llevan nombre, ya que solo puede existir una asociación entre dos
tipos de registros y la relación padre- hijo es obvia.
La siguiente figura muestra una jerarquía con un tipo de registro en cada nodo.
CURSO
PRE OFRECERÁ
REQUISITO
# DE CURSO NOMBRE FECHA LUGAR FORMATO
ESTUDIANT
MAESTRO E
# EMPLEADO NOMBRE # NOMBRE GRADO
EMPLEADO
Es claro que debe existir el padre para que e hijo también exista. Por lo tanto, la eliminación
de un padre trae consigo la eliminación de todos los hijos. En un sistema jerárquico la entrada
siempre es por el nodo superior, generalmente a la raíz y luego se prodigue hacia los hijos,
examinando su contenido para ver si se cumple con los requerimientos establecidos.
La principal desventaja de los modelos jerárquicos es que no permiten asociar a un hijo con
más de un padre. Esto trae como consecuencia la introducción de uniones redundantes para
poder representar todas las relaciones que se requieren. Al hacer redundancia, se corre el
riesgo de generar inconsistencia, sin contar con la duplicidad de espacio.
MODELOS RETICULARES
La arquitectura relacional fue promovida por E. Codd alrededor de 1970. Esta arquitectura
consiste en relaciones y operadores que actúan sobre esas relaciones.
Una relación puede visualizarse como una tabla. Es importante notar la diferencia entre el
concepto de relación en esta última, nos referimos siempre a una asociación entre tipos de
registro. En cambio, relación en la arquitectura relacional se refiere a una estructura tabular.
Cada renglón de una relación se denomina una n-ada (registro) y cada columna representa un
atributo. Los encabezados de cada columna (atributos) son los tipos de datos representados
en la relación, mientras que los elementos que aparecen en cada columna son los valores
particulares que toman los atributos.
PRODUCTOS PROVEEDOR
# Nom. Prod. Tipo Precio # Prov. Nom. Prov. Status Ciudad
Prod.
RELACIÓN
Productos Proveedores
# Atributos 4 4
No. N - adas 5 6
Se dice que cuando una tabla tiene N columnas la relación es de N grados. Las relaciones de 2
grados se llaman binarias; las de 3 grados terciarias y la de N grados enearias. No es
necesario que exista un orden, puesto que la relación es un conjunto y en los conjuntos no hay
orden definido.
Sin embargo, a veces será conveniente definir un orden para propósitos de acceso a la
información en una relación.
RELACIÓN S DE PROVEEDORES
Atributos
Llave
S# Nombre Status Ciudad Dominio
Primaria
S1 Smith 30 Londres
S2 Jones 20 París
S3 Blake 10 París Tuples
S4 Clark 20 Londres
S5 Adams 30 Atenas
Se puede observar que la relación productos tiene 4 atributos, los cuáles son: # prod., Nom.
Prod., Tipo, Precio.
Se tiene en este caso particular cinco n-adas que significan los productos que se manejan, por
ejemplo: la n-ada (P-100, broca, zinc, 12.75) representa la distancia de producto que se
identifica por medio del número de producto P-1000 y es una broca de zinc que cuesta 12.75.
Al igual que en las arquitecturas anteriores se tiene una forma única de identificar un registro,
es decir, se requiere una llave. En la arquitectura relacional una llave es el valor o conjunto de
valores de uno o más atributos necesarios para identificar en forma única una n-ada. Si solo
interviene un atributo en la llave, hablamos de una llave simple; si son dos o más atributos, se
trata de una llave compuesta.
Uno de los conceptos fundamentales en la arquitectura relacional es el de dependencia
funcional. Por ejemplo: dados dos atributos, a y b decimos que b es funcionalmente de a, si en
cualquier momento hay un máximo valor de b para cada valor de a.
Algunas de las propiedades que deben poseer las tablas o relaciones son las siguientes:
En cada cantidad hay un ítem de datos (campos)
No hay grupos repetitivos
Son homogéneos por columna
Todas las filas son diferentes
Tanto las filas las columnas pueden ser consideradas en cualquier secuencia y en cualquier
momento sin afectar por ello. La base de datos construida por medio de relaciones es una
base de datos relaciona. La base de datos es relacional cuando está construida con matrices
planas de ítems de datos.
TERMINOS EN EL ENFOQUE RELACIONAL
Relación.- Tabla
Tuples.- registros o renglones
Atributo.- Campo o columna
Llave primaria.- Identificador único
Dominio.- Posibles valores legales
Ejemplos de SMBD:
¿Qué es un atributo?
Es una característica de un elemento de una entidad. Un elemento de una entidad es
implementado computacionalmente como un registro (también llamado tuplo).
2.1.5 Normalización
2.3 VISTAS
Una vista de base de datos es un resultado de una consulta SQL de una o varias tablas;
también se le puede considerar una tabla virtual.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es
que sólo se almacena de ellas la definición, no los datos. Los datos que se recuperan mediante
una consulta a una vista se presentarán igual que los de una tabla. De hecho, si no se sabe
que se está trabajando con una vista, nada hace suponer que es así. Al igual que sucede con
una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunque
siempre es posible seleccionar datos de una vista, en algunas condiciones existen
restricciones para realizar el resto de las operaciones sobre vistas.
Una vista se especifica a través de una expresión de consulta (una sentencia SELECT) que la
calcula y que puede realizarse sobre una o más tablas. Sobre un conjunto de tablas
relacionales se puede trabajar con un número cualquiera de vistas.
La mayoría de los DBMS soportan la creación y manipulación de vistas.
Descripción de vistas
Una vista es una tabla virtual cuyo contenido está definido por una consulta. Al igual que una
tabla real, una vista consta de un conjunto de columnas y filas de datos con un nombre. Sin
embargo, a menos que esté indizada, una vista no existe como conjunto de valores de datos
almacenados en una base de datos. Las filas y las columnas de datos proceden de tablas a las
que se hace referencia en la consulta que define la vista y se producen de forma dinámica
cuando se hace referencia a la vista.
Una vista actúa como filtro de las tablas subyacentes a las que se hace referencia en ella. La
consulta que define la vista puede provenir de una o de varias tablas, o bien de otras vistas de
la base de datos actual u otras bases de datos. Asimismo, es posible utilizar las consultas
distribuidas para definir vistas que utilicen datos de orígenes heterogéneos. Esto puede
resultar de utilidad, por ejemplo, si desea combinar datos de estructura similar que proceden
de distintos servidores, cada uno de los cuales almacena los datos para una región distinta de
la organización.
No existe ninguna restricción a la hora de consultar vistas y muy pocas restricciones a la hora
de modificar los datos de éstas.
En esta ilustración se muestra una vista basada en dos tablas.
Nota Impide la creación de combinaciones inconsistentes para ver, editar, crear o eliminar
privilegios. Por ejemplo, es muy probable que no quiera que los usuarios eliminen registros
que no pueden ver.
5 Para limitar el acceso o la modificación de ciertos campos dentro de una tabla, continúe en
. el paso siguiente. En caso contrario, vaya directamente al paso 9.
6 Seleccione la tabla que contiene los campos cuyo acceso quiere limitar. Después, en
. Acceso a campos, seleccione Limitado.
7 En el cuadro de diálogo Privilegios de campo personalizados, seleccione los campos cuyo
. acceso quiere limitar (o seleccione Cualquier campo nuevo para establecer privilegios
personalizados para cualquier campo creado posteriormente). A continuación, seleccione
una de las opciones siguientes:
Seleccio
ne Para
Modifica Permitir la vista y edición de los datos
ble del campo.
Sólo Permitir la vista de los datos del campo. (No se permite la edición de los
vista datos del campo.)
Sin Se prohíbe el acceso al
acceso campo.
Nota Cuando se prohíbe el acceso a uno o más campos de una tabla que, por
lo demás, está visible, el usuario verá <Sin acceso> en lugar de los datos del
campo.
8 Haga clic en
. Aceptar.
9 Haga clic en
. Aceptar.
Aparece el cuadro de diálogo Editar conjunto
de privilegios.
1 Gestione cualquier otro privilegio para el conjunto
0. de privilegios.
Para obtener más información sobre los diferentes privilegios que puede
definir, consulte:
Editar privilegios de
presentaciones
Editar privilegios de listas de
valores
Editar privilegios de
guiones
Editar privilegios ampliados para un conjunto
de privilegios
Editar otros
privilegios
1 Cuando haya terminado de editar el conjunto de privilegios, haga
1. clic en Aceptar.
1 En el cuadro de diálogo Gestionar cuentas y privilegios, realice una de las
2. opciones siguientes:
Cuando haya terminado de trabajar con cuentas y privilegios, haga clic en Aceptar. En
el cuadro de diálogo que aparece, introduzca un nombre de cuenta y una contraseña
que esté asignada al conjunto de privilegios de acceso completo y haga clic en Aceptar.
Para asignar el conjunto de privilegios a una o más cuentas, consulte Crear cuentas o
Editar cuentas existentes.
Notas
En los cuadros de diálogo Privilegios de registro personalizados y Privilegios de campo
personalizados puede ordenar la lista de tablas o campos mostrados haciendo clic en
cualquiera de las cabeceras de columna. Para cambiar de orden ascendente o descendente,
realice una de las opciones siguientes:
Windows: haga clic de nuevo en la cabecera
de columna.
Mac OS: haga clic en el botón de
flecha .
Si prohíbe la creación de registros en un archivo o tabla, se prohíbe también la
duplicación de registros.
Los usuarios que no pueden ver ciertos registros pueden navegar por ellos, pero verán <Sin
acceso> en lugar de los datos del campo dentro de cada registro.
Muchas funciones de FileMaker Pro se ven afectadas cuando limita el acceso a los registros,
los campos y las tablas dentro de un archivo. La tabla siguiente resume los efectos en
algunas funciones.
Función Efecto de limitar el acceso a los datos
Actualizaciones y Las actualizaciones y reactualizaciones están definidas por tres
reactualizaciones componentes, que se ven afectados todos ellos por los
privilegios de acceso a los datos:
Como mínimo, los campos coincidentes usados en la relación
deben tener privilegios de visualización. Además, no se
producirá ninguna actualización en ningún registro que no se
pueda ver en las tablas de origen y de destino, porque no
puede producirse ninguna coincidencia en estas
circunstancias. Esto incluye el primer registro coincidente
relacionado, así como cualquier registro empleado para copiar
el siguiente valor inferior o superior.
Como mínimo, el campo de origen de la actualización debe
tener privilegios de visualización.
El campo de destino de la actualización debe tener
privilegios de edición.
FileMaker Pro no muestra ningún mensaje de error si una
operación de actualización omite ciertos registros debido a las
restricciones del privilegio de acceso.
Acceso a datos Como mínimo, los dos campos coincidentes en una relación
relacionados deben tener privilegios de visualización para que funcione la
relación. Cualquier campo relacionado que desee mostrar
basándose en los campos coincidentes también debe tener,
como mínimo, privilegios de visualización.
Búsqued El conjunto encontrado siempre se filtra para mostrar sólo
as aquellos registros que tengan, como mínimo, privilegios de
visualización. Los resultados de la función Get ( foundCount )
también se ven afectados si se limita el acceso.
Listas de Cuando una lista de valores se basa en el contenido de un
valores campo y se prohíben los privilegios de visualización en el
campo, la lista de valores no muestra ningún valor. De esta
forma, los usuarios no pueden acceder por descuido a
información confidencial. Los resultados de la función
ValueListItems también se ocultan cuando el acceso es limitado.
Campos de sumario y Los resultados mostrados en los campos de sumario y en los
campos calculados campos calculados que resumen varios registros excluirán los
datos de los registros cuyos privilegios de visualización se
hayan prohibido.
Buscar/Reemplazar, Un usuario sólo puede cambiar datos con estas
Reemplazar contenido y funciones en:
comprobación los registros que tengan privilegios
ortográfica de edición.
los campos que sean
modificables.
Guion Puede configurar una opción para que un guión se ejecute con
es privilegios de acceso completos, lo que permite al guión
ejecutar operaciones que normalmente no podría hacer un
usuario con privilegios de acceso limitados. Si no habilita esta
opción, cualquier paso de guión que intente acceder o cambiar
datos restringidos fallará. Para obtener más información,
consulte Crear y editar guiones usando ScriptMaker.
Eventos de Los privilegios de acceso a los datos pueden afectar a la
Apple capacidad del usuario de obtener, establecer y eliminar datos
mediante eventos de Apple. Algunos comandos de los eventos
de Apple pueden fallar si el usuario no dispone de los privilegios
de acceso apropiados.
Notas
El cálculo booleano que determina los privilegios de acceso a los registros puede tener
resultados inesperados, en particular si está basado en un campo editable por el usuario.
Por ejemplo, es posible que un usuario con privilegios de acceso únicamente para ciertos
registros deniegue por equivocación el acceso a un registro después de editarlo. El usuario
podría realizar un cambio en el contenido de un registro que modifique el resultado del
cálculo booleano de acceso al registro para que se evalúe como False. Entonces el usuario
ya no podría ver, editar ni eliminar el registro una vez que salga de él. Como los cambios se
consignan tan pronto como el usuario sale del registro, el usuario que realice cambios de
este tipo no podrá volver al registro. (En la mayoría de los casos, debería basar los cálculos
de acceso a los registros en campos que no sean directamente editables por los usuarios,
como campos de introducción automática que contengan nombres de cuenta, fechas de
creación y fechas de modificación.)
Además, si se comparte el archivo y si el cálculo booleano que determina los privilegios de
acceso a registros contiene uno o varios campos globales, se puede mejorar el rendimiento
de la red transfiriendo algunos campos globales a otra tabla. Para obtener más información,
consulte la sección Notas de Definir campos globales (campos con almacenamiento global).
Para poder ofrecer una compatibilidad total con varias ventanas que contienen sus propios
conjuntos encontrados, los valores de sumario forman parte del conjunto encontrado. (No
hay ningún único valor de sumario para un archivo único como en FileMaker Pro 6 y
versiones anteriores.) Un registro puede aparecer en varias ventanas y cada una de ellas
tiene su propio conjunto encontrado y tipo de ordenación. Estos son los motivos por los que
no debe basar los cálculos de privilegios en funciones de sumario ni en funciones Get
basadas en valores que empleen un conjunto encontrado determinado.
Operadores lógicos
En SQL, todos los operadores lógicos se evalúan a TRUE, FALSE, o NULL (UNKNOWN). En
MySQL, se implementan como 1 (TRUE), 0 (FALSE), y NULL. La mayoría de esto es común en
diferentes servidores de bases de datos SQL aunque algunos servidores pueden retornar
cualquier valor distinto a cero para TRUE.
• NOT, !
NOT lógica. Se evalúa a 1 si el operando es 0, a 0 si el operando es diferente a cero, y
NOT NULL retorna NULL.
mysql> SELECT NOT 10;
-> 0
mysql> SELECT NOT 0;
-> 1
mysql> SELECT NOT NULL;
-> NULL
mysql> SELECT ! (1+1);
-> 0
mysql> SELECT ! 1+1;
-> 1
El último ejemplo produce 1 porque la expresión se evalúa igual que (!1)+1.
• AND, &&
AND lógica. Se evalúa a 1 si todos los operandos son distintos a cero y no NULL, a 0 si
uno o más operandos son 0, de otro modo retorna NULL.
mysql> SELECT 1 && 1;
-> 1
mysql> SELECT 1 && 0;
-> 0
mysql> SELECT 1 && NULL;
-> NULL
mysql> SELECT 0 && NULL;
-> 0
mysql> SELECT NULL && 0;
-> 0
• OR, ||
OR lógica. Cuando ambos ooperandos son no NULL, el resultado es 1 si algún operando
es diferente a cero, y 0 de otro modo. Con un operando NULL el resultado es 1 si el otro
operando no es cero, y NULL de otro modo. Si ambos operandos son NULL, el resultado
es NULL.
mysql> SELECT 1 || 1;
-> 1
mysql> SELECT 1 || 0;
-> 1
mysql> SELECT 0 || 0;
-> 0
mysql> SELECT 0 || NULL;
-> NULL
mysql> SELECT 1 || NULL;
-> 1
• XOR
XOR lógica. Retorna NULL si algún operando es NULL. Para operandos no NULL , evalúa
a 1 si un número par de operandos es distinto a cero, sino retorna 0.
mysql> SELECT 1 XOR 1;
-> 0
mysql> SELECT 1 XOR 0;
-> 1
mysql> SELECT 1 XOR NULL;
-> NULL
mysql> SELECT 1 XOR 1 XOR 1;
-> 1
a XOR b es matemáticamente igual a (a AND (NOT b)) OR ((NOT a) and b).