Documente Academic
Documente Profesional
Documente Cultură
Bases de datos I
Tipos y relaciones
Los tipos de datos son fundamentales para la ciencia computacional. La teora relacional requiere apoyo en la teora de tipos, ya que las relaciones se definen sobre tipos. Cada atributo de cada relacin esta definido por algn tipo de dato. En el modelo relacional definido por Cood, define las relaciones por dominios y no por tipos.
Comparaciones de Igualdad
En el modelo relacional dos valores pueden ser comparados por igualdad solo si tienen el mismo dominio.
Cliente.idcliente=factura.idcliente Cliente.nombre=factura.idcliente Correcto Incorrecto
Podemos considerar las cadenas de caracteres como atmicos? Los enteros, punto flotante, los tipos de dato fecha?
En la imagen vemos la relacin R1, tenemos una tupla para cada combinacin SON/PNO. Para simplificar el ejemplo vamos a decir que SON/RNO son atmicos. Entonces decimos que R1 esta al menos en 1NF. Ahora en R2 observamos SON tiene un grupo de PNO (conocido como multivalores) ; por lo que este grupo de PNO no entra en la definicin de 1NF. (los grupos no son atmicos) En R3 observamos que esta en 1NF. No es un diseo sin duda pero ese no es el punto. El punto se centra si cumple con el principio de atomicidad. PNO se reemplaza por PNO_SET el cual define entre llaves un conjunto nico.
Tipos
Un tipo es un conjunto determinado de valores. Todos los valores posibles de algo en particular Todos los posibles enteros todos las posibles cadena de caracteres Todos los posibles numero de clientes Todos los documentos posibles de XML
Tipos
Cada variable, cada atributo, cada operador devuelve un resultado. Cada parmetro de cada operador es declarado del mismo tipo. Ejemplo: Tipo Entero es un tipo scalar, por lo tanto, valores, variables de tipo Entero son tambien scalar. Significa que estos no tienen componentes visibles.
Tipos
Tuplas y relaciones son de tipo nonscalar, tienen componentes visibles que son sus atributos correspondientes. Por lo tanto las tuplas y valores de relacin variables, son tambin nonscalar. Al igual que el concepto de valores atmicos, el concepto scalar no es un concepto absoluto. Termino scalar es para los tipos que no son tuplas ni relaciones, y el termino nonscalar es para las tuplas y relaciones.
SMALLINT
INTERVAL
Verificacin de tipos
SQL implementa una dbil forma de tipado de datos.
Los valores Boolean pueden asignarse solo a variables Boolean y compararse con valores Boolean. Valores de cadena de caracteres pueden solo asignarse a variables de cadenas de caracteres y compararse con solo con valores cadena de caracteres ( pueden ser char o varchar)
Verificacin de tipos
Valores numricos solo pueden asignarse a variables numricas y compararse con valores numricos (Float, numeric, decimal, integer o smallint) Date, times, timestamps se sujetan a ciertas reglas de verificacin de tipos.
No se puede comparar un entero contra una cadena de caracteres. Si es posible comparar dos nmeros aun cuando uno sea Integer y Float.
Verificacin de tipos.
Ejemplo: Considera las tablas T1 y T2. La columna x es de tipo entero en T1 pero numrico(5,2) en T2, y la columna y es numrico(5,2) en T1 pero entero en T2.
Considera
SELECT X , Y FROM T1 UNION SELECT X , Y FROM T2
Verificacin de tipos
En las columnas X y Y, resultantes, ambas son de tipo NUMERIC(5,1). Los valores enteros se obligan a tipos NUMERIC(5,1). Recomendacin: Lo mejor es evitar las conversiones obligadas. En contexto SQL, se recomienda que las columnas con el mismo nombre tengan siempre el mismo tipo. Cuando no sea posible utilizar la funcin CAST o su equivalente SELECT CAST ( X AS NUMERIC(5,1) ) AS X , Y FROM T1 UNION SELECT X , CAST ( Y AS NUMERIC(5,1) ) AS Y FROM T2