1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
| #Config
SET FOREIGN_KEY_CHECKS=0;
#DROPS
DROP TABLE IF EXISTS capteurs;
DROP TABLE IF EXISTS mesures;
DROP TABLE IF EXISTS pieces;
#CREATES
CREATE TABLE IF NOT EXISTS capteurs (
kcapteur int(11) NOT NULL,
fkpiece int(11) NOT NULL,
nom varchar(50) NOT NULL,
unite enum('degC','p100','m/s','lux', 'db') DEFAULT NULL,
commentaire varchar(255) DEFAULT NULL,
dateMAJcapteur timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS mesures (
kmesure int(11) NOT NULL,
fkcapteur int(11) NOT NULL,
valeur int(11) NOT NULL,
dateMesure datetime NOT NULL,
dateMAJmesure timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS pieces (
kpiece int(11) NOT NULL,
nomPiece varchar(55) NOT NULL,
dateMAJpiece timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#INDEX & PK
ALTER TABLE capteurs
ADD PRIMARY KEY (kcapteur), ADD KEY fkpiece (fkpiece), ADD KEY dateMAJcapteur (dateMAJcapteur);
ALTER TABLE mesures
ADD PRIMARY KEY (kmesure), ADD KEY dateMesure (dateMesure), ADD KEY fkcapteur (fkcapteur), ADD KEY dateMAJmesure (dateMAJmesure);
ALTER TABLE pieces
ADD PRIMARY KEY (kpiece), ADD KEY dateMAJpiece (dateMAJpiece);
ALTER TABLE capteurs
MODIFY kcapteur int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE mesures
MODIFY kmesure int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE pieces
MODIFY kpiece int(11) NOT NULL AUTO_INCREMENT;
#INTEGRITE
ALTER TABLE capteurs
ADD CONSTRAINT capteurs_ibfk_1 FOREIGN KEY (fkpiece) REFERENCES pieces (kpiece);
ALTER TABLE mesures
ADD CONSTRAINT mesures_ibfk_1 FOREIGN KEY (fkcapteur) REFERENCES capteurs (kcapteur);
SET FOREIGN_KEY_CHECKS=1;
INSERT INTO `pieces` (`kpiece`,`nomPiece`,`dateMAJpiece`) VALUES
(NULL,'bureau',NULL),
(NULL,'garage',NULL),
(NULL,'salle de bain',NULL),
(NULL,'cave',NULL),
(NULL,'cuisine',NULL),
(NULL,'chambre',NULL);
DROP PROCEDURE IF EXISTS capteur;
DROP PROCEDURE IF EXISTS mesure;
Delimiter /
CREATE PROCEDURE capteur()
BEGIN
DECLARE i int DEFAULT 1;
WHILE i <= 6 DO
INSERT INTO capteurs (kcapteur, fkpiece, nom, unite, commentaire, dateMAJcapteur) VALUES (NULL, i, 'thermomètre', 'degC', NULL, NULL);
INSERT INTO capteurs (kcapteur, fkpiece, nom, unite, commentaire, dateMAJcapteur) VALUES (NULL, i, 'hygromètre', 'p100', NULL, NULL);
INSERT INTO capteurs (kcapteur, fkpiece, nom, unite, commentaire, dateMAJcapteur) VALUES (NULL, i, 'anémomètre', 'm/s', NULL, NULL);
INSERT INTO capteurs (kcapteur, fkpiece, nom, unite, commentaire, dateMAJcapteur) VALUES (NULL, i, 'luxmètre', 'lux', NULL, NULL);
INSERT INTO capteurs (kcapteur, fkpiece, nom, unite, commentaire, dateMAJcapteur) VALUES (NULL, i, 'sonomètre', 'db', NULL, NULL);
SET i = i + 1;
END WHILE;
END/
Delimiter /
CREATE PROCEDURE mesure()
BEGIN
DECLARE i1 int DEFAULT 1;
DECLARE i2 int DEFAULT 1;
DECLARE i3 int DEFAULT 0;
WHILE i2 <= 6 DO
WHILE i1 <= 1000 DO
INSERT INTO mesures (kmesure, fkcapteur, valeur, dateMesure, dateMAJmesure) VALUES (NULL, 1+i3, RAND()*(28-20)+20, CURDATE(), NULL);
INSERT INTO mesures (kmesure, fkcapteur, valeur, dateMesure, dateMAJmesure) VALUES (NULL, 2+i3, RAND()*(85-30)+30, CURDATE(), NULL);
INSERT INTO mesures (kmesure, fkcapteur, valeur, dateMesure, dateMAJmesure) VALUES (NULL, 3+i3, RAND()*(10-3)+3, CURDATE(), NULL);
INSERT INTO mesures (kmesure, fkcapteur, valeur, dateMesure, dateMAJmesure) VALUES (NULL, 4+i3, RAND()*(80-3)+3, CURDATE(), NULL);
INSERT INTO mesures (kmesure, fkcapteur, valeur, dateMesure, dateMAJmesure) VALUES (NULL, 5+i3, RAND()*(80-15)+15, CURDATE(), NULL);
SET i1 = i1 + 1;
END WHILE;
SET i3=5*i2;
SET i1=1;
SET i2=i2+1;
END WHILE;
END/
DELIMITER ;
call capteur;
DELIMITER ;
call mesure; |
Partager