Primeros pasos para proponer el desarrollo del sistema
Sistemas gestores bd
1. SISTEMAS GESTORES DE BASES DE
DATOS
REALIZAR UNA BASE DE DATOS EN ACCESS
Una base de datos es una herramienta para recopilar y organizar información
CONECTARLA CON EL SERVIDOR DE BASES
DE DATOS MYSQL.
MySQL es un sistema de administración de bases de datos (Database
Management System, DBMS) para bases de datos relacionales. Así, MySQL
no es más que una aplicación que permite gestionar archivos llamados de
bases de datos.
REALIZACION DE CONSULTAS
Algunos de los ejemplos emplean la tabla shop para contener el precio de
cada artículo (número de item) para ciertos distribuidores (dealers).
Suponiendo que cada distribuidor tiene un único precio fijo por cada
artículo, entonces (article, dealer) es una clave primaria para los registros.
Inicie la utilidad de línea de comandos mysql y seleccione una base de
datos:
shell> mysql base-de-datos
(En la mayoría de las instalaciones de MySQL, podrá emplear la base de
datos test).
2. Puede crear e ingresar datos a la tabla del ejemplo utilizando estas
sentencias:
mysql> CREATE TABLE shop (
-> article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
-> dealer CHAR(20) DEFAULT '' NOT NULL,
-> price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
-> PRIMARY KEY(article, dealer));
mysql> INSERT INTO shop VALUES
-> (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
-> (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
Luego de ejecutar estas sentencias, la tabla debería tener el siguiente
contenido:
mysql> SELECT * FROM shop;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
3. El valor máximo de una columna
SELECT MAX(article) AS article FROM shop;
+---------+
| article |
+---------+
| 4 |
+---------+
El registro que tiene el valor máximo de determinada
columna
En MySQL 5.0 (y en SQL estándar), esto se hace fácilmente con una
subconsulta:
SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop);
Otra solución es ordenar las columnas por precio, en forma descendente, y
obtener solamente el primer registro utilizando la cláusula LIMIT, específica
de MySQL:
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1;
Nota: Si hubiera varios artículos que presenten el precio más alto, cada uno
a 19.95, la solución LIMIT sólo mostraría el primero de ellos.
4. Máximo de columna por grupo
SELECT article, MAX(price) AS price
FROM shop
GROUP BY article
+---------+-------+
| article | price |
+---------+-------+
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
+---------+-------+
Los registros de un grupo que tienen el máximo valor
en alguna columna
En MySQL 5.0 (y en SQL estándar), este problema puede resolverse con una
subconsulta como esta:
SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);
5. Usar claves foráneas (foreign keys)
En MySQL, las tablas InnoDB soportan restricciones de claves foráneas.
Consulte Capítulo 15, El motor de almacenamiento InnoDB. Consulte
también Sección 1.7.5.5, “Claves foráneas (foreign keys)”.
No se requiere una restricción de clave foránea para simplemente unir dos
tablas. Para otros tipos de tabla que no sean InnoDB, es posible, al momento
de definir una columna, utilizar una
cláusula REFERENCEStbl_name(col_name), la cual no tiene efecto real
y funciona solamente como un recordatorio o comentario de que la columna
que se está definiendo está dirigida a hacer referencia a una columna en otra
tabla. Al emplear esta sintaxis es muy importante comprender que:
MySQL no efectúa ningún tipo de CHECK o comprobación para asegurarse
de que col_name realmente existe entbl_name (o incluso que tbl_name existe).
MySQL no realiza ningún tipo de acción sobre tbl_name tal como borrar filas
en respuesta a acciones ejecutadas sobre filas en la tabla que se está
definiendo; en otras palabras, esta sintaxis no produce por sí misma un
comportamiento ON DELETE u ON UPDATE. (Inclusive cuando se puede
escribir una cláusula ON DELETE u ON UPDATE como parte de la
cláusula REFERENCES, estas son también ignoradas).
Esta sintaxis crea una columna; no crea ninguna clase de índice o campo
clave.
Esta sintaxis causará un error si se la emplea durante la definición de una
tabla InnoDB.
Una columna creada de esta forma se puede utilizar como columna de unión,
como se muestra aquí:
CREATE TABLE person (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
);
6. CREATE TABLE shirt (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),
PRIMARY KEY (id)
);
INSERT INTO person VALUES (NULL, 'Antonio Paz');
SELECT @last := LAST_INSERT_ID();
INSERT INTO shirt VALUES
(NULL, 'polo', 'blue', @last),
(NULL, 'dress', 'white', @last),
(NULL, 't-shirt', 'blue', @last);
INSERT INTO person VALUES (NULL, 'Lilliana Angelovska');
SELECT @last := LAST_INSERT_ID();
INSERT INTO shirt VALUES
(NULL, 'dress', 'orange', @last),
(NULL, 'polo', 'red', @last),
(NULL, 'dress', 'blue', @last),
7. (NULL, 't-shirt', 'white', @last);
SELECT * FROM person;
+----+---------------------+
| id | name |
+----+---------------------+
| 1 | Antonio Paz |
| 2 | Lilliana Angelovska |
+----+---------------------+
SELECT * FROM shirt;
+----+---------+--------+-------+
| id | style | color | owner |
+----+---------+--------+-------+
| 1 | polo | blue | 1 |
| 2 | dress | white | 1 |
| 3 | t-shirt | blue | 1 |
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
| 7 | t-shirt | white | 2 |
+----+---------+--------+-------+
SELECT s.* FROM person p, shirt s
8. WHERE p.name LIKE 'Lilliana%'
AND s.owner = p.id
AND s.color <> 'white';
+----+-------+--------+-------+
| id | style | color | owner |
+----+-------+--------+-------+
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
+----+-------+--------+-------+
Cuando se usa de esta manera, la cláusula REFERENCES no es mostrada en
la salida de SHOW CREATE TABLE oDESCRIBE:
SHOW CREATE TABLE shirtG
*************************** 1. row ***************************
Table: shirt
Create Table: CREATE TABLE `shirt` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`style` enum('t-shirt','polo','dress') NOT NULL,
`color` enum('red','blue','orange','white','black') NOT NULL,
`owner` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9. GENERAR UNA PAGINA EN PHP CON ESTILOS
Podemos utilizar una hoja de estilos únicamente para estos datos que
queramos cambiar. El truco está en crear el archivo en PHP y definimos el
header, por ejemplo:
estilo.php:
Código :
<?php
$colors = 3;
$random = rand(1,$color_txt);
$color_txt = array();
$color_txt[1] = "blue";
$color_txt[2] = "red";
$color_txt[3] = "black";
header('Content-Type: text/css');
echo 'body{margin:0;background:'.$color_txt[array_rand ( $color_txt)].';}';
?>
En el html solo linkamos en el header:
Código :
<? echo '<link href="estilo.php" rel="stylesheet" type="text/css">'; ?>
También podríamos enviar variables por POST en el link del html y