Capítulo 4: Diseño de bases de datos
Enlaces, enlaces
- La página web de DBDesigner, germen de MySQL Workbench.
- La página web de MySQL Workbench.
- Parallels Desktop, el software de máquinas virtuales más utilizado en OS X.
- VMware Fusion 2.0 también tiene su hueco.
- Otras herramientas para el diseño de bases de datos:
- Navicat, de PremiumSoft.
- PowerDesigner, de Sybase.
- Rational Rose, de IBM.
El valor NULL
Volver a utilizar la base de datos videoteca
creada en el segundo capítulo. Insertar una nueva película:
USE videoteca;
INSERT INTO pelicula
(
titulo,
director
)
VALUES
(
'Naves misteriosas',
'Douglas Trumbull'
);
Realizar la siguiente consulta:
USE videoteca;
SELECT
titulo,
CONCAT(director, ', ', interprete)
FROM
pelicula;
Evita utilizar NULL
. Crea de nuevo la tabla de películas:
USE videoteca;
DROP TABLE IF EXISTS pelicula;
CREATE TABLE pelicula
(
titulo VARCHAR(64) NOT NULL,
director VARCHAR(128) NOT NULL,
interprete VARCHAR(128) NOT NULL
);
Si lo deseas puedes indicar valores predeterminados:
USE videoteca;
DROP TABLE IF EXISTS pelicula;
CREATE TABLE pelicula
(
titulo VARCHAR(64) NOT NULL,
director VARCHAR(128) NOT NULL DEFAULT '',
interprete VARCHAR(128) NOT NULL DEFAULT ''
);
También puedes modificar la tabla, sin necesidad de borrarla y luego volver a crearla:
USE videoteca;
DELETE FROM
pelicula
WHERE
titulo = 'Naves misteriosas';
ALTER TABLE pelicula
MODIFY titulo VARCHAR(64) NOT NULL,
MODIFY director VARCHAR(128) NOT NULL DEFAULT '',
MODIFY interprete VARCHAR(128) NOT NULL DEFAULT '';
Claves primarias
Inserción de una nueva película:
USE videoteca;
INSERT INTO
pelicula
VALUES
(
'Alien',
'James Cameron',
'Sigourney Weaver'
);
Lista de películas, ordenadas por título:
USE videoteca;
SELECT
*
FROM
pelicula
ORDER BY
titulo;
Creación de una clave primaria:
USE videoteca;
CREATE TABLE pelicula
(
titulo VARCHAR(64) NOT NULL,
director VARCHAR(128) NOT NULL DEFAULT '',
interprete VARCHAR(128)NOT NULL DEFAULT '',
PRIMARY KEY(titulo)
);
O modificación de la tabla existente:
USE videoteca;
ALTER TABLE
pelicula
ADD PRIMARY KEY(titulo);
Antes, modifica el título de la nueva película:
USE videoteca;
UPDATE
pelicula
SET
titulo = 'Aliens'
WHERE
director = 'James Cameron';
Columnas de incremento automático
Creación de una tabla con una columna de incremento automático:
USE videoteca;
CREATE TABLE pelicula
(
id INT NOT NULL AUTO_INCREMENT,
titulo VARCHAR(64) NOT NULL,
director VARCHAR(128) NOT NULL DEFAULT '',
interprete VARCHAR(128) NOT NULL DEFAULT '',
PRIMARY KEY(id)
);
O modificación de la tabla existente:
USE videoteca;
ALTER TABLE pelicula
DROP PRIMARY KEY,
ADD id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY(id);
El modelo relacional
Creación de la tabla de préstamos:
USE videoteca;
DROP TABLE IF EXISTS prestamo;
CREATE TABLE prestamo
(
id INT NOT NULL AUTO_INCREMENT,
idpelicula INT NOT NULL,
persona VARCHAR(128) NOT NULL,
fecha DATE NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(idpelicula)
REFERENCES pelicula(id)
);
Realizar un préstamo:
USE videoteca;
INSERT INTO prestamo
(
idpelicula,
persona,
fecha
)
VALUES(
4,
'Kake',
CURRENT_DATE()
);
Préstamo imposible:
USE videoteca;
INSERT INTO prestamo
(
idpelicula,
persona,
fecha
)
VALUES
(
123,
'Germán',
CURRENT_DATE()
);
Cambiar el tipo de la tabla de películas:
USE videoteca;
ALTER TABLE pelicula ENGINE = InnoDB;
Volver a crear la tabla de préstamos:
USE videoteca;
DROP TABLE IF EXISTS prestamo;
CREATE TABLE prestamo
(
id INT NOT NULL AUTO_INCREMENT,
idpelicula INT NOT NULL,
persona VARCHAR(128) NOT NULL,
fecha DATE NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(idpelicula)
REFERENCES pelicula(id)
)
ENGINE = InnoDB;