Este es un recopilatorio de preguntas tomadas en los teóricos de promoción, tienen su respuesta correcta abajo
Modelado de datos
Justificación:
El modelo conceptual no esta condicionado por el tipo de dbms a utilizar, ya que es independiente de ese tipo, el modelo que esta condicionado por eso es el modelo lógico. Tampoco esta condicionado por el dbms especifico a utilizar ya que es independiente del mismo, es un modelo genérico de la base de datos, no piensa en el tipo de dbms ni en el dbms especifico que se va a utilizar, el dependiente del mismo es el modelo físico. Al ser independiente del tipo de dbms a utilizar, no aplica reglas compatibles con una base de datos relacional, ya que es un diseño mas general de la bd. El tamaño de la base de datos no afecta a la hora de diseñar el modelo conceptual de la misma.
2.
Un atributo polivalente no puede ser identificador ya que estos son si o si monovalentes obligatorios , puede ser un atributo compuesto porque los mismos pueden ser polivalentes y opcionales. Debe estar en una entidad porque representan una característica de las mismas, no están en una relación porque los atributos de las mismas no pueden tener múltiples valores, ya que este define una característica de una relación entre 2 o mas entidades, si puede darse el caso de que un atributo de una relación sea nulo.
3.
Pues eso, las dependencias boyce Codd seria lo necesario para que este en BCNF no 3NF y que no haya dependencias multivaluadas es para que este en 4NF
4.
Las claves secundarias son utilizadas para establecer un nexo entre estructuras, son claves primarias de otras tablas, eso quiere decir que no es un identificador del modelo lógico ni del conceptual, tampoco era una clave candidata cuando se generó una tabla, porque no se usa para identificar una tabla.
5.
Los esquemas lógicos no son independientes del tipo de dbms ya que son una versión mas detallada del modelo conceptual, por lo que el mismo ya contempla el tipo de dbms que se va a utilizar, ya que el tipo de conversiones del modelo conceptual al lógico pueden variar según el tipo de dbms a utilizar, no es dependiente de un dbms especifico, ya que eso se aplica a la hora de hacer el modelo físico de una base de datos, no el modelo lógico.
6.
Al ser relaciones muchos a muchos, no se puede llegar de forma clara de una entidad a otra, es decir, no puede desde A – B saber los A que pertenecen a C. Es un ciclo que no presenta redundancia, por lo que no se quita del modelo lógico.
Referencia: Ejemplo 3-4 del drai
7.
A (1,1) relación (0,n)B es decir que A va a tener una tabla con el id de B. No se convierte en tabla porque en ese tipo de relaciones no es necesario convertirlo en una tabla, se puede simplemente añadir el campo identificador del lado de muchos al lado de uno.
8.
Una clave candidata en el modelo físico va a ser una clave univoca del modelo conceptual y lógico, es decir que fue efectivamente un identificador en el modelo lógico, y fue un identificador en el modelo conceptual, los identificadores pueden ser compuestos, es decir que una clave candidata puede estar formada por dos o mas atributos, y como es una clave univoca, no se repite, entonces identifica un único registro de la tabla. Por lo tanto la respuesta es todas las anteriores.
9.
Los atributos identificadores deben ser si o si monovalentes obligatorios, no pueden ser monovalentes sino que deben serlo, no pueden ser polivalentes porque no se puede identificar algo por n valores distintos. No puede tener cardinalidad 0 porque no se puede identificar algo por nada y no puede tener mas de un valor.
10.
La respuesta es ninguna de las anteriores porque no hay forma de determinar si el modelo físico cumple con las condiciones para estar en alguna de las normalizaciones. Esto se debe a que puede ser no normal y no tenerlas, o estar en primera forma y no tenerlas, y así.
11.
No estoy seguro, pero creo que un atributo derivado puede ser un atributo polivanlente, pero no puede ser nulo, ya que el mismo se utiliza para obtener información particular sin contabilizar la cantidad de relaciones, por lo que el que sea nulo no tiene sentido.
12.
Una clave primaria de una tabla en el modelo físico puede ser un identificador del modelo lógico, así como puede ser un autoincremental que se define sobre el modelo físico, lo que no puede es ser una clave foránea ya que las claves foráneas son atributos que son CP en otras tablas. Una clave foránea sirve para establecer un nexo entre 2 estructuras, es una clave secundaria.
13.
El atributo identificador de una entidad debe ser si o si un atributo que no se repita, debe ser algo univoco. Tampoco puede ser polivalente, porque no se puede identificar algo por n valores distintos.
14.
Puede estar en tercera forma normal y consecuentemente estar en 1FN, porque para estar en 3FN debe estar en 2FN y para estar en 2FN puede estar 1FN, no esta en 4FN porque nosotros aprendimos a modelar de forma que en el modelo físico no nos queden atributos polivalentes, dependencias parciales y dependencias transitivas, ya después es decisión del diseñador seguir normalizando para llegar a BCNF y luego a 4FN.
15.
No atenta contra la minimalidad ni contra la redundancia, por lo que no hay razón para quitarla del momento, tampoco puede quitarse porque perdería coherencia el modelo.
16.
Se convierte en tabla porque presenta una relación muchos a muchos, y en esos casos se transforma en una tabla, la tabla relación tendrá el id de que cada tabla que relaciona y su propio id como clave primaria.
17.
Que un modelo sea legible quiere decir que es fácil de actualizar y mantener, ya que el hecho de que sea legible quiere decir que se entiende, facilitando su mantenimiento y su actualización ante los requerimientos cambiantes. El ser redundante o no tiene que ver con el concepto de minimalidad de una base de datos, y que algo sea legible y fácil de entender no quiere decir que no pueda presentar información repetida, es decir una bd puede ser legible y redundante, quizás por algún atributo derivado, y esas cosas.
Consultas
Estas no muestran cual es la respuesta correcta, así que es mas dificil
La sentencia update corresponda al DML de SQL , no al DDL
La respuesta correcta es B |x| A, el producto natural no puede realizarse si A y B no tienen atributos en común, para que A x B de el mismo resultado hay que seleccionar a la tabla resultante las filas cuyo atributo A sea igual al atributo B.
No es una clausula de definición de datos, es de manipulación de datos, y lo que permite controlar la existencia de elementos dentro de un conjunto es la clausula EXIST.
La sentencia a es correcta, ya que muestra el nombre de los alumnos que se anotaron a materias con nota mayor o igual a 4 , la b esta mal porque no distingue a que atributo nombre se refiere, si al de materias o al de alumnos. La c esta bien porque muestra el nombre de cada alumno cuyas inscripciones tengan nota mayor o igual a cuatro, y la ultima esta bien por la misma razón, la única diferencia es que aclara que esta usando el campo nombre de alumnos.
La respuesta es ninguna porque la consulta esta mal, ya que no hay forma de saber el campo país.nombre porque no hizo producto cartesiano con esa tabla. Para obtener a deberías no filtrar por país.nombre, para obtener b deberías hacer un join con país , la d es lo mismo que la a.
No tengo idea, tiene errores de ortografía, y la b al parecer no es. CREO que la que tiene el error es la a porque no especifica de que tabla es la cantidad de asientos…
Para la clausula UNION no hace falta usar funciones de agregación, tampoco es obligatorio tener un inner join en el FRom y no controla que un conjunto contenga un elemento que no pertenece a otro conjunto porque la clausula Union genera una tabla con todos los elementos de la tabla 1 o la tabla 2.
Una sentencia DDL no debe tener siempre una clausula Select, where form o créate, select, where y from son sentencias de DML no DDL y no siempre puede ser una sentencia Create sino que puede ser drop o alter dependiendo de que se quiera hacer.
La respuesta correcta es ninguna de las anteriores, por que? Porque A – B te deja con las filas de A que no están en B, y B – ese resultado te da B, porque como el resultado no tiene filas compartidas con B no se resta ninguna fila. B U A te da todas las filas de A y B ( no da B ) , A – B U B – A te da todas las filas de A que no están en B y todas las filas de B que no están en A, B x A U A no da B, A intersección B da todas las filas que aparecen tanto en A como en B, A seria si fuese A – ( B – A ), B – A da B sin filas compartidas con A. La expresión da B entero.
Una función de agregación
a. Opera sobre un conjunto de tuplas obteniendo un resultado de acuerdo a la operación indicada
b. Opera sobre una tupla específica.
c. Cuando opera sobre una tupla específica puede ponerse en el where.
d. Puede aparecer en el Group By.
e. Hay más de una verdadera.
f. Son todas falsas.
Operan sobre un conjunto, no pueden aparecer en el where.
La Clausula DELETE
a. Elimina el contenido de una tabla y además borra la estructura de la misma
b. Elimina la estructura de la tabla
c. Elimina el contenido de una tabla
d. Ninguna es correcta
e. A, B y C son correctas.
La clausula delete solo borra el contenido de una tabla, no afecta a la estructura de la misma.
Suponga que tiene las tablas Alumnos = (idalumno, nombre, edad) Materias = (idmateria, nombre, año) Inscribe = (idalumno, idmateria). Indique cual sentencia AR muestra al alumno con las materias en las que se inscribio
Π nombre (alumnos) |x| Πnombre (materias) |x| inscribe
Π nombre (alumnos|x|materias |x| inscribe)
Ninguna la responde
La primera no es correcta porque no tienen atributos en común para realizar el producto natural, la segunda es lo mismo porque sigue siendo producto natural, la tercera tampoco porque esta resolviendo primero A |x| M y ultimo inscribe, y no tenes atributos en común ni siquiera con inscribe porque estas juntando solo los nombres.
La ultima también esta mal porque como dije antes, primero resuelve alumnos x materias y después inscribe, entonces tampoco se puede resolver.
Respuesta correcta: Ninguna la responde.
La siguiente sentencia SQL aplicada sobre una tabla empleados = (ideempleado, nombre, salario): SELECT MAX(salario), SUM(Salario),MIN(Salario), AVG(salario) FROM Empleados
a. Es una sentencia invalida
b. Debe tener un GROUP BY para ser correcta.
c. No puede tener más de una función de agregación
d. Es correcta
No es una sentencia invalidad porque las funciones de agregación pueden usarse varias a la vez y pueden usarse sin la necesidad de un group by
Indicar cual consulta es válida suponiendo que los atributos indicados figuran en la tabla utilizada
Select * From tabla Where saldo > sum(saldo)
Select max (edad) From clientes Where nombre like “Gar%”
Select nombre, edad From tabla1 LEFT JOIN tabla2 Where edad > 20
Select nombre, sum(saldo) From table Group by edad
En la primera usa una function de agregacion en el where, eso ta mal, la segunda es correcta, la tercera es incorrecta porque no distingue a que table hacen referencia los atributos, la cuarta es incorrecta porque tampoco distingue el atributo, creo
Indicar cual consulta es válida:
Select nombre From alumnos Where nombre EXIST (Select nombre From inscripciones)
Select nombre From alumnos Where EXIST IN (Select nombre From inscripciones)
Select nombre From alumnos Where nombre IN (Select * From inscripciones)
Select nombre From alumnos Where codigo IN (Select codigo From inscripciones)
La segunda esta mal sintácticamente, la tercera en la subconsulta argumento esta seleccionando todos los campos, la primera esta mal porque esta usando EXIST en vez de IN.
La operación de Having
a. Reemplaza al where cuando es necesario usar una operación de agregación.
b. Siempre debe utilizar una función de agregación.
c. Puede aparecer sin una cláusula from.
d. Es el filtro de los grupos, está siempre asociada al group by.
e. Es el filtro de los grupos, puede estar asociada al group by.
No reemplaza al where cuando hay que usar una función de agregación, tampoco debe utilizar siempre una función de agregación, no puede aparecer sin una clausula from porque una consulta básica es select from, y esta siempre asociada al group by no puede.
Dadas las siguientes tablas: Empleado (id, nombre, iddepto ), Proyecto (id, nombre, iddepto), Depto (id, nombre), TrabajaEn( idempleado, idproyecto). Indicar cuales consultas SQL son válidas en formato ANSI
SELECT nombre From (empleados e INNER JOIN trabajaEn t ON (t.idempleado = e.idempleado)) INNER JOIN proyecto p ON (t.idproyecto = p.idproyecto) Where e.id = 14;
Select count (*) From empleados Where iddepto in (select id From depto Where nombre like “R%”)
SELECT p.nombre, count(distinct e.id) From empleado e, proyecto p, trabajaen t Where e.id = t.idempleado AND t.idproyecto = p.id
SELECT p.nombre, count(distinct p.id) From depto d, proyecto p Where d.id = p.id GROUP BY (d.nombre)
La primera esta mal porque no especifica que tabla pertenece nombre, la tercera esta mal porque esta usando una función de agregación y mostrando un atributo al mismo tiempo, y eso no es valido sin agrupar en subconjuntos, la cuarta esta mal porque esta uniendo el id del proyecto con el id del departamento, esta haciendo cosas raras.
Suponga que hay una tabla alumnos con CP idalumno y una tabla inscripciones que registra cuando un alumno se anota a una materia. Si se realiza un inner join entre ambas tablas, para que la consulta sea más eficiente:
a. Se realiza alumnos inner join inscripciones.
b. Se realiza inscripciones inner join alumnos.
c. Las respuestas a y b son ambas validas.
d. No dispongo de información suficiente para responder la pregunta.
Una consulta seria mas eficiente si se realiza de la forma b porque la primera tiene que filtrar tambien en caso de que un alumno no se haya inscrito a nada, entonces usando la segunda forma los alumnos que no se hayan anotado a las materias no los tomara en cuenta ni a la hora de filtrar porque no existiría en la tabla relación.
La respuesta correcta es algunas de las anteriores, ya que la clausula exist permite controlar la existencia de elementos dentro de un conjunto y es una clausula de manipulación de datos, la clausula que permite controlar la existencia de un elemento particular es IN.
La respuesta es…………..todas las anteriores, es una operación binaria porque opera sobre 2 tablas, por definición el i-esimo atributo de A debe tener el mismo dominio que el i-esimo atributo de B, porque sino no serian relaciones con sentido, y tienen que tener la misma cantidad de atributos ya que deben ser relaciones con sentido.
Se puede usar una función de agregación sin problema, la clausula exist no afecta a su uso, el inner join o left join no hace diferencia tampoco, y para controlar la existencia de un elemento en un conjunto se usa IN.
La respuesta es algunas de las anteriores lo responden, la primera lo responde porque obtengo los alumnos que se inscribieron a materias con nota mayor o igual a 4. La segunda es errónea porque no distingue a que atributo nombre se esta refiriendo, no se sabe si es el nombre de la materia o el nombre del alumno. La c es correcta porque tambien muestra el nombre de todos los alumnos cuyas inscripciones tenga nota mayor o igual a 4.
Igual que la de intersección, es una operación binaria porque opera entre 2 tablas, ademas, deben ser tablas con sentido, lo que implica que tengan la misma cantidad de atributos y por definición de que sean con sentido el i-esimo atributo de A debe tener el mismo dominio que el i-esimo atributo de B.
La primera esta bien, el resto devuelven el nombre de la empresa y la cantidad de aviones, no solo la cantidad, y la ultima devuelve el id de la empresa y la cantidad de aviones.
Seguridad e integridad de datos
Todas las opciones son actores a la hora de crear una bd, por ende usan la bd de una u otra forma durante su desarrollo. Por ejemplo el DBA autoriza accesos, el usuario final la utilizara cuando ya este lista, el diseñador de esquema conceptual es quien modela la BD y el diseñador tambien se encarga del diseño de la misma.
El primer caso es correcto porque si la HDE es mayor a la hora de escritura y la hora de lectura de Q entonces la operación da éxito, la b esta mal porque la hora de lectura es mayor a la HDE y c esta mal porque la hora de escritura es mayor a la HDE
Un checkpoint en ambientes concurrentes se puede generar utilizando cualquier protocolo de manejo de concurrencia, no se aplica en el protocolo de doble paginación, sino que se aplica en el protocolo de registro histórico para el manejo de fallos, no se coloca siempre entre 2 transacciones cuando ninguna esta activa, ya que puede darse el caso donde nunca haya un momento de inactividad, se le incorpora una lista de transacciones activas al momento del checkpoint.
Respuesta correcta: Ninguna de las anteriores.
No se aplica en ambientes monousuario porque la propiedad dice que debe ignorar las otras transacciones de un ambiente concurrente, por lo que siempre se aplica en un ambiente concuerrente y nunca en un ambiente monousuario, ya que no hay concurrencia.
Ninguna de las anteriores, la propiedad de aislamiento asegura que cada transacción actúa de manera única ignorando las otras transacciones que ocurren de forma concurrente en el sistema.
Una transacción que utiliza el protocolo de hora de entrada puede tener commits y aborts en la bitácora así como checkpoints porque esos son del protocolo de manejo de fallos de registro histórico, lo que no puede es utilizar el protocolo de dos fases porque ese es un protocolo para el manejo de bloqueos que no se utiliza con el protocolo de hora de entrada, la respuesta es algunas de las anteriores.
La a es correcta porque la HDE es mayor a la HW que es lo que se toma en cuenta en una operación de lectura. La c es correcta por la misma razón. La b no es correcta porque la hora de lectura es mayor a la hora de entrada de la transacción, esto quiere decir que otra operación leyó el dato antes y actualizo la hora de lectura ( max entre HDE y HW ), así que como la HDE es mayor a la HDE que tengo yo no se puede realizar la operación con éxito.
Cuando se produce una situación de deadlock si o si hay inanición, ya que ambas transacciones se quedan esperando un dato de otra , el abortar una ejecución dependerá de que transacción sea elegida como victima, por lo que no se puede determinar si se debe abortar esa transacción o no se debe, seria mas un puede abortarse.
Respuesta alternativa: Una situación de deadlock se da entre 2 transacciones, no una.
No genera una bitácora con mas información que el de modificación inmediata, guarda las operaciones write, el start y el commit, no requiere tampoco de mas procedimientos para la recuperación, y tampoco hay forma de determinar que es la mejor variante del protocolo basado en registro histórico, cada una tiene sus propias ventajas y desventajas.
El protocolo de dos fases es un protocolo de manejo de concurrencia distinto al protocolo de bloqueos, por lo que no ocupa bloqueos exclusivos o compartidos, y tampoco tiene situaciones de deadlock o inanición.
Ninguna de las anteriores, no puede haber inanición en un ambiente monousuario ya que no presentan concurrencia entre transacciones.
La propiedad de consistencia no garantiza que una transacción no puede fallar, indica que una transacción aislada ( puede estar cometida o abortada ) mantenga la consistencia de la base de datos, se aplica en ambientes concurrentes y monosuario, no solo en uno de ellos, y tampoco garantiza el cometido de una transacción, solo que luego de ejecutarla mantenga la consistencia de la bd.
Respuesta correcta: Ninguna de las anteriores.
Una transacción que alcanzo el estado de cometida cumple con todas las propiedades de una transaccion
El protocolo de hora de entrada no se aplica en casos de deadlock ni de inanición ya que eso aparece en el manejo de bloqueos, la hora de entrada es para el manejo de concurrencia así que tampoco tiene bloques compartidos y exclusivos.
Respuesta correcta: Ninguna de las anteriores.
La propiedad de idempotencia se realiza cuando se utiliza el método de registro histórico para el manejo de fallos, no asegura el aislamiento, ni la consistencia ni la durabilidad de las transacciones, ademas se aplica tanto en entornos concurrentes como monousuarios, tampoco evita los fallos.
El protocolo de doble paginación puede usar el protocolo tanto de hora de entrada como el protocolo de dos fases, ademas garantiza el aislamiento de una transacción, puede usar los otros protocolos porque esos son de manejo de bloqueos, no de manejo de fallos, y garantiza el aislamiento porque tiene un respaldo de los datos antes de que haya uno.
Want to print your doc? This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (