SQL: Formas Normales

Recuperados ya del fin de semana de rock and roll vamos a volver al código con algo de SQL teórico: la normalización de datos. El diseño lógico de las tablas y sus relaciones es fundamental para la optimización de una base de datos. Existen cinco reglas de normalización que debemos cumplir para aseverar que nuestra base de datos SQL está normalizada, aunque es cierto que hay quien considera que la cuarta y la quinta son rizar el rizo y que con cumplir la tres primeras generalmente ya tenemos una base de datos normalizada. Estas son las cinco formas normales:

  1. Primera Forma Normal: La primera forma requiere la eliminación de todas las columnas duplicadas de una tabla, la separación en otras tablas de esos datos que se duplicarían y la identificación de cada tabla con una atributo de clave primaria. Por ejemplo, si tenemos una tabla donde registramos ventas no guardamos el nombre y el precio del producto vendido en ella varias veces, sino que tendremos una tabla de productos con esos datos separado de la tabla de ventas, y ambas tendrían claves primarias que identifican a cada fila.
  2. Segunda forma Normal: Implica que se cumpla lo dicho en la primera forma normal y que, además, se creen relaciones entre tablas a través de claves externas. Es decir, la tabla Ventas del ejemplo anterior incluye como Clave Externa un valor único que lo relaciona con la tabla Productos, generalmente su clave primaria.
  3. Tercera Forma Normal: Esta norma implica que se cumplan las dos anteriores y que, además, todas las columnas de un registro deben hacer referencia únicamente a la clave primaria, y además elimina todos los atributos derivados. Volvemos al ejemplo: la tabla Productos nos dará el nombre del producto, su precio, en qué almacén se guarda y su fecha de caducidad. No tendremos, por ejemplo, un registro para decir en qué piso del almacén se guarda, ya que ese dato sería de la tabla Almacén. Tampoco tendríamos una columna con los días que faltan hasta que caduque, ya que ese sería un atributo derivado que podemos calcular con la fecha de caducidad.
  4. Cuarta Forma Normal: Agrega un requisito adicional, que es la eliminación de cualquier dependencia multivaluada en las relaciones. Una tabla con una dependencia multivaluada es una donde la existencia de dos o más relaciones independientes muchos a muchos causa redundancia.
  5. Quinta Forma Normal: Rizando el rizo, vendría a decir que sólo se podrían realizar relaciones entre tablas utilizando claves candidatas, con la idea de reducir la redundancia de datos entre múltiples tablas.

A la hora de normalizar bases de datos hay una frase en inglés que lo resume todo: “The key, the whole key, and nothing but the key.” En la propia web de Microsoft la primera recomendación que dan para mejorar el rendimiento de SQL-Server y tener un diseño eficiente de la base de datos es usar un índice autonumérico como clave primaria de cada tabla, identificando así de forma unívoca cada registro y facilitando la relación entre ellos.

Anuncios

Sonic Blast Moledo 2017: La Crónica

Otro año más, como ya sabíais por la previa de la semana pasada, me he desplazado a Moledo do Minho con otro buen montón de amantes de los riffs pesados para calzarnos una buena ración de rock pesado, bifanas y Super Bock.

Moledo do Minho

El primer día entre salir del curro, hacer kilómetros, instalarnos en la casa, hacer la cola para las pulseras… nos llevó a perdernos a los grupos de la piscina y a entrar casi al final del concierto de los israelitas The Great Machine, de los que puede ver dos temillas muy doom metaleros y su despedida con una canción de pura energía Motorheadiana. Lo poco que vi, me gustó. Cambio de equipo y saltan a escena los stoner doom estadounidenses The Well, un power-trio llegado de Austin y liderado por la bajista Lisa Alley y el guitarrista Ian Graham, ambos encargados de las labores vocales. Firmaron un concierto sobresaliente y muy blacksabbathiano.

The Well

El space-rock psicodélico, progresivo e instrumental de los suecos Yuri Gagarin nos convertía en cosmonautas y nos transportaba con su sonido a un viaje por el cosmos cuando la noche comenzaba a caer sobre Moledo.

Al final de su concierto hicimos la tradicional parada técnica para juntar al “comando bifana” e ir a degustar esta delicia del fast-food portugués. Voy a puntualizar que tradicionalmente siempre las compramos en el mismo puesto, donde siempre están excelente, y este año decidimos cambiar y probar las de otro… CRASO ERROR!!!! No sólo no estaban tan buenas sino que, además, nos tangaron con una ración de rissões en la que el plural estaba en la carta pero no en el plato: sólo había uno. Al final, con la orejas gachas, volvimos al puesto de todos los años para poder tomar nuestra true-real-bifana, deliciosa como siempre. Por cierto, este año la organización ha tomado nota de la quejas de los asistentes del año pasado: añadieron más baños y más grifos para servir bebida en el recinto, evitando las colas del año pasado.

Tras la cenita era el turno de la piscodelia setentera con toques de folk oriental de los japoneses Kikagaku Moyo, dignos sucesores de grandes bandas niponas como Flower Travelin’ Band, que nos llevaron en un agradable paseo musical hasta los años 60, sitar incluído y con mucha broma entre los colegas porque un tema sonaba extrañamente similar a Mediterráneo, de Joan Manuel Serrat. Con el cuerpo relajado tras los suecos y los japoneses llegaron otros suecos: Monolord. Este trío de Göteborg es pura economía musical, hacen más con menos: con temas simples y directos de enérgico stoner-doom de regusto sludge construídos sobre repetitivos riffs de tres acordes, lograron completar un concierto apabullante, desencajando los cuellos del respetable público y ganándose merecidas ovaciones y, para muchos, el honorífico título de campeones de esa noche.

Elder

Del primer día los estadounidenses Elder eran la banda que más interés despertaba en mi, y aunque son un grupo técnicamente impecable y completaron un buen concierto no acabé de de conectar tanto con ellos. Puede que fuera por la mayestática exhibición de los Monolord o puede que sean un poco fríos en directo, pero aunque interpretaron sus complejos y progresivos temas llenos de cambios de ritmo, tensiones armónicas y hasta arreglos barrocos con sublime perfección no acabé de conectar de todo. En cualquier caso tampoco se les puede achacar nada, pues su concierto fue más que correcto. Cerraron la primera noche los escoceses The Cosmic Dead, que escuché ya desde la lejanía antes de irme a dormir. No entendí muy bien por qué no paraban de citar a Black Bombain cada dos por tres, no se si era alguna broma entre las bandas, entre ellos, algún pique… En cualquier caso no fueron los de Glasgow una banda que me interesara en exceso, así que opté por guardar fuerzas para el día siguiente.

Sin madrugar en exceso pero tampoco sin levantarme muy tarde aprovechamos la mañana en dar un paseo cerca de la playa y desayunar en los bares que hay junto a ella. Si sois cafeteros en Portugal disfrutaréis, la mayoría de bares hacen buen café. Tras el desayuno tocó movilizarse en la cocina y preparar la tradicional churrascada doom-metal, que nos entró fetén pero que lleva su tiempo, así que me perdí a Ana Paris y a Vinnum Sabbathi aunque tenía mucho interés en ese grupo. Llegamos a la piscina con los portugueses Löbo tocando su sludge oscuro y atmosférico. Este recito, con la piscina, es muy molón y una de las señas de identidad del festi pero empieza a quedarse pequeño. Tras los portugueses llegaba el turno de los franco-estadounidenses Blaak Heat y su deliciosa locura: combinan surf, psicodelia, progresivo, escalas árabes de influencia mediterránea y hasta elementos de música balcánica y de oriente medio, una extraña fusión sobre la que construyen temas plagados de cambios de ritmo y preciosos arreglos, un bendito manguerazo de colorido musical y originalidad, incluyendo una original jam instrumental a base de percusión y laud.

Blaak Heat

Marchamos a turistear un rato en lo que pareció ser un error, ya que parece que Toxic Shock dieron un show para no olvidar, con salto a la piscina desde la torre incluído. Llegamos ya para el inicio de Sasquatch en el escenario principal, que con su stoner hard rockero de base bluesera y alma de ZZ Top dieron un bolazo que se ganó en el favor del público desde el primer acorde, una banda que sabe estar sobre las tablas y animar a las masas.

Sasquatch

The Machine, en cambio, me dejaron bastante frío. Su sonido a lo Queens of the Stone Age no acabó de conectar conmigo y me fui viniendo abajo. Tras ellos Acid King llegaban al escenario planteando un concierto con mucha jam, muchos largos pasajes instrumentales que dejaron a su frontwoman Lori S. más centrada en las labores guitarreras que en las vocales. Su estilo extremadamente denso y pesado me gusta, pero tras haberme quedado casi de bajón con The Machine no acabaron de entrarme bien. No fue un mal concierto el de Acid King, estuvieron muy bien en su línea, pero para mi estado anímico no llegaban en el mejor momento. Tras su concierto repetimos bifanas y nos sentamos un rato para afrontar el sprint final.

Acid King

Colour Haze llegaban con su alma de jam band y su psicodelia colorida y heredera del espíritu del kraut-rock de los ’60-’70. Comenzando con unos dejes muy Woodstockianos y con unos arreglos casi guiñando un ojo al primer Santana, dejando claro que apostarían por el sonido más retro de sus últimos trabajos que por la rama stoner de sus inicios. Su actuación fue descomunal y sobresaliente, con un desempeño excelente por parte de Stefan Koglek.

IMG_20170813_000314

Nunca había visto antes a Orange Goblin, pero había leído de todo sobre ellos: desde conciertos apabullantes hasta enormes decepciones. ¿Qué cara mostrarían en Moledo los ingleses? En el primer tema quedaba claro: venían a tomar la plaza por asalto, a arrasar el lugar con su napalm alcohólico-rocanrolero, con rendición a Lemmy incluída al presentar The Devil’s Whip. Y no es para nada superficial ese tributo, ya que Orange Goblin y Motorhead tienen mucho en común: ambas son bandas que beben de muchos estilos sin casarse con ninguno, Motorhead lo hacían del punk, el rock and roll y el proto-heavy setentero y Orange Goblin lo hacen del stoner, el doom, el punk y la NWOBHM. Los ingleses movieron a su gusto a todo el público, incitaron a saltar, a cantar, a hacer pogo y baile pollo y desencajaron cuellos a golpe de headbang. Eran los cabezas de cartel y salieron a demostrar que se merecían ese rango. Apabullantes.

Orange Goblin

Con el cuerpo destrozado intenté hacer el último esfuerzo, gasté mis últimos tokens en una sidra y me preparé a ver a Dead Witches, la superbanda stoner-doom clasicota formada por el ex-batería de Electric Wizard, Mark Greening, y la vocalista italiana Virginia Monti, de Psychedelic Witchcraft. Pero había gastado el último cartucho con los británicos y tuve que recogerme a descansar al segundo tema, mi espalda pedía tregua y a tumbarme me fui aunque la banda estaba firmando un buen concierto. El final de su actuación lo escuché ya desde lejos, descansando.

¿Veredicto? Inmejorable: un cartel variado pero dentro unos parámetros claros, con bandas que no están “quemadas” por la rotación constante entre los mismos festis de siempre, con muy buen ambiente y bien planificado. Tal vez podría haberse mejorado el tema de las colas a la hora de coger las entradas, pero por el resto todo impecable. Para mi el hecho de que cuando Kadavar cancelaron la gira la organización se ofreciera a reembolsar la entrada a quien lo solicitara me pareció un detalle que demuestra el buen hacer de esta gente, más centrada en fidelizar al público con un trabajo bien hecho que en sangrarle la pasta a los asistentes.

Eliminar un elemento de un array dando su valor en Javascript

Vamos con una función de Javascript, en la cual le pasaremos un array y una cadena con el valor que queremos eliminar. De esta forma podremos eliminar dicho valor sin saber el índice en el que está almacenado en el array.

//le pasamos a la función el array
//y el valor
function borraItemValor(array, valor){
    for(var i in array){
        if(array[i]==valor){
            array.splice(i,1);
            break;
        }
    }
}

Puedes probarla con algo como esto:

var unarray = ["uno", "dos", "tres", "cuatro"];
borraItemValor(unarray, "dos");

El Bandcamp de la Quincena: Vinnum Sabbathi – Gravity Works (06/08/2017)

A centroamérica nos vamos esta semana en el Bandcamp de la Quincena, a ciudad de México para escuchar el primer largo de Vinnum Sabbathi, disco que nos llegó a principios de este 2017 tras varios splits.

El nombre del grupo hace referencia a HP Lovecraft o a Electric Wizard, según quiera interpretarse, y su música tiene un poco de ambos: de terror cósmico lovecraftiano y de los riffs sucios y densos de Electric Wizard. Pero que esta afirmación no te lleve a pensar que son otra copia de los ingleses u otro grupo que gira letrísticamente alrededor de los textos del genio de Providence. Ellos definen su música como “Instrumental Sci-Fi heavy music from Mexico City” y nos ofrecen un doom metal instrumental que pica del space rock y del drone para construir su personalidad. Gravity Works es una oda a la exploración espacial, a los tiempos en los que la URSS y los EEUU competían por enviar naves tripuladas al espacio, y parece buscar dar al oyente una experiencia musical de ingravidez mientras escucha el disco, la sensación de flotar en una nave espacial o de dormitar como una boya en el mar.

Vinnum Sabbathi - Gravity Works

El viaje espacial que estos cosmonautas mexicanos nos proponen en Gravity Works es dirigido por la batería de Gerardo, un percusionista de la escuela del nunca bien ponderado Bill Ward, arropada esta por un bajo muy presente y extremadamente denso en manos de Sam. Esta base rítmica crea el ambiente perfecto para que Juan desarrolle sus riffs pesados como el plomo, con Matt Pike en la mente y Iommi en el corazón, y para la inclusión de diversos samplers, como voces extraídas de discursos radiofónicos o efectos de sonido marcianos que agregan a la música un aire perturbador. En los directos tienen a un músico encargado de dichos samplers y efectos: Roman.

¿Referencias musicales? Si te gustan Sleep, Goatsnake o Earth, incluso Sunn O)))), creo que estos chavales juegan en tu división. Si otra bandas que ya comentamos en esta sección como Black Smoke Dragon, Astrodome o El Jefazo te hicieron tilín estos Vinnum Sabbathi son una banda que no deberías dejar pasar.

Redirección de datos en Bash

La redirección de datos es un elemento básico de Bash ya que nos permite controlar hacia dónde se volcarán los datos de salida de un comando o script, o de dónde obtenemos los datos de entrada.

Tenemos tres descriptores:

  • stdin: Entrada estándar.
  • stdout: Salida estándar. También se abrevia con el número 1.
  • stderr: Error estándar. También se abrevia con el número 2.

Esto nos dará varias opciones. La primera, redirigir la salida estándar a un fichero, para lo que usamos el operador >:

ls -l > fichero.txt

En el ejemplo de arriba ejecutamos el comando ls -l pero le decimos que nos guarde el resultado en un fichero. Ahora vamos a redirigir el error estándar a un fichero, usando el operador 2>:

grep pri * 2> error.txt

En este caso ejecutamos el comando grep pri * y lo que sacamos al fichero son los errores. Luego podemos combinar la salida y sacar la salida el estándar por el error estándar o viceversa:

#Sacamos el error estándar por la salida estándar
grep pri * 2>&1
#Sacamos la salida estándar por el error estándar
grep pri * 1>&2

Finalmente vamos a ver cómo sacar la salida y el error estándar juntos a un fichero:

grep pri * &> todo.txt

Esto es muy útil si queremos ejecutar un comando o un script en silencio, por ejemplo uno que se ejecute en una tarea programada con cron, ya que no veremos nada en pantalla pero tendremos nuestro propio log con los datos de lo ejecutado.

¿Cómo hacer que sudo te insulte cuando te equivocas con el password?

Vamos con una entrada de sistemas completamente inútil. Sí, porque como humanos nos divierten las cosas inútiles pero chocantes. También puede valer como troleo de oficina, si gustáis: Hacer que sudo insulte al usuario cuando se equivoque introduciendo su password. Esto en principio funciona en los sistemas basados en Ubuntu, posteriores a Ubuntu 12.04 y que tengan sudo 1.8.3 instalado.

La cuestión es que tenéis que editar el fichero /etc/sudoers y buscar la línea que pone:

Defaults                env_reset

Y cambiáis esa línea por:

Defaults env_reset,insults

Tras eso, si queréis comprobar su funcionamiento, invocáis una instrucción con sudo y ponéis mal la contraseña. Recibiréis respuestas tan ingeniosas como: It can only be attributed to human error, Ying Tong Iddle I Po, Take a stress pill and think things over, He has fallen in the water, Have a gorilla…,The more you drive — the dumber you get, … and it used to be so popular… o BOB says: You seem to have forgotten your passwd, enter another!

Como ya dije, inútil pero divertido.