Sunteți pe pagina 1din 17

Tipos y Dominios

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

Valores de datos atmicos.


Valores de datos atmicos y su relacin con la primera forma normal (1NF por siglas en ingles) . La primera forma normal significa que cada tupla en cada relacin contiene un nico valor (del tipo apropiado) en cada atributo.

Valores de datos atmicos.


Los valores nicos pueden suponerse como atmicos. Que significa que un dato es atmico?
Un dato que no puede separarse en partes mas pequeas por el motor de datos. Aunque la definicin es algo imprecisa.

Podemos considerar las cadenas de caracteres como atmicos? Los enteros, punto flotante, los tipos de dato fecha?

Valores de datos atmicos.


Los enteros pueden dividirse en factores (7x1, 2x6), aunque no es una divisin comn, se seala para abrir una variedad de interpretaciones. Nmeros de punto fijo pueden dividirse en parte entera y parte decimal.

Valores de datos atmicos

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.

Valores de datos atmicos


Si establecimos {P2, P4,P5} se puede comparar con una cadena de caracteres, la cual contiene una estructura interna, por lo que en ocasiones conviene ignorar la estructura para ciertos propsitos. El punto real es que la idea de atomicidad no es un significado absoluto, esto depende de lo que queremos hacer con los datos.

Valores de datos atmicos


Una analoga que puede aclarar viene de la fsica (de donde viene el termino atmico).
Algunas ocasiones vemos al tomo como un elemento indivisible. Algunas veces lo vemos como particulas subatmicas (electrones, protrnes, neutrones) En los protnes y neutrnes contienen una variedad de particulas subatmicas llamadas quarks.

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.

Tipos scalar en SQL.


SQL define los siguientes tipos scalar:
BOOLEAN CHARACTER(n) CHARACTER VARYING(n) FLOAT(p) NUMERIC(p,q) DECIMAL(p,q) INTEGER DATE TIME TIMESTAMP

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

S-ar putea să vă placă și