1 00:00:00,000 --> 00:00:13,360 Hola a todos. Este es el segundo vídeo del ejercicio 12 de la unidad 3 de base de datos. 2 00:00:13,360 --> 00:00:19,600 El ejercicio 12 hicimos en el vídeo 1 hasta la obtención del esquema antiderrelación 3 00:00:19,600 --> 00:00:24,400 que era este de aquí. Vimos que había, para repasar, que entre ruta y autobús había 4 00:00:24,400 --> 00:00:29,640 una relación 1-a-n y que esa relación se llamaba realiza y que entre ruta y ciudad 5 00:00:29,640 --> 00:00:37,440 había una relación para n y cuya relación era n-a-m. Bien, hay que pasar este modelo 6 00:00:37,440 --> 00:00:42,720 de antiderrelación al modelo relacional. Por ello, lo que vamos a hacer, lo vamos a 7 00:00:42,720 --> 00:00:48,440 hacer en SQL Developer y le he creado una conexión que se llama, aquí la tenemos, 8 00:00:48,440 --> 00:00:57,920 ejercicio 12, y bueno, conectamos con la conexión. También lo puedes hacer en SQL Plus y lo 9 00:00:57,920 --> 00:01:02,200 primero que vamos a ver es el esquema lógico como lo he creado. Aquí lo tengo. Vamos 10 00:01:02,200 --> 00:01:08,520 a ir separando uno a uno para que lo veamos. Primero tenemos en cuanto a bus. Bus, ¿cómo 11 00:01:08,520 --> 00:01:13,440 ha cambiado? Pues hemos introducido, además de matrícula, modelo, capacidad y conductor, 12 00:01:13,440 --> 00:01:19,680 le hemos introducido el atributo código. Aquí no tenía bus código, pero le hemos 13 00:01:19,720 --> 00:01:31,800 introducido, hemos migrado este atributo código a bus. ¿Por qué? Porque si nos vamos a 14 00:01:37,360 --> 00:01:42,320 paso de relaciones de 1-a-n del esquema antiderrelación a esquema relacional, 15 00:01:42,320 --> 00:01:47,240 que nos decía la teoría. Como norma general, se convierten a tabla las dos entidades y se 16 00:01:47,240 --> 00:01:51,800 propaga la clave de la entidad propietario a la entidad miembro. Eso es lo que he realizado. He 17 00:01:51,800 --> 00:02:00,640 pasado la clave de ruta, código, lo hemos pasado a autobús. Bien, con ello ya tenemos la primera 18 00:02:00,640 --> 00:02:12,440 entidad bus pasada ya, que se puede convertir ya en una tabla. La siguiente sería ruta. Ruta 19 00:02:12,920 --> 00:02:20,960 lo vamos a dejar tal y como está. Lo vimos que ruta tenía kilómetros desde hasta y código. Y así 20 00:02:20,960 --> 00:02:27,720 se va a quedar. Bien, luego tenemos el caso de ciudad, que también se va a quedar exactamente 21 00:02:27,720 --> 00:02:32,960 igual. Tendría nombre, dirección y teléfono. Luego veremos por qué estas dos se quedan así. Y, por último, 22 00:02:32,960 --> 00:02:38,120 veis que no había ninguna entidad más, pero aquí creamos otra, o una nueva tabla, que sería para 23 00:02:38,280 --> 00:02:44,400 en. Y en el que he añadido tanto código, que sería la clave primaria de ruta, como nombre, que es la clave 24 00:02:44,400 --> 00:02:49,560 primaria de ciudad. Luego, la relación tenía un atributo que se llamaba orden y también la he introducido 25 00:02:49,560 --> 00:02:56,040 aquí. ¿Por qué? Porque si vemos el paso A del paso de relaciones M a N del esquema de entidad relación 26 00:02:56,040 --> 00:03:01,480 al esquema relacional, las relaciones M a N se transforman en una nueva tabla que tendrá como clave 27 00:03:01,480 --> 00:03:06,360 primaria la unión de las claves primarias de las entidades que asocia. Ves aquí, producto y trabajador. 28 00:03:06,360 --> 00:03:10,960 Cada uno tiene su clave primaria, ref y dni, y en la nueva tabla que genera, puesto que hay una relación 29 00:03:10,960 --> 00:03:18,920 N a M, añade ambas claves primarias, le llama igual que la relación, elabora esa nueva tabla y le añade 30 00:03:18,920 --> 00:03:24,200 el propio atributo que tenía la propia relación. ¿Eso es lo que vamos a hacer aquí? Lo que vamos a hacer aquí 31 00:03:24,200 --> 00:03:30,400 es exactamente lo mismo. Coge código de ruta y nombre de ciudad, que eran las dos claves primarias, y le añade 32 00:03:30,400 --> 00:03:37,600 su propio atributo orden. Y con esto ya tendríamos las cuatro tablas, el esquema lógico, y con ello podemos 33 00:03:37,600 --> 00:03:49,440 crearlas en SQL Developer. Aquí tengo, vamos a coger, para no tener que perder el tiempo redactándolo, 34 00:03:49,440 --> 00:03:56,400 lo vamos a poner aquí y ahora lo explico poco a poco. Lo primero, pongo que borre las cuatro tablas, 35 00:03:56,400 --> 00:04:03,160 bus, ruta, parae, mi ciudad, para que no me dé errores de las múltiples veces que voy a ejecutando el script. 36 00:04:03,160 --> 00:04:10,840 Y a continuación lo que hago es que creo las cuatro tablas. Aquí tengo la primera, la vamos a poner en una sola línea 37 00:04:10,840 --> 00:04:21,760 para que se vea perfectamente. Y explico la primera y, bueno, todas son iguales. Create table, ya vimos la teoría, bus. 38 00:04:21,760 --> 00:04:28,680 ¿Y qué vamos a tener? Matrícula de tipo number. Lógicamente, como es un número, va a ser de tipo number con cuatro dígitos. 39 00:04:28,680 --> 00:04:36,920 Y luego el resto serían de tipo bar chart, tipo carácter. El último tenemos código, que también sería de tipo number. 40 00:04:36,920 --> 00:04:43,720 No he metido las restricciones. Las restricciones lo haremos con alter table. En cuanto a las demás tablas, es exactamente lo mismo. 41 00:04:43,720 --> 00:04:52,280 Vamos poniendo cada uno de los atributos y el tipo. Y ya está. Esto sería en cuanto a la creación de las cuatro tablas. 42 00:04:52,280 --> 00:05:01,480 No le voy a ejecutar el script, pero lo podemos ejecutar y veremos que no da ningún error. Aquí lo tenemos. 43 00:05:03,480 --> 00:05:09,960 Y veis que nos dice que en la línea 10, bueno, está diciendo que las líneas que da error son estas que he puesto aquí de texto, 44 00:05:09,960 --> 00:05:25,880 pero no las quiero borrar para que veamos cómo es el esquema. Bien, ahora pasamos a coger, vamos a generar las Constraints Primary Key y las pegamos. 45 00:05:25,880 --> 00:05:34,840 Las ponemos todas en una línea y explico en qué consiste. En la primera dice alter table, alterame la tabla bus y le añades addConstraint, 46 00:05:34,840 --> 00:05:44,320 ésta se va a llamar pkBus, le he puesto ese nombre. Podéis poner lo que queráis. ¿Qué le vas a adicionar? Le voy a adicionar una restricción que es que 47 00:05:44,320 --> 00:05:57,320 admPrimaryKey a matrícula. Bien, entonces la primera tabla tendrá bus, tendrá como primary key matrícula. La segunda le hace lo mismo, pero ahora la llama pkRuta y la convierte en primary key a código. 48 00:05:57,880 --> 00:06:10,360 La tercera ciudad le va a llamar pkCiudad y le convierte a nombre, como vimos. Y por último, para n, que dijimos que la primary key constaba de dos atributos, pues dice que 49 00:06:10,360 --> 00:06:24,040 oye, a primary key la llamas a la restricción pkParaN y va a tener dos atributos que va a ser código y nombre. Bien, ya tenemos las claves primarias, ahora vamos a crear las claves 50 00:06:24,040 --> 00:06:38,600 para las foreign key, las ajenas. Y para ello, bueno, también lo tengo aquí, lo pegamos y lo explico. Lo copio, lo pegamos y lo dejamos toda una línea para que se vea bien. 51 00:06:38,600 --> 00:07:02,600 Ahora le estamos diciendo alterame la tabla, alterTable, bus y le llamo eso a constrain, igual que antes. Le llamo ahora fk, lo de foreign key, y le está diciendo admForeignKey a código y código a quien hace referencia. Hace referencia a la clave primaria de quien de ruta, de la tabla ruta. 52 00:07:02,600 --> 00:07:25,600 La siguiente sería, ahora llámame fkParaN y le haces referencia, admForeignKey a código y que se refiera a la tabla ruta igual. Y por último, sería fkParaN1 en el que tendríamos que admForeignKey nombre, pero que hace referencia a la tabla ciudad. Y con eso tendríamos ya todo resuelto. 53 00:07:25,600 --> 00:07:43,600 Si nosotros borramos, le quitamos esto, no debería dar ningún problema. Cortamos esto y le damos a ejecutar el script y no debería haber dado ningún problema. Si nos vemos aquí, no hay ningún problema. Estaría ya todo generado perfectamente. 54 00:07:43,600 --> 00:08:04,600 Último paso de este vídeo para crear un esquema relacional, la visualización de ese esquema relacional, se puede realizar aquí, a través del Data Modeler. Data Modeler, importamos y le damos a Direccional de Datos. 55 00:08:05,600 --> 00:08:19,600 Vamos a utilizar el ejercicio 2, que sería la conexión que hemos seguido. Conectar a la base de datos. ¿Por qué no la activa aquí? 56 00:08:19,600 --> 00:08:39,600 Ya lo he cogido. Ahora, en el usuario que hemos utilizado, que era Francisco, le damos a Siguiente, pero aquí os aconsejo, antes de ir para atrás, que utilicéis el New Relational Model. 57 00:08:39,600 --> 00:09:00,600 Le damos a Siguiente y cogemos las tablas, que son las cuatro que he creado, las seleccionamos y le damos a Siguiente y le damos a Terminar. Con ello, tarda un poquito, pero nos aparecerá la imagen del esquema relacional que hemos diseñado. 58 00:09:10,600 --> 00:09:20,600 Repito todo el vídeo, estamos pasando de este esquema Entidad Relación al nuevo esquema relacional que nos aparecerá aquí. 59 00:09:20,600 --> 00:09:43,600 Pero, según veo, no nos aparece ese esquema. Voy a ejecutarlo otra vez, no sé por qué. Vamos a dar a Archivo, Data Modeler, Importar, Direccional de Datos. 60 00:09:44,600 --> 00:10:02,600 Ejercicio 12, que es el que estamos utilizando. Siguiente, Francisco. Vamos a coger Relacional. A ver, ahora, cogemos las tablas y le damos a Siguiente y Terminar. 61 00:10:03,600 --> 00:10:30,600 Bueno, y aquí ya tenemos el modelo de Relacional. Si lo vemos, aquí tendremos las cuatro tablas. Si veis, ahora Ruta y Ciudad, esa relación N-A-M, se ha transformado con un intermediario, que sería la tabla de Relacional. 62 00:10:30,600 --> 00:10:39,600 Con un intermediario, que sería la tabla para N, entre medias de Ruta y Ciudad. Sigue habiendo esa relación N-A-M, pero con esa tabla entre medias. 63 00:10:39,600 --> 00:11:00,600 Ahora la Primary Key tiene ambas claves primarias, tanto Código de Ruta como Nombre de Ciudad. Y, por otro lado, esa relación 1-A-N entre Ruta y Bus, se transformó migrando código a la tabla Bus. 64 00:11:00,600 --> 00:11:10,600 Si veis aquí, esta sería la solución que se ha creado y cómo aparecería. Y esto es todo en cuanto al ejercicio 12.