tipos de datos - eduarmandov.files.wordpress.com€¦ · tipos de datos capítulo 5 – pág. 93...
TRANSCRIPT
![Page 1: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/1.jpg)
Tipos de Datos Capítulo 5 – Pág. 91
Capí tu lo
5 Tipos de Datos
Objetivos
Al final de este módulo, Ud. será capaz de: • Describir los tipos de datos • Seleccionar los tipos de datos apropiados para las columnas de las bases de datos
![Page 2: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/2.jpg)
Tipos de Datos Capítulo 5 – Pág. 92
Este módulo describe los tipos de datos y como asignarlos a los atributos.
![Page 3: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/3.jpg)
Tipos de Datos Capítulo 5 – Pág. 93
Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación de letras, números y símbolos. Numeric Almacena datos numéricos. Hay varios tipos numéricos de datos
diseñados para acomodar diferentes clases de datos numéricos. Serial Almacena números enteros secuenciales asignados
automáticamente por el servidor de base de datos. Se usan comúnmente para columnas de llaves primarias.
Date Almacena fechas calendario. Money Almacena montos monetarios. Datetime Almacena puntos específicos en el tiempo. Interval Almacena valores que representan un período. Variable length Almacena datos de longitud variable. Existen varios tipos de
datos de longitud variable para almacenar diferentes clases de datos de longitud variable.
Cada columna en una tabla tiene asignado uno y solo un tipo de dato.
Nota:
![Page 4: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/4.jpg)
Tipos de Datos Capítulo 5 – Pág. 94
Las columnas CHAR o CHARACTER almacenan cualquier combinación de letras, números y símbolos. Los datos almacenados en estas columnas pueden ser nombres, direcciones, números de seguro social, números de teléfono, nombres de proyectos, o cualquier otra información que sea letras, números, símbolos de puntuación o símbolos de otros tipos.
En muchas aplicaciones, CHAR es el tipo de datos más común y toma la mayor parte de espacio del disco. La máxima longitud de una columna CHAR en una base de datos es de 32,767 bytes, pero la mayoría de las columnas CHAR están entre 1 y 500 bytes. Si Ud. está usando otros, la máxima longitud es de 32,511 bytes. La columnas CHAR son de longitud fija. Si una columna de caracteres es definida con un ancho de 400 bytes, los datos para tal columna tomarán ese monto de espacio en disco, aún cuando los datos sean menores de 400 caracteres. Nota:
Los números pueden ser almacenados en una columna CHAR, pero no pueden ser usados en algunas operaciones aritméticas. Los números que son necesarios para cálculos deben ser almacenados en columnas numéricas. NCHAR almacena cualquier string nativo de letras, números y símbolos. Los datos tipo NCHAR son reconocidos solamente cuando Native Languaje Support (NLS) está activo por medio de la variable de ambiente DBNLS. Cuando NLS está habilitado, las columnas de datos CHAR son tratadas como columnas de datos NCHAR.
![Page 5: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/5.jpg)
Tipos de Datos Capítulo 5 – Pág. 95
Existen cinco tipos de datos para números y cada uno es asignado a diferente tipo de número. NO es posible almacenar caracteres o símbolos en una columna numérica. De cualquier manera, los signos más (+) y menos (-) pueden ser introducidos para mostrar donde los números son positivos o negativos. Nota:
Las columnas numéricas son de longitud fija, al igual que las columnas CHAR. Las siguientes páginas describen cada uno de los tipos de datos numéricos.
![Page 6: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/6.jpg)
Tipos de Datos Capítulo 5 – Pág. 96
Números esteros son almacenados en columnas INTEGER, INT y SMALLINT. Si usted sabe que un número excederá +/- 32,767, debe asignarle un tipo de dato INTEGER. Usted puede ahorrar dos bytes de espacio en disco usando el tipo de dato SMALLINT. Un INTEGER requiere cuatro bytes, mientras que un SMALLINT requiere solo dos. Probablemente esto no sea significativo en pequeñas aplicaciones, pero puede haber una substancial diferencia en aplicaciones grandes. Usted puede convertir un SMALLINT a INTEGER sin perder datos. Ejemplos: INTEGER Números de facturas SMALLINT Números de piezas, números de pedidos
![Page 7: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/7.jpg)
Tipos de Datos Capítulo 5 – Pág. 97
Las columnas FLOAT y SMALLFLOAT almacenan números binarios de punto flotante. Estos números son usados en cálculos científicos y de ingeniería. La precisión para estos tipos de datos es como sigue: FLOAT Doble precisión, 14-16 dígitos significativos SMALLFLOAT Precisión sencilla, 7-8 dígitos significativos Las columnas FLOAT pueden almacenar el doble de dígitos que las columnas SMALLFLOAT. Las columnas FLOAT no necesariamente almacenan números grandes; almacenan números con mayor precisión. Nota: Es posible almacenar hasta 8 dígitos significativos para columnas SMALLFLOAT y 16 dígitos significativos para columnas FLOAT. Esto depende del tipo de chip de punto flotante usado dentro del sistema. El almacenamiento interno también depende del tipo de chip de punto flotante usado. Ejemplos:
FLOAT Precisión del espejo principal del telescopio Hubble SMALLFLOAT Raíces cuadradas
Nota:
![Page 8: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/8.jpg)
Tipos de Datos Capítulo 5 – Pág. 98
Las columnas definidas como de DOBLE PRECISION se comportan igual que las columnas FLOAT. El tipo de dato REAL es sinónimo de SMALLFLOAT.
Las columnas decimales almacenan números con un número de dígitos especificado por el usuario. El rango de números que usted puede almacenar es 10-130 a 10124. El tipo de dato decimal puede tomar dos formas, DECIMAL(p) punto flotante y DECIMAL(p,s) punto fijo. El tipo de dato DECIMAL almacena números de punto flotante de hasta 32 dígitos significativos, donde p es el total de dígitos significativos, o la precisión. El formato DECIMAL(p) tiene un rango de valor absoluto entre 10-130 y 10124.
En un número de punto fijo, DECIMAL(p,s) el punto decimal es fijado en un lugar específico, independientemente del valor del número. La precisión es el número total de dígitos significativos que una columna puede almacenar, de 1 a 32. La escala es el número total de dígitos que caen a la derecha del punto decimal. Una columna DECIMAL con una definición (5,2) podría almacenar un número de cinco dígitos con tres dígitos antes del punto decimal y dos dígitos después del punto decimal. Especificar precisión y escala es opcional. Sin precisión DECIMAL es tratado como DECIMAL(16), un decimal con
precisión 16. Sin escala DECIMAL es tratado como un decimal de punto flotante.
![Page 9: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/9.jpg)
Tipos de Datos Capítulo 5 – Pág. 99
Nota: El tipo de dato numérico es un sinónimo para DECIMAL de punto fijo.
![Page 10: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/10.jpg)
Tipos de Datos Capítulo 5 – Pág. 100
La ilustración de arriba muestra las ventajas del uso del tipo de dato DECIMAL sobre el tipo FLOAT ó DOUBLE PRECISION.
DECIMAL permite mayor precisión y la posibilidad de redondear un número. Una columna tipo DECIMAL típicamente almacena números que deben ser almacenados y desplegados exactamente como son introducidos (por ejemplo, tarifas o porcentajes). La precisión disponible de FLOAT puede cambiar de máquina a máquina, lo cual puede causar problemas cuando se transfieren datos a través de una red. Una columna tipo FLOAT típicamente almacena números científicos que deben ser calculados solo aproximadamente.
![Page 11: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/11.jpg)
Tipos de Datos Capítulo 5 – Pág. 101
Las columnas MONEY
almacenan montos monetarios. Los valores monetarios se despliegan anteponiéndoles el signo de dólar ($). Se pueden especificar hasta 32 dígito significativos con el tipo MONEY, al igual que con el tipo DECIMAL. De modo similar a las columnas decimal, las columnas MONEY pueden ser definidas con una precisión y escala dadas. Las columnas MONEY son también tratadas como números decimales fijos. Una columna MONEY se define por defecto como DECIMAL(16,2) si no se especifica precisión o escala. Se requieren nueve bytes para almacenar el valor por defecto. Usted puede ahorrar espacio en disco definiendo solo el máximo tamaño posible para un campo money. El tamaño puede ser incrementado posteriormente si se requiere.
![Page 12: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/12.jpg)
Tipos de Datos Capítulo 5 – Pág. 102
Las columnas SERIAL contienen números que son asignados por el sistema a cada fila de la tablay son almacenados como INTEGER. Cuando una fila es introducida, se le asigna el siguiente número en la secuencia. El valor inicial por defecto es uno y el mayor valor serial que es posible asignar es arriba de 2.1 billones. Una tabla puede contener solo una columna SERIAL y esta columna es usualmente la llave primaria. Si el número inicial (semilla) es 100, a la primera fila que se introduzca se le asignará el valor de 100. No intente cambiar un número serial una vez que este haya sido asignado. No puede ser actualizado con el estatuto UPDATE. Cuando una fila es borrada, los datos son eliminados, pero el valor SERIAL continuará incrementándose. De esta manera, al agregar una nueva fila a esta le será asignado el siguiente número en la secuencia SERIAL. Los números SERIAL no pueden ser reutilizados sin programación especial.
Consejo:
Aún cuando no es imposible cambiar un número serial, se recomienda no hacerlo. Si su programa tiene que mantener un número de identificación seriado con propósitos de auditoría, el cual no deba tener huecos, use un método diferente para generar esos números.
![Page 13: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/13.jpg)
Tipos de Datos Capítulo 5 – Pág. 103
El
tipo de dato fecha (DATE) se usa para almacenar fechas calendario. Aunque las fechas son almacenadas como enteros, los datos fecha pueden ser insertados en una columna DATE usando cualquiera de los formatos de fecha listados arriba. El tipo de dato fecha es el número de días desde el 31 de diciembre de 1899. El 1 de enero de 1900 es el día 1. En formas, reportes y estatutos SELECT, cualquier carácter no-numérico, incluyendo el espacio, puede ser usado para separar la secuencia de mes, día y año, como se muestra en la transparencia. En las formas y los reportes, usted puede decidir los detalles exactos para presentar los valores fecha. Cuando se introducen valores fecha en reportes y estatutos SELECT, los valores deben estar entrecomillados. Ejemplo: WHERE end_date > ‘1/13/1996’ Pueden efectuarse cálculos con datos fecha; por ejemplo:
![Page 14: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/14.jpg)
Tipos de Datos Capítulo 5 – Pág. 104
WHERE last_date = TODAY + 10
Nota:
La variable de ambiente DBDATE puede ser ajustada para cambiar el formato de fecha. El formato por defecto es mdy4/, el cual despliega mm/dd/aaaa.
![Page 15: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/15.jpg)
Tipos de Datos Capítulo 5 – Pág. 105
El tipo de dato DATETIME se usa cuando se desea almacenar valores que representan un punto específico en el tiempo.
Los datos DATETIME permiten mayor precisión que los datos fecha, así como una granularidad seleccionable. La precisión de los datos DATETIME pude variar desde año hacia abajo hasta una fracción de segundo. Ejemplos: DATETIME (1996-4-24 12:00) YEAR TO MINUTE DATETIME (16 12:23) DAY TO MINUTE DATETIME (31:234) SECOND TO FRACTION. Los datos DATETIME pueden contener cualquier punto válido en el tiempo entre el año 1 al 9999 D.C.
![Page 16: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/16.jpg)
Tipos de Datos Capítulo 5 – Pág. 106
La ilustración de arriba lista los rangos de valores para cada campo DATETIME. Estos valores están siempre en orden decreciente de granularidad. Los datos DATETIME pueden contener solamente combinaciones válidas de fecha-hora. Cualquier intento de asignar una combinación inválida causará una condición de error. Por ejemplo, usted no puede definir la vigesimoquinta hora del día, ni el 31 de junio de cualquier año, o el 29 de febrero de un año que no sea bisiesto.
![Page 17: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/17.jpg)
Tipos de Datos Capítulo 5 – Pág. 107
Los datos INTERVAL se usan para almacenar valores que representan períodos. En el diagrama de arriba, el primer INTERVAL puede ser expresado como 94 años y 8 meses. El segundo intervalo podría ser expresado como 560 días, 2 horas y 25 minutos. Ejemplos: INTERVAL (5-3) YEAR TO MONTH INTERVAL (11:15) HOUR TO MINUTE Un dato INTERVAL puede expresar períodos tan grandes como 9,999 años y 11 meses o tan pequeños como una fracción de segundo.
![Page 18: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/18.jpg)
Tipos de Datos Capítulo 5 – Pág. 108
Los tipos de dato INTERVAL no pueden contener meses y días. Esto se debe a que el número de días en un mes varía con el mes; mayo tiene 31 días, mientras que septiembre tiene 30. El número de días en un mes puede variar también con el año; el número de días de febrero cambia de 28 a 29 cada cuatro años, con las excepciones especiales del comienzo de algunos siglos. Debido a estas particularidades en los calendarios, ANSI dividié los tipos INTERVAL en dos subtipos, año-a-mes y día-hora.
![Page 19: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/19.jpg)
Tipos de Datos Capítulo 5 – Pág. 109
Los servidores de bases de datos son capaces de almacenar datos de caracteres de longitud variable dentro de una columna. Las columnas de este tipo son llamadas VARCHAR. Las columnas VARCHAR a menudo reducen el desperdicio de espacio en disco cuando se comparan con los mismos datos almacenados en columnas de tipo CHAR. Las columnas de tipo VARCHAR no están disponibles en algunos servidores. El principal beneficio al usar tipos de dato VARCHAR es que cuando se usan correctamente pueden incrementar el número de filas por página de almacenamiento en disco. En consecuencia, los queries pueden ejecutarse más rápidamente. Las operaciones de inserción y eliminación también pueden ser ligeramente más rápidas. Las columnas VARCHAR pueden almacenar entre 0 y 255 bytes. Cuando se especifica un dato tipo VARCHAR, debe declararse una longitud máxima para la columna. El desarrollador puede especificar opcionalmente una longitud mínima, también por razones de rendimiento. Cuando una fila es actualizada en una tabla con columnas VARCHAR, la cantidad de trabajo que el servidor necesita efectuar depende de la longitud de la nueva fila, comparado con la longitud de la fila antigua. Si la nueva fila es de la misma longitud que la anterior, el tiempo que toma actualizar la fila no será significativamente diferente que si las columnas fueran de longitud fija. Si la nueva fila es mayor que la anterior, el servidor tendrá que ejecutar muchas operaciones extra. De esta manera, actualizar una tabla con columnas VARCHAR puede a veces ser más lento que actualizar una tabla con columnas de longitud fija.
![Page 20: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/20.jpg)
Tipos de Datos Capítulo 5 – Pág. 110
Usted puede mitigar este efecto especificando una longitud mínima que sea del tamaño suficiente para la mayoría de los datos de la columna. De esta forma, la mayoría de las columnas usarán la longitud mínima; solamente se desperdicia un pequeño espacio de relleno y las actualizaciones serán lentas cuando un valor normal sea reemplazado por uno mas largo. El parámetro max-size establece el límite máximo de caracteres permitidos para la columna. El parámetro min-size fija el tamaño mínimo que será reservado siempre para los datos dentro de la columna. Además de los datos contenidos en una columna VARCHAR, se almacena un indicador de longitud al principio de la columna, el cual consume un byte. Nota: El tipo CHARACTER VARYING provee la misma funcionalidad que el tipo VARCHAR y cumple con los estándares ANSI. Los tipos de dato NVARCHAR almacena cualquier cadena de letras, números y símbolos. El tipo de dato NVARCHAR es reconocido solamente cuando está habilitado por medio de la variable de ambiente DBNLS.
![Page 21: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/21.jpg)
Tipos de Datos Capítulo 5 – Pág. 111
Objetos
binarios largos o BLOB’s son cadenas de bytes de valor y longitud arbitrarios. Un BLOB puede contener imágenes digitalizadas o sonido, un módulo objeto relocalizable, o un contrato legal. Un BLOB puede ser cualquier colección arbitraria de bytes para cualquier propósito. Cualquier cosa que usted pueda almacenar en un sistema de archivos de computadora puede ser almacenado en un BLOB. Se permite almacenar BLOB’s como columnas dentro de una base de datos. El límite teórico de un BLOB es sobre 232 bytes. El límite práctico está determinado por la capacidad del disco duro.
![Page 22: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/22.jpg)
Tipos de Datos Capítulo 5 – Pág. 112
Existen
dos tipos de BLOB’s: TEXT y BYTE. TEXT almacena información basada en caracteres: • Documentos de procesadores de texto • Archivos ASCII planos. BYTE almacena información no basada en caracteres: • Imágenes digitalizadas • Sonido digitalizado • Hojas de Cálculo • Cualquier archivo hecho de valores byte arbitrarios Ejemplos de datos BYTE incluyen imágenes de fotografías y documentos. Nota:
La palabra BLOB no aparece en algún menú; es un término genérico para los tipos de datos TEXT y BYTE.
![Page 23: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/23.jpg)
Tipos de Datos Capítulo 5 – Pág. 113
Un objeto de datos
tipo TEXT está restringido a una combinación de texto ASCII (y unos cuantos caracteres de control específicos), tales como: • Archivos de procesadores de palabras • Menúes • Capítulos manuales • Especificaciones de ingeniería • Resúmenes • Contratos legales • Archivos de código de programas fuente • Los caracteres CONTROL-I, CONTROL-J y CONTROL-L Los datos TEXT tienen las siguientes características: • No se almacenan en una columna de una tabla; en vez de eso, se almacenan en un espacio
separado • Están sujetos a disponibilidad de espacio en disco cuando se especifica una variable de
longitud ilimitada • Permiten la capacidad multimedia dentro de una base de datos Nota:
Los datos TEXT no deben ser confundidos con los tipos CHAR o VARCHAR.
![Page 24: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/24.jpg)
Tipos de Datos Capítulo 5 – Pág. 114
Un dato tipo BYTE
puede almacenar cualquier tipo de datos binarios, tales como: • Hojas de cálculo • Módulos de programas • Imágenes digitalizadas; por ejemplo, fotografías o dibujos • Patrones de voz. El tipo de dato BYTE es una colección de bytes. Se conoce solamente la longitud del BLOB y la localidad de almacenamiento en disco. Otros programas pueden ser llamados para desplegar la información BLOB.
![Page 25: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/25.jpg)
Tipos de Datos Capítulo 5 – Pág. 115
cust_numfirst_namelast_nameaddresscitystatezipphonecredit_card_typecredit_card_numcard_exp_date
customer
emp_numfirst_namelast_namesoc_sec_numaddresscitystatezipphonehire_datestore_code
employee
rental_numcust_numemp_numrental_date
rental_master
vid_type_codeeff_dateold_price
price_change
store_codestore_nameaddresscitystatezipmgr_emp_num
store
vid_numdist_stock_numtitlereceived_datedist_codevid_type_codestore_code
video
dist_codedist_name
distributorrental_numvid_numberrental_price
rental_detail
vid_type_codevid_type_descripcurrent_price
video_type
Data Types: Video Rental System*
char(3)char(20)char(80)char(20)char(2)char(10)integer
serialchar(20)char(30)char(80)char(20)char(2)char(10)char(12)char(15)char(20)datechar(2)
datetimemoney(4,2)
char(2)char(20)money(4,2)
serialsmallintchar(50)datechar(3)char(2)char(3)
integerintegermoney((4,2)
char(3)char(20)
serialchar(20)char(30)char(11)char(80)char(20)char(2)char(10)char(12)datechar(3)
serialintegerintegerdate
![Page 26: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/26.jpg)
Tipos de Datos Capítulo 5 – Pág. 116
![Page 27: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/27.jpg)
Tipos de Datos Capítulo 5 – Pág. 117
EJERCICIO DE LABORATORIO 9
![Page 28: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/28.jpg)
Normalización Capítulo 6 – Pág. 115
Capítulo
6
Normalización
Objetivos:
Al final de este módulo, usted será capaz de:
• Definir datos normalizados
• Comprobar los beneficios de la normalización de los datos
• Definir las primeras tres formas normales
• Discutir cuando los datos deben o no ser normalizados
![Page 29: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/29.jpg)
Normalización Capítulo 6 – Pág. 116
Este módulo cubre la verificación del modelo lógico de datos a través de la normalización.
![Page 30: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/30.jpg)
Normalización Capítulo 6 – Pág. 117
Normalización es la formalización de las reglas que son aplicables cuando se asocian atributos
con entidades. La normalización es materia de teoría que cubre el análisis y descomposición de
entidades lógicas en un nuevo juego de entidades que exhiban las propiedades físicas más
deseables.
Durante la normalización, se examinarán y resolverán las estructuras del modelo lógico que
pueden convertirse en propiedades indeseables del modelo físico.
El propósito del proceso de normalización es asegurar que el modelo conceptual de la base de
datos trabajará. Un modelo no-normalizado puede implementarse, pero presentará problemas
al desarrollar aplicaciones y manipular los datos. La teoría de la normalización está basada en la
observación de que un cierto juego de relaciones tiene mejores propiedades para insertar,
actualizar y eliminar datos de una base de datos.
Nota:
Existe cierto grado de normalización inherente en sus diagramas de entidad-relación como
resultado de la ejecución de los pasos iniciales al definir y resolver relaciones. Aplicar las
formas normales a su modelo ER es un buen camino para hacer una doble verificación buscando
problemas potenciales.
![Page 31: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/31.jpg)
Normalización Capítulo 6 – Pág. 118
Un modelo normalizado es más flexible y con más posibilidad de servir a un rango amplio de
aplicaciones de acuerdo a las necesidades del usuario final con mínimos cambios de estructura
conforme se desarrollan nuevas aplicaciones. Será menor la posibilidad de que las nuevas
aplicaciones forcen un cambio en el diseño de la base de datos.
La normalización reduce datos redundantes, hace más fácil el mantener los datos precisos y
consistentes, además de reducir el espacio requerido para almacenar los datos.
El diseño simple y lógico puede resultar en una mejor efectividad y productividad del
programador. La normalización reduce los costos por mantenimiento de una aplicación, dado que
los cambios a la aplicación son hechos fácilmente.
![Page 32: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/32.jpg)
Normalización Capítulo 6 – Pág. 119
La normalización incluye varios pasos para reducir sucesivamente las entidades para exhibir
las propiedades físicas más deseables. Estos pasos son definidos como reglas de normalización.
Las reglas son nombradas como formas normales.
Existen varias formas normales usadas para organizar datos. Las primeras tres formas, la
primera forma normal (1NF), segunda forma normal (2NF), y tercera formal normal (3NF), son
las más comúnmente usadas y son el objetivo de este módulo.
Cada forma normal constriñe los datos a ser mejor organizados que la última forma. Por esta
razón, cada forma normal debe ser observada antes de aplicar la siguiente forma normal.
![Page 33: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/33.jpg)
Normalización Capítulo 6 – Pág. 120
Una relación está en primera forma normal si no hay grupos repetidos (domains). Cada entidad
debe tener un número fijo de atributos simples.
![Page 34: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/34.jpg)
Normalización Capítulo 6 – Pág. 121
El ejemplo de arriba muestra una entidad order la cual no está en primera forma normal. La
entidad contiene atributos repetidos. Item y quantity aparecen de una a cuatro veces en cada
instancia, dependiendo del número de piezas de un pedido en particular.
Una entidad que no está en primera forma normal es menos flexible. En el ejemplo de arriba, el
número máximo de piezas que pueden ser incluídas en cada pedido es de cuatro. Si usted
necesita incluir diez piezas, la entidad order tendría que ser modificada para incorporar el
cambio.
![Page 35: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/35.jpg)
Normalización Capítulo 6 – Pág. 122
Convierta las entidades a la primera forma normal para quitar grupos repetidos.
Para poner la entidad order en primera forma normal, elimine los grupos repetidos de los
atributos item y q_item, como se muestra arriba. La llave primaria de la entidad order es
ahora una llave compuesta de order_num y item_num.
Ahora el máximo número de piezas en un pedido puede ser incrementado sin modificar la
entidad order.
![Page 36: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/36.jpg)
Normalización Capítulo 6 – Pág. 123
Una relación está en segunda forma normal si esta en primera forma normal y todos sus
atributos dependen de su llave primaria completa.
Si una relación está en segunda forma normal, la llave primaria completa es necesaria para
identificar todos los atributos asociados. Recuerde, una llave primaria es un mínimo juego de
atributos requerido para identificar de manera única una instancia. Un atributo no-llave, o
descriptor, es cualquier atributo que no forma parte de la llave primaria.
La segunda forma normal requiere que cada atributo no-llave necesite la llave primaria
completa para identificación única. Cada atributo no-llave debe ser completamente
dependiente funcionalmente de la llave primaria.
Nota:
La segunda forma normal es usual solamente cuando se tiene una llave primaria compuesta.
![Page 37: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/37.jpg)
Normalización Capítulo 6 – Pág. 124
Dependencia funcional indica que hay una liga entre los valores en dos diferentes atributos.
Las dependencias funcionales en la entidad order se muestran arriba. El atributo quantity es
funcionalmente dependiente de order_num y item_num. Esto significa que los valores de
order_num y item_num deben ser conocidos para una instancia dada antes de que el valor de
quantity para esa instancia pueda ser determinado.
El atributo paid_date es funcionalmente dependiente solo del atributo order_num, no de la
llave primaria completa de la entidad. Esto significa que el valor de paid_date puede ser
determinado para una instancia en particular si el valor de order_num es conocido,
independientemente de si el valor de item_num es o no conocido.
![Page 38: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/38.jpg)
Normalización Capítulo 6 – Pág. 125
En el ejemplo no-normalizado de arriba, order_date, total_amt y paid_date deben ser
suministrados para cada artículo de un pedido. La información es redundante para pedidos que
tienen más de un artículo. Como resultado, cuando se cambie order_date, total_amt o
paid_price para un pedido con varios artículos, debe cambiarse en varios lugares.
![Page 39: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/39.jpg)
Normalización Capítulo 6 – Pág. 126
Convierta entidades en primera forma normal a segunda forma normal quitando atributos que
no dependan de la llave primaria completa.
Los atributos order_date, total_amt y paid_date en el ejemplo de arriba violan la segunda
forma normal para la entidad order. Estos atributos deben ser puestos en otra entidad para
normalizar la entidad order. Dado que order_date, total_amt y paid_date son todos
dependientes de order_num, hemos creado una entidad order_master con order_num como la
llave primaria. Los atributos order_date, total_amt y paid_date han sido movidos a la entidad
order_master.
Ahora si order_date, total_amt o paid_date son cambiados en un pedido, solamente han de ser
modificados en un lugar, independientemente de cuantos artículos tiene el pedido.
Nota:
Dado que la entidad order ahora contiene solo información detallada acerca de cada pedido, la
hemos renombrado como order_detail.
![Page 40: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/40.jpg)
Normalización Capítulo 6 – Pág. 127
La tercera forma normal requiere que cada atributo no-llave en segunda forma normal dependa
de la llave primaria completa y solamente de la llave primaria. Esto elimina la dependencia
transitiva en la cual los atributos no-llave dependen no solamente de la llave primaria completa,
sino también de otros atributos no-llave que a su vez dependen de la llave primaria completa.
![Page 41: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/41.jpg)
Normalización Capítulo 6 – Pág. 128
Una entidad en segunda forma normal puede tener atributos que son dependientes de
atributos no-llave dentro de la entidad. Los atributos que dependen de un atributo no-llave en
la entidad son considerados como transitivamente dependientes de la llave primaria de la tabla.
La entidad order_price mostrada arriba no está en tercera forma normal porque es
transitivamente dependiente de la llave primaria de la entidad.
![Page 42: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/42.jpg)
Normalización Capítulo 6 – Pág. 129
En el ejemplo no-normalizado de arriba, el unit_price para un artículo debe ser suministrado
para cada pedido. Dado que unit_price es transitivamente dependiente de la llave primaria,
ocurren algunos problemas que se describen en la transparencia de arriba.
![Page 43: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/43.jpg)
Normalización Capítulo 6 – Pág. 130
El atributo unit_price es transitivamente dependiente de la llave primaria, por lo que debe ser
movido a otra entidad, para que la entidad order_price esté en tercera forma normal. Dado
que unit_price depende de stock_num y mfr_code, stock_num y mfr_code son copiados de la
entidad order_price para formar la llave primaria en la entidad stock creada para unit_price.
Como resultado de este cambio:
• El unit_price puede ser introducido para un artículo aún pensando que no haya pedidos
conteniendo el artículo
• El unit_price no se pierde si todos los pedidos que contienen un determinado artículo son
eliminados
• El unit_price solamente ha de ser cambiado en un lugar si cambia el precio unitario para un
determinado artículo.
• No hay datos redundantes y se ahorra espacio en disco, dado que unit_price existe
solamente una vez por artículo.
Nota:
Si usted necesita registrar cual precio unitario ha sido cargado a cada pedido, una columna
unit_price_charged debe existir en la tabla order, dado que la columna unit_price en la tabla
stock es más probable que cambie con el tiempo.
![Page 44: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/44.jpg)
Normalización Capítulo 6 – Pág. 131
Para convertir a 1NF, elimine todos los grupos repetidos.
Para convertir a 2NF, elimine los atributos que no son dependientes de la llave primaria
completa.
Para convertir a 3NF, elimine los atributos que dependan de otros atributos no-llave.
Consejo:
El siguiente dicho podría ayudar a recordar las tres primeras formas normales:
La llave, la llave completa y solamente la llave
![Page 45: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/45.jpg)
Normalización Capítulo 6 – Pág. 132
Cuando normalice su base de datos, no divida entidades completamente normalizadas en
entidades más pequeñas. Usted puede descomponer cada entidad en un juego de entidades que
consistan de solamente la llave primaria y un atributo no-llave.
Esto no violará las reglas de normalización. Dividir entidades normalizadas agregan complejidad
innecesaria al modelo de datos y al proceso de desarrollo de aplicaciones.
Base su modelo inicial en los conceptos del negocio y entonces aplique la teoría de
normalización para verificar la validez estructural de las entidades.
El proceso de normalización está basado solamente en el significado de los datos y no
consideran los requerimientos de proceso. Una base de datos completamente normalizada
puede no ser un diseño de base de datos óptimo o cumplir objetivos de rendimiento. Por
ejemplo, usted podría introducir redundancias controladas para asegurar mejor rendimiento;
podría revisar el modelo y cambiarlo a favor de necesidades de procesamiento particulares.
Consejo:
Si usted decide “desnormalizar” el modelo de datos por razones de rendimiento, asegúrese de
documentar su decisión y las razones que están detrás de ella.
![Page 46: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/46.jpg)
Normalización Capítulo 6 – Pág. 133
Normalice la entidad video en el sistema de renta de videos usando el ERD descrito en la
siguiente página. El problema con el diseño actual es que conducirá a datos redundantes,
complicando el cambio de los datos.
Para cada video, se almacena el título, el número de stock del distribuidor, el distribuidor y el
tipo de video, aún cuando la información es la misma para todas las copias de un título en
particular. Solo el número de video, la fecha de recepción y la tienda podrían ser diferentes
para cada copia.
Los datos redundantes dificultan el mantenimiento. Por ejemplo, cuando cambie el número de
stock del distribuidor para un determinado título, el número de stock del distribuidor debe ser
cambiado para cada copia. Si cambia el tipo de video (después de pocas semanas, una novedad
cambia a regular), el tipo de video debe ser cambiado para cada copia.
![Page 47: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/47.jpg)
Normalización Capítulo 6 – Pág. 134
cust_numfirst_namelast_nameaddresscitystatezipphonecredit_card_typecredit_card_numcard_exp_date
customer
emp_numfirst_namelast_namesoc_sec_numaddresscitystatezipphonehire_datestore_code
employee
rental_numcust_numemp_numrental_date
rental_master
vid_type_codeeff_dateold_price
price_change
store_codestore_nameaddresscitystatezipmgr_emp_num
store
tape_numtitle_numreceived_datestore_code
dist_codedist_name
distributor
rental_numtape_numrental_price
rental_detail
vid_type_codevid_type_descripcurrent_price
video_type
Class Exercise: Normalization
Primary keys are in bold . Foreign keys are in italics.
title_numdist_stock_numtitledist_codevid_type_code
video_title
video_tape
![Page 48: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/48.jpg)
Normalización Capítulo 6 – Pág. 135
![Page 49: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/49.jpg)
Normalización Capítulo 6 – Pág. 136
cust_numfirst_namelast_nameaddresscitystatezipphonecredit_card_typecredit_card_numcard_exp_date
customer
emp_numfirst_namelast_namesoc_sec_numaddresscitystatezipphonehire_datestore_code
employee
rental_numcust_numemp_numrental_date
rental_master
vid_type_codeeff_dateold_price
price_change
store_codestore_nameaddresscitystatezipmgr_emp_num
store
tape_numtitle_numreceived_datestore_code
dist_codedist_name
distributor
rental_numtape_numrental_price
rental_detail
vid_type_codevid_type_descripcurrent_price
video_type
Class Exercise: Normalization
Primary keys are in bold . Foreign keys are in italics.
title_numdist_stock_numtitledist_codevid_type_code
video_title
video_tape
![Page 50: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/50.jpg)
Normalización Capítulo 6 – Pág. 137
732KalenLee123 Circle DrivePalo AltoCA96420415-762-4829VISA46372920998488501/01/97
customer
6JenniferWatson555-39-8472121 Lytton AvePalo AltoCA94304415-328-946111/01/94HLS
employee
3761732612/15/95
rental_master
NR12/01/95$3.25
price_change
HLSHighlands24 Bay AvePalo AltoCA964203
store
98737511/25/95HLS
RCARCA Artists, Inc.
distributor
3761987$3.50
rental_detail
NRnew release$3.50
video_type
Entity Instance: Video Rental System
This page shows a sample entity instance for the normalized video rental system.
37512581Toy StoryRCANR
video_title
video_type
![Page 51: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/51.jpg)
Normalización Capítulo 6 – Pág. 138
EJERCICIOS DE LABORATORIO 10.
![Page 52: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/52.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 139
Capítulo
7 Estatutos SQL para crear una Base de Datos
Objetivos:
Al final de este módulo, usted será capaz de:
• Entender como el modelo lógico de base de datos corresponde al modelo de base de datos
físico
• Escribir un estatuto CREATE DATABASE para crear una base de datos
• Escribir un estatuto CREATE TABLE para crear una tabla de una base de datos
• Escribir un estatuto ALTER TABLE para modificar una tabla de base de datos
![Page 53: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/53.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 140
Los módulos restantes de este curso cubren el paso final en el diseño de bases de datos
relacionales descrito arriba.
![Page 54: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/54.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 141
La figura muestra cómo el modelo lógico usado en el diseño de base de datos relacional se
traduce en un esquema físico de base de datos.
El lenguaje de consulta estructurado (SQL) es el lenguaje usado para traducir un modelo lógico
de base de datos en un esquema de base de datos. Un esquema es la definición física de las
tablas en una base de datos. Una tabla es una representación de dos dimensiones de columnas y
filas.
SQL fue originalmente desarrollado por IBM como un lenguaje de consulta a la medida. Hoy
día, se ha convertido como el lenguaje estándar de la industria y herramienta de comunicación
con bases de datos relacionales.
![Page 55: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/55.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 142
Una base de datos se crea con el estatuto CREATE DATABASE. El estatuto mostrado arriba
podría crear una base de datos llamada videos.
Existen extensiones del estatuto CREATE DATABASE que soportan funcionalidades
adicionales provistas por el servidor de base de datos. El administrador de la base de datos
necesita tomar varias decisiones antes de crear una base de datos, tales como donde la base
de datos será creada. Las decisiones variarán dependiendo del servidor de base de datos que
se esté usando.
![Page 56: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/56.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 143
Una tabla se crea con el estatuto CREATE TABLE.
El estatuto CREATE TABLE mostrado arriba crea una tabla llamada video_type con dos
columnas. El estatuto especifica el tipo de dato para cada columna.
Hay muchas extensiones al estatuto CREATE TABLE que soportan funcionalidad adicional
provista por el servidor de la base de datos. Algunas de estas extensiones son discutidas en el
módulo Data Integrity.
![Page 57: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/57.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 144
Una vez que una tabla ha sido creada, usted puede modificarla usando el comando ALTER
TABLE.
El ejemplo de ALTER TABLE mostrado arriba agrega una columna llamada curen_price a la
tabla video_type.
Existen muchas variantes del estatuto ALTER TABLE. Algunas de estas variantes son
discutidas en el módulo Data Integrity.
![Page 58: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/58.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 145
Ejercicios de Clase: Evalua las expresiones SQL del Sistema de Renta de Video
Evaluar las siguientes expresiones SQL y contestar las siguientes preguntas:
• ¿Corren exitosamente estas expresiones de SQL?
- Si es asi, ¿Qué es lo que hacen? ¿Es esto lo que deben hacer?
- Si no, ¿Cuál es el problema? ¿Cómo lo arreglarías?
• ¿Hay otra mejora que puedas hacer?
(Sugerencias: Recuerda los lineamientos para nombrar descritos en el módulo
Especificaciones de Atributos.)
Discute las respuestas en grupo.
create database videos; create table store ( store code char(20), store_name char(20), address char (80), city char(20), state char(20), zip char(10)); create table video_title title_num serial, dist_stock_num serial, title char(50), dist_code char(2), div_type_code char(2)); alter table store ( add_phone char(12)); create table video_tape ( tape_number integer, title_num integer, received_date date, store_code char(3));
![Page 59: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/59.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 146
![Page 60: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/60.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 147
![Page 61: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/61.jpg)
Estatutos SQL para crear una base de datos Capítulo 7 – Pág 148
Soluciones
Una solución simple para el ejercicio se muestra en las siguientes lineas. Los cambios hechos a
las expresiones en la página previa estan resaltados en negritas.* create database videos; create table store ( store_code char(3), store_name char(20), address char(80),
city char (20), state char(2), zip char(10), mgr_emp_num integer );
create table video_title ( title_num serial, dist_stock_num integer , title char(50), dist_code char(3), vid_type_code char(2)); alter table store add phone char(12); create table video_tape ( tape_num serial , title_num integer, received_date date, store_code char(3)); *También puede ser apropiado usar el tipo de dato VARCHAR para algunas columnas de
caracteres.
![Page 62: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/62.jpg)
Integridad de los datos Capítulo 8 – Pág. 149
Capítulo
8
Integridad de los datos
Objetivos:
Al final de este módulo, usted será capaz de:
• Entender los conceptos básicos de integridad de datos
• Explicar los diferentes tipos de constraints de integridad de datos
• Implementar constraints de integridad de datos
![Page 63: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/63.jpg)
Integridad de los datos Capítulo 8 – Pág. 150
Data Integrity es la precisión o calidad de los datos en una base de datos.
La Integridad Referencial es usada par asegurar las relaciones entre tablas.
La integridad de las entidades es asegurada creando una llave primaria que identifique de
manera única a cada fila en la tabla.
La integridad semántica es asegurada usando las siguientes constraints:
Data types El tipo de datos define los tipos de valores que usted puede
almacenar en la columna.
Default Values El valor por defecto es el valor insertado en una columna cuando
no se especifique un valor explícito.
Check constraints Un check constraints especifica condiciones sobre los datos
insertados o actualizados en una columna.
![Page 64: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/64.jpg)
Integridad de los datos Capítulo 8 – Pág. 151
Un
referential constraint permite al usuario especificar las llaves primarias y foráneas para
asegurar las relaciones padre-hijo (maestro-detalle). Para definir una constraint referencial,
un usuario debe tener el privilegio REFERENCES o ser el dueño de la tabla. Las constraints
referenciales permiten establecer las restricciones descritas abajo en actualizaciones,
inserciones o eliminaciones.
Por ahora, asuma que la verificación de constraint referencial es hecha conforme cada fila es
insertada, actualizada o norrada.
He aquí algunas reglas que aseguran constraints referenciales:
• Si un usuario borra una llave primaria y existen llaves foráneas, el borrado falla.
• Si un usuario actualiza una llave primaria, y existen valores de llaves foráneas que no
corresponden al valor de la nueva llave primaria, la actualización falla.
• No hay restricciones asociadas con el borrado de llaves foráneas.
• Si un usuario actualiza una llave foránea y no hay llave primaria correspondiente al nuevo
valor, no-nulo de llaves foráneas, la actualización falla.
• Todos los valores dentro de una llave primaria deben ser unique. Un intento de insertar o
duplicar el valor dentro de la llave, fallará.
• Cuando un usuario inserta una fila en una tabla hija, si todas las llaves foráneas son no-null
y no hay la correspondiente llave primaria, la inserción falla.
![Page 65: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/65.jpg)
Integridad de los datos Capítulo 8 – Pág. 152
Arriba se listan tres de los tipos de constraints referenciales. Estas se describen en las
próximas páginas.
![Page 66: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/66.jpg)
Integridad de los datos Capítulo 8 – Pág. 153
Una constraint ciclica asegura una relación padre-hijo (maestro-detalle) entre tablas. Esta
constraint asegura que cada fila de la tabla hija tenga su correspondiente fila en la tabla
padre.
![Page 67: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/67.jpg)
Integridad de los datos Capítulo 8 – Pág. 154
Un ejemplo de constraint referencial cíclica se muestra en esta lámina.
Para asegurar una constraint cíclica referencial, usted debe especificar una llave primaria en la
tabla padre y su correspondiente llave foránea en la tabla hija. Solamente puede haber una
llave primaria por tabla. La cláusula REFERENCES especifica la tabla padre. Dado que solo se
permite una llave primaria en la llave padre, no es necesario incluir la columna de llave primaria
en la cláusula.
El ejemplo de arriba asegura la relación padre-hijo entre las tablas rental_master y
rental_detail. La columna rental_num está designada como la llave primaria en la tabla
rental_master, lo cual significa que solamente valores únicos pueden ser agregados a la
columna. La columna rental_num en la tabla rental_detail está designada como la llave foránea
referenciando la columna rental_num en la tabla rental_master. Esto asegura que registros de
detalle de renta serán agregados solamente si un rental master existe y un rental master no
puede ser borrado si existen rental details asociados.
![Page 68: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/68.jpg)
Integridad de los datos Capítulo 8 – Pág. 155
Las constraints referenciados-a-si-mismos aseguran las relaciones padre-hijo dentro de una
tabla. Ellas aseguran que cada fila hijo en la tabla tenga una fila padre correspondiente en la
tabla.
![Page 69: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/69.jpg)
Integridad de los datos Capítulo 8 – Pág. 156
Un ejemplo de constraints referencia-a-si-mismo se muestra arriba.
En este ejemplo, la tabla employee es usada para registrar a todos los empleados y gerentes a
los cuales ellos están asignados. Una constraint referencia-a-si-mismo se usa para asegurar
que el gerente asignado a cada empleado exista en la tabla employee. En otras palabras, un
empleado no puede tener un gerente que no sea empleado.
La columna emp_num es la llave primaria para la tabla employee, y la columna mgr_emp_num es
una llave foránea referenciando a emp_num. Esto significa que los valores de mgr_emp_num
deben existir en la columna emp_num antes de poder agregar la fila a la tabla.
![Page 70: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/70.jpg)
Integridad de los datos Capítulo 8 – Pág. 157
Las constraints multiple path se refieren a una llave primaria que puede tener varias llaves
foráneas correspondientes.
![Page 71: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/71.jpg)
Integridad de los datos Capítulo 8 – Pág. 158
El ejemplo de arriba muestra una tabla padre, store, que tiene dos diferentes hijos, las tablas
video_tape y employee.
![Page 72: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/72.jpg)
Integridad de los datos Capítulo 8 – Pág. 159
Usted puede agregar constraints a una tabla después de haber sido creada usando el estatuto
ALTER TABLE. El dibujo de arriba provee ejemplos de cómo constraints de llaves primarias y
secundarias pueden ser agregadas a la tabla después de heber sido creada.
Existen muchas variaciones del estatuto ALTER TABLE.
![Page 73: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/73.jpg)
Integridad de los datos Capítulo 8 – Pág. 160
Las constraints unique aseguran que cualquier fila insertada o actualizada en una tabla tenga un
valor único en la(s) columna(s) especificada(s). En el ejemplo de arriba, una constraint unique
ha sido puesta en la columna phone. Esto asegurará que cada número telefónico agregado a la
tabla employee sea único.
Nota:
Una columna agregada con constraint de llave primaria garantiza que sea única y no puede
tener una constraint unique.
![Page 74: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/74.jpg)
Integridad de los datos Capítulo 8 – Pág. 161
Si usted está agregando una fila de datos a una tabla y no especifica un valor explícito para
una columna, el valor por defecto para esa columna es insertado. Como se muestra en el
ejemplo de arriba, se puede definir valores por defecto para columnas como parte del estatuto
CREATE TABLE. Si un valor por defecto no es especificado para un columna, el defaul es null.
Usted puede especificar valores literales como defaults similares al mostrado en el primer
ejemplo de arriba. San Francisco es el valor por defecto para la columna city. El valor literal
que usted suministre debe coincidir con el tipo de datos de la columna. Por ejemplo, literales
enteras pueden ser especificadas para columnas INTEGER, SMALLINT, DECIMAL, MONEY,
FLOAT y SMALLFLOAT.
Usted puede especificar también ciertas funciones como valores por defecto. En el segundo
ejemplo de arriba, la función TODAY es especificada como el valor por defecto para la columna
rental_date. Esto significa que la fecha del día será insertada si no se provee una fecha
alternativa. Para mayor información sobre las funciones que pueden ser especificadas como
valores por defecto, refiérase a Guide to SQL.
![Page 75: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/75.jpg)
Integridad de los datos Capítulo 8 – Pág. 162
Si usted no indica un valor por defecto para una columna, el default es null a menos que usted
incluya la palabra llave NOT NULL en la definición de la columna. En este caso, no existirá valor
por defecto para la columna y usted debe introducir un valor dentro de la columna cuando
usted agregue una fila a la tabla o actualice una fila de la tabla. Si usted no especifica un valor
para esa columna, el insert o update falla.
En el ejemplo de arriba, no se permiten valores nulos en ninguna columna de la tabla
rental_master. La única columna con un valor por defecto es la columna rental_date.
Consejo:
Usted debe especificar siempre NOT NULL para columnas que son parte de una llave primaria.
![Page 76: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/76.jpg)
Integridad de los datos Capítulo 8 – Pág. 163
Una check constraint especifica condiciones sobre los datos insertados en una columna. Cada
fila insertada dentro de la tabla debe cumplir las condiciones especificadas.
EN el ejemplo mostrado arriba, la tabla customer tiene una check constraint en la columna
card_exp_date, la cual especifica que la fecha introducida en card_exp_date debe ser mayor
al 1 de Enero de 1996.
Existen muchas formas de implementar check constraints en las tablas de sus bases de datos.
Refiérase a Guide to SQL para mayor información.
Ejercicios de Clase: Evalua las expresiones SQL del Sistema de Renta de Video
![Page 77: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/77.jpg)
Integridad de los datos Capítulo 8 – Pág. 164
Evaluar las siguientes expresiones SQL y contestar las siguientes preguntas:
• ¿Corren exitosamente estas expresiones de SQL?
- Si es asi, ¿Qué es lo que hacen? ¿Es esto lo que deben hacer?
- Si no, ¿Cuál es el problema? ¿Cómo lo arreglarías?
- ¿Hay otra mejora que puedas hacer?
• Discuta las respuestas en grupo.
create database videos; create table store ( store_code char(3) not null, store_name char(20) not null, address char(80),
city char (20), state char(2), zip char(10), mgr_emp_num integer, primary key store_code),
create table employee ( emp_num serial, first_name char(3), last_name char(30) not null, soc_sec_num char(11) not null, address char(80), city char(20), state char(2) default CA, zip char(10), phone char(12), hire_date date, default today, store_code char(3), not null, primary key (emp_num), foreign key (store_code) unique (soc_sec_num));
![Page 78: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/78.jpg)
Integridad de los datos Capítulo 8 – Pág. 165
Soluciones
![Page 79: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/79.jpg)
Integridad de los datos Capítulo 8 – Pág. 166
Una solución simple para el ejercicio se muestra en las siguientes lineas. Los cambios hechos a
las expresiones en la página previa estan resaltados en negritas.
create database videos; create table store ( store_code char(3) not null, store_name char(20) not null, address char(80),
city char (20), state char(2), zip char(10), mgr_emp_num integer, primary key (store_code)),
create table employee ( emp_num serial not null , first_name char(20), last_name char(30) not null, soc_sec_num char(11) not null, address char(80), city char(20), state char(2) default 'CA', zip char(10), phone char(12), hire_date date default today, store_code char(3), not null, primary key (emp_num), foreign key (store_code) references store, unique (soc_sec_num));
![Page 80: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/80.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 181
Capí tu lo
10 Insertando y seleccionando datos
Objetivos
Al final de este módulo, usted será capaz de: • Agregar datos a una base de datos usando el estatuto INSERT • Recuperar información desde una base de datos usando el estatuto SELECT
![Page 81: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/81.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 182
Una vez que se ha creado una base de datos, se le puede agregar información usando el estatuto INSERT El primer INSERT mostrado arriba agrega una fila a la tabla video_type con los siguientes valores: vid_type_code CH vid_type_descrip Childrens current_proce $1.00 Se puede usar este formato del estatuto INSERT, especificando un valor para cada columna en la tabla en el orden de las columnas que fue establecido cuando la tabla fue creada o alterada. El segundo INSERT de arriba agrega una fila a la tabla store con los siguientes valores: store_code HLS store_name Highlands address null city null state null zip null mgr_emp_num 5
![Page 82: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/82.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 183
En este formato del estatuto INSERT, se especifican tanto las columnas como los valores. Los valores deben aparecer en el mismo orden que las columnas, y el número de valores listado debe ser el mismo que el número de columnas listadas. Use este formato cuando no desee introducir un valor para cada columna en la tabla. Cuando no se especifica un valor para una columna, el valor por defecto, si lo hay, es insertado. Si se tiene una columna SERIAL en la tabla, y se desea insertar una fila con el siguiente número consecutivo serial, especifique un cero como valor para la columna serial en la instrucción INSERT. Nota: Existen mejoras del estatuto INSERT que permiten funcionalidades adicionales. El curso Structured Query Language cubre muchas de esas extensiones.
Precaución!
Si se intenta insertar información que no cumpla con los criterios asociados a las constraints de la tabla, los datos no serán insertados y el servidor de base de datos regresará un error.
![Page 83: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/83.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 184
EJERCICIO DE LABORATORIO 12
![Page 84: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/84.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 185
Se pueden recuperar datos desde una base de datos usando el estatuto SELECT. El estatuto SELECT mostrado arriba regresa todos los valores de las columnas en todas las filas de la tabla video_type. El asterisco (*) indica que todas las columnas en la tabla serán recuperadas.
![Page 85: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/85.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 186
Este estatuto SELECT regresa solo los valores en las columnas title y vid_type_code de todas las filas de la tabla video_title. Se puede especificar que se desea recuperar los valores en cualquier columna o todas las columnas de una tabla listando las columnas que se desean ver.
![Page 86: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/86.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 187
Los dos ejemplos previos de SELECT mostraron como recuperar datos de una sola tabla. Uno de las más poderosas capacidades de una base de datos relacional es que usted puede recuperar datos de varias tablas. El ejemplo de SELECT de arriba muestra como recuperar datos de dos tablas. En este ejemplo, las columnas title y su correspondiente vid_type_descrip son seleccionadas desde las tablas video_title y video_type. Para poder recuperar datos correctamente desde múltiples tablas, es necesario unir (join) las tablas ligando los valores de las llaves primarias de la tabla padre a sus correspondientes valores de llaves foráneas en la tabla hija. La unión de tablas se hace mediante la cláusula WHERE del estatuto SELECT, quien especifica cuales columnas necesitan ser ligadas. Si las columnas de llaves foráneas y sus correspondientes llaves primarias tienen el mismo nombre, como aquí mismo recomendamos, es necesario anteponer al nombre de cada columna el nombre de su tabla y un punto (ejemplo: tabla1.column1) para poder eliminar la ambigüedad. Nota: Existen numerosas mejoras del estatuto SELECT que proveen funcionalidad adicional más allá de lo cubierto en este módulo. El curso Structured Query Language cubre muchas de esas extensiones.
![Page 87: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/87.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 188
Si usted no une las tablas correctamente cuando selecciona datos de varias tablas, resulta un producto cartesiano. Un producto cartesiano consiste de cada posible combinación de filas desde las tablas. El ejemplo de SELECT mostrado arriba solicita datos desde dos tablas y crea un producto cartesiano.
![Page 88: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/88.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 189
![Page 89: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/89.jpg)
Insertando y seleccionando datos Capítulo 10 – Pág. 190
EJERCICIO DE LABORATORIO 13
![Page 90: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/90.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.191
Capí tu lo
11 Grupo de Laboratorio de diseño de Bases de datos Relacionales
![Page 91: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/91.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.192
Trabajen juntos en pequeños grupos como designe su instructor en el ejercicio de laboratorio
descrito arriba. Seleccionen un líder de grupo que modere las discusiones y un miembro del
grupo para documentar el ERD final.
Como grupo, analicen y discutan el texto de la entrevista, consideren alternativas de diseño y
construyan un ERD normalizado.
Elijan a una persona que presente y explique el ERD del grupo como parte de una discusión de
la clase.
![Page 92: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/92.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.193
• Obtener conocimiento del negocio
• Identificar entidades, atributos y relaciones.
� Determinar conectividad
� Determinar las constraints de cardinalidad
� Determinar existencias dependientes
• Diagramar los objetos de datos usando el método de entidad-relación
• Resolver el modelo lógico de datos (1:1, M:N, redundantes)
• Determinar especificaciones de atributos y tipos de datos
� Identificar llaves primarias y foráneas
� Nombrar atributos
� Determinar requerimientos de no nulos
� Determinar requerimientos unique
• Verificar el modelo lógico de datos a través de la normalización
![Page 93: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/93.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.194
“Necesitamos diseñar un sistema para registrar problemas de usuarios. Los usuarios de
computadoras dentro de la compañía llaman al teléfono del MIS cuando tienen un problema.
Usualmente es un problema de hardware pero a veces puede estar relacionado con el software
o la red. Pero tu sabes, a veces es simplemente un problema relacionado con el usuario y no es
realmente un problema del MIS. Necesitamos registrar nombre, extensión telefónica y
dirección de correo electrónico de la persona que reporta el problema. Cuando resolvemos el
problema, le llamamos de nuevo al usuario o le mandamos un correo electrónico. Necesitamos
registrar la fecha y hora de la llamada y el tipo de problema; tu sabes, hardware, software ó
red. También necesitamos tener una descripción del problema.
¿Qué pasa enseguida? Cuando el problema es registrado, se le asigna a un ingeniero dentro del
departamento de MIS. El ingeniero corrige el problema y registra la fecha, hora y resolución.
Seguro, un ingeniero está trabajando en muchos problemas al mismo tiempo. Usualmente su
carga de casos es muy pesada. Si ellos no pueden resolver el problema, este es escalado al
ingeniero de siguiente nivel.
Existen tres niveles de ingenieros. Las llamadas son colocadas inicialmente con los ingenieros
de nivel uno y escalan al nivel dos o tres si es necesario. El ingeniero usa su criterio para
escalar un problema al siguiente nivel. ¿Puede un ingeniero ser de diferentes niveles? Oh no;
ellos están ya sea en nivel uno, dos o tres.
![Page 94: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/94.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.195
Si un usuario llama mas de una vez acerca del mismo problema, necesitamos registrar cada
llamada.
Todo lo que necesito saber acerca de un ingeniero es su nombre, nivel y cuánto tiempo ha
trabajado en el problema individualmente.
![Page 95: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/95.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.196
![Page 96: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/96.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.197
![Page 97: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/97.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.198
![Page 98: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/98.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.199
Soluciones
problem_numproblem_cdproblem_textresolve_dateresolve_text
problem_numengineer_numassigned_datelength
engineer_numfirst_namelast_namelevel
email_addressfirst_namelast_nameextn
call_numproblem_numemail_addresscall_date
problem_cdproblem_descrip
engineer
case
usercall
problem
problem_type
Problem Tracking SystemSample Solution
![Page 99: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/99.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.200
En resumen, las bases de datos relacionales ofrecen muchas ventajas sobre los sistemas de
archivos convencionales y las bases de datos jerárquicas y de red. La aproximación entidad-
relación es una metodología que puede ser usada para diseñar una base de datos relacional. La
ilustración de arriba enlista los pasos para el diseño de una base de datos que fueron cubiertos
en este curso.
![Page 100: Tipos de Datos - eduarmandov.files.wordpress.com€¦ · Tipos de Datos Capítulo 5 – Pág. 93 Hay ocho categorías de tipos de datos disponibles. Character Almacena cualquier combinación](https://reader033.vdocuments.mx/reader033/viewer/2022050206/5f592bdf932bf36cb263cac9/html5/thumbnails/100.jpg)
Grupo de laboratorio de diseño de bases de datos Capítulo 11 – Pág.201
Los libros de arriba fueron consultados durante la creación de estos materiales de
entrenamiento y son recomendados para posterior lectura sobre los temas de diseño de bases
de datos relacionales.