GastonPalazzo

redsocialbd.sql

Nov 25th, 2020 (edited)
396
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 11.14 KB | None | 0 0
  1. -- --------------------------------------------------------
  2. -- Host:                         127.0.0.1
  3. -- Versión del servidor:         10.4.16-MariaDB - mariadb.org binary distribution
  4. -- SO del servidor:              Win64
  5. -- HeidiSQL Versión:             11.1.0.6116
  6. -- --------------------------------------------------------
  7.  
  8. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  9. /*!40101 SET NAMES utf8 */;
  10. /*!50503 SET NAMES utf8mb4 */;
  11. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
  12. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
  13. /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
  14.  
  15.  
  16. -- Volcando estructura de base de datos para redsocialbd
  17. CREATE DATABASE IF NOT EXISTS `redsocialbd` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
  18. USE `redsocialbd`;
  19.  
  20. -- Volcando estructura para procedimiento redsocialbd.agregar_amigo
  21. DELIMITER //
  22. CREATE PROCEDURE `agregar_amigo`(
  23.     IN `mi_id` CHAR(50),
  24.     IN `amigo_id` CHAR(50)
  25. )
  26. BEGIN
  27.     DECLARE aux CHAR(50) DEFAULT "";
  28.     if EXISTS(SELECT usuarios_id FROM usuarios WHERE usuarios_id = amigo_id) then
  29.         if NOT EXISTS(SELECT usuario_id_amigo FROM amistades WHERE usuario_id_1 = mi_id AND usuario_id_amigo = amigo_id) then
  30.             INSERT INTO amistades
  31.             SELECT NULL, (SELECT usuarios_id AS 'u_1' FROM usuarios WHERE usuarios_id = mi_id) AS 'mi_id', usuarios_id AS 'amigo_id'
  32.             FROM usuarios
  33.             WHERE usuarios_id = amigo_id;
  34.             set aux = 'amigo agregado';
  35.         else
  36.             set aux = 'el amigo especificado ya se encuentra en tu lista de amigos';
  37.         END if;
  38.     else
  39.         set aux = 'el id especificado no se encuentra registrado';
  40.     END if;
  41.     SELECT aux;
  42. END//
  43. DELIMITER ;
  44.  
  45. -- Volcando estructura para procedimiento redsocialbd.agregar_publicacion
  46. DELIMITER //
  47. CREATE PROCEDURE `agregar_publicacion`(
  48.     IN `mi_id` CHAR(50),
  49.     IN `cont` CHAR(50),
  50.     IN `categoria_id` CHAR(50)
  51. )
  52. BEGIN
  53.     DECLARE aux CHAR(50) DEFAULT "";
  54.     if EXISTS(SELECT CategoriasDePost_id FROM categoriasdepost WHERE CategoriasDePost_id = categoria_id) then
  55.         INSERT INTO posteos (posteos_id, contenido, fechaDePublicacion, categoriaDePost_id, usuario_id_2)
  56.         VALUES (0, cont, CURDATE(), categoria_id, mi_id);
  57.         set aux = 'publicacion agregada';
  58.     else
  59.         SET aux = 'no se encontro la categoria especificada';
  60.     END if;
  61.     SELECT aux;
  62. END//
  63. DELIMITER ;
  64.  
  65. -- Volcando estructura para tabla redsocialbd.amistades
  66. CREATE TABLE IF NOT EXISTS `amistades` (
  67.   `amistades_id` int(11) NOT NULL AUTO_INCREMENT,
  68.   `usuario_id_1` int(11) DEFAULT NULL,
  69.   `usuario_id_amigo` int(11) DEFAULT NULL,
  70.   PRIMARY KEY (`amistades_id`),
  71.   KEY `usuario_id_1` (`usuario_id_1`),
  72.   KEY `usuario_id_amigo` (`usuario_id_amigo`),
  73.   CONSTRAINT `amistades_ibfk_1` FOREIGN KEY (`usuario_id_1`) REFERENCES `usuarios` (`usuarios_id`),
  74.   CONSTRAINT `amistades_ibfk_2` FOREIGN KEY (`usuario_id_amigo`) REFERENCES `usuarios` (`usuarios_id`)
  75. ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8mb4;
  76.  
  77. -- La exportación de datos fue deseleccionada.
  78.  
  79. -- Volcando estructura para tabla redsocialbd.categoriasdepost
  80. CREATE TABLE IF NOT EXISTS `categoriasdepost` (
  81.   `CategoriasDePost_id` int(11) NOT NULL AUTO_INCREMENT,
  82.   `nombre` varchar(100) DEFAULT NULL,
  83.   `descripcion` varchar(150) DEFAULT NULL,
  84.   PRIMARY KEY (`CategoriasDePost_id`)
  85. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;
  86.  
  87. -- La exportación de datos fue deseleccionada.
  88.  
  89. -- Volcando estructura para tabla redsocialbd.ciudades
  90. CREATE TABLE IF NOT EXISTS `ciudades` (
  91.   `ciudad_id` int(11) NOT NULL AUTO_INCREMENT,
  92.   `pais_codigo` varchar(2) NOT NULL,
  93.   `nombre` varchar(100) NOT NULL,
  94.   PRIMARY KEY (`ciudad_id`)
  95. ) ENGINE=InnoDB AUTO_INCREMENT=269415 DEFAULT CHARSET=utf8mb4;
  96.  
  97. -- La exportación de datos fue deseleccionada.
  98.  
  99. -- Volcando estructura para tabla redsocialbd.cuentas
  100. CREATE TABLE IF NOT EXISTS `cuentas` (
  101.   `cuenta_id` int(11) NOT NULL AUTO_INCREMENT,
  102.   `login_name` varchar(50) NOT NULL,
  103.   `login_pass` varchar(50) NOT NULL,
  104.   `usuario_id_2` int(11) NOT NULL,
  105.   `mail_primario` varchar(50) NOT NULL,
  106.   `mail_secundario` varchar(50) NOT NULL,
  107.   PRIMARY KEY (`cuenta_id`),
  108.   KEY `usuario_id_2` (`usuario_id_2`),
  109.   CONSTRAINT `cuentas_ibfk_1` FOREIGN KEY (`usuario_id_2`) REFERENCES `usuarios` (`usuarios_id`)
  110. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
  111.  
  112. -- La exportación de datos fue deseleccionada.
  113.  
  114. -- Volcando estructura para procedimiento redsocialbd.eliminar_amigo
  115. DELIMITER //
  116. CREATE PROCEDURE `eliminar_amigo`(
  117.     IN `mi_id` CHAR(50),
  118.     IN `amigo_id` CHAR(50)
  119. )
  120. BEGIN
  121.     DECLARE aux CHAR(50) DEFAULT "";
  122.     if EXISTS(SELECT usuarios_id FROM usuarios WHERE usuarios_id = amigo_id) then
  123.         if EXISTS(SELECT usuario_id_amigo FROM amistades WHERE usuario_id_1 = mi_id AND usuario_id_amigo = amigo_id) then
  124.             DELETE FROM amistades
  125.             WHERE usuario_id_1 = mi_id AND usuario_id_amigo = amigo_id;
  126.             set aux = 'amigo eliminado';
  127.         else
  128.             set aux = 'el amigo especificado no se encuentra en tu lista de amigos';
  129.         END if;
  130.     else
  131.         set aux = 'el id especificado no se encuentra registrado';
  132.     END if;
  133.     SELECT aux;
  134. END//
  135. DELIMITER ;
  136.  
  137. -- Volcando estructura para procedimiento redsocialbd.eliminar_cuenta
  138. DELIMITER //
  139. CREATE PROCEDURE `eliminar_cuenta`(mi_id CHAR(50))
  140. BEGIN
  141.     DECLARE aux CHAR(50) DEFAULT "";
  142.     CALL eliminar_todas_las_amistades(mi_id);
  143.     DELETE FROM amistades WHERE usuario_id_amigo = mi_id;
  144.     CALL eliminar_todas_las_publicaciones(mi_id);
  145.     DELETE FROM cuentas WHERE cuenta_id = (SELECT cuenta_id FROM cuentas WHERE usuario_id_2 = mi_id);
  146.     DELETE FROM usuarios WHERE usuarios_id = mi_id;
  147.     SELECT aux;
  148. END//
  149. DELIMITER ;
  150.  
  151. -- Volcando estructura para procedimiento redsocialbd.eliminar_publicacion
  152. DELIMITER //
  153. CREATE PROCEDURE `eliminar_publicacion`(mi_id CHAR(50), post_id CHAR(50))
  154. BEGIN
  155.     DECLARE aux CHAR(50) DEFAULT "";
  156.     if EXISTS(SELECT posteos_id FROM posteos WHERE posteos_id = post_id AND usuario_id_2 = mi_id) then
  157.         DELETE FROM posteos
  158.         WHERE usuario_id_2 = mi_id AND posteos_id = post_id;
  159.         set aux = 'post eliminado';
  160.     else
  161.         set aux = 'el post no se encuentra en tu lista de posteos';
  162.     END if;
  163.     SELECT aux;
  164. END//
  165. DELIMITER ;
  166.  
  167. -- Volcando estructura para procedimiento redsocialbd.eliminar_todas_las_amistades
  168. DELIMITER //
  169. CREATE PROCEDURE `eliminar_todas_las_amistades`(mi_id CHAR(50))
  170. BEGIN
  171.     DECLARE aux CHAR(50) DEFAULT "";
  172.     if EXISTS(SELECT usuario_id_amigo FROM amistades WHERE usuario_id_1 = mi_id) then
  173.         DELETE FROM amistades
  174.         WHERE usuario_id_1 = mi_id;
  175.         set aux = 'lista de amigos eliminada';
  176.     else
  177.         set aux = 'tu lista de amigos se encuentra actualmente vacia';
  178.     END if;
  179.     SELECT aux;
  180. END//
  181. DELIMITER ;
  182.  
  183. -- Volcando estructura para procedimiento redsocialbd.eliminar_todas_las_publicaciones
  184. DELIMITER //
  185. CREATE PROCEDURE `eliminar_todas_las_publicaciones`(mi_id CHAR(50))
  186. BEGIN
  187.     DECLARE aux CHAR(50) DEFAULT "";
  188.     DECLARE contador INT(50) DEFAULT 0;
  189.     SET contador = (SELECT count(posteos_id) FROM posteos WHERE usuario_id_2 = mi_id);
  190.     if (contador > 0) then
  191.         DELETE FROM posteos
  192.         WHERE usuario_id_2 = mi_id;
  193.         set aux = CONCAT('se eliminaron ', contador, ' posts');
  194.     else
  195.         set aux = 'tu lista de posts se encuentra vacia';
  196.     END if;
  197.     SELECT aux;
  198. END//
  199. DELIMITER ;
  200.  
  201. -- Volcando estructura para tabla redsocialbd.paises
  202. CREATE TABLE IF NOT EXISTS `paises` (
  203.   `id` int(11) NOT NULL AUTO_INCREMENT,
  204.   `codigo` varchar(2) NOT NULL,
  205.   `nombre` varchar(100) NOT NULL,
  206.   PRIMARY KEY (`id`)
  207. ) ENGINE=InnoDB AUTO_INCREMENT=503 DEFAULT CHARSET=utf8mb4;
  208.  
  209. -- La exportación de datos fue deseleccionada.
  210.  
  211. -- Volcando estructura para tabla redsocialbd.posteos
  212. CREATE TABLE IF NOT EXISTS `posteos` (
  213.   `posteos_id` int(11) NOT NULL AUTO_INCREMENT,
  214.   `contenido` varchar(300) NOT NULL,
  215.   `fechaDePublicacion` date DEFAULT NULL,
  216.   `categoriaDePost_id` int(11) DEFAULT NULL,
  217.   `usuario_id_2` int(11) DEFAULT NULL,
  218.   PRIMARY KEY (`posteos_id`),
  219.   KEY `categoriaDePost_id` (`categoriaDePost_id`),
  220.   KEY `usuario_id_2` (`usuario_id_2`),
  221.   CONSTRAINT `posteos_ibfk_1` FOREIGN KEY (`categoriaDePost_id`) REFERENCES `categoriasdepost` (`CategoriasDePost_id`),
  222.   CONSTRAINT `posteos_ibfk_2` FOREIGN KEY (`usuario_id_2`) REFERENCES `usuarios` (`usuarios_id`)
  223. ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
  224.  
  225. -- La exportación de datos fue deseleccionada.
  226.  
  227. -- Volcando estructura para procedimiento redsocialbd.save_acc
  228. DELIMITER //
  229. CREATE PROCEDURE `save_acc`(
  230.     IN `c_id` CHAR(50),
  231.     IN `log_n` CHAR(50),
  232.     IN `log_p` CHAR(50),
  233.     IN `u_id` CHAR(50),
  234.     IN `mail_p` CHAR(50),
  235.     IN `mail_s` CHAR(50)
  236. )
  237. BEGIN
  238.     DECLARE ultimo_id_insertado CHAR(50) DEFAULT '';
  239.     INSERT INTO cuentas (cuenta_id, login_name, login_pass, usuario_id_2, mail_primario, mail_secundario)
  240.         VALUES (c_id, log_n, log_p, u_id, mail_p, mail_s)
  241.         ON DUPLICATE KEY
  242.           UPDATE login_name = log_n,
  243.           login_pass = log_p,
  244.           usuario_id_2 = u_id,
  245.           mail_primario = mail_p,
  246.           mail_secundario = mail_s;
  247.     SET ultimo_id_insertado = LAST_INSERT_ID();
  248.     SELECT ultimo_id_insertado;
  249. END//
  250. DELIMITER ;
  251.  
  252. -- Volcando estructura para procedimiento redsocialbd.save_user
  253. DELIMITER //
  254. CREATE PROCEDURE `save_user`(
  255.     IN `u_id` CHAR(50),
  256.     IN `nom` CHAR(50),
  257.     IN `ape` CHAR(50),
  258.     IN `ed` CHAR(50),
  259.     IN `gen` CHAR(50),
  260.     IN `c_id` CHAR(50),
  261.     IN `tel` CHAR(50)
  262. )
  263. BEGIN
  264.     DECLARE ultimo_id_insertado CHAR(50) DEFAULT '';
  265.     INSERT INTO usuarios (usuarios_id, nombre, apellido, edad, genero, ciudad_id_1, telefono)
  266.     VALUES (u_id, nom, ape, ed, gen, c_id, tel)
  267.     ON DUPLICATE KEY
  268.     UPDATE nombre = nom,
  269.              apellido = ape,
  270.              edad = ed,
  271.              genero = gen,
  272.              ciudad_id_1 = c_id,
  273.              telefono = tel;
  274.     SET ultimo_id_insertado = LAST_INSERT_ID();
  275.     SELECT ultimo_id_insertado;
  276. END//
  277. DELIMITER ;
  278.  
  279. -- Volcando estructura para tabla redsocialbd.usuarios
  280. CREATE TABLE IF NOT EXISTS `usuarios` (
  281.   `usuarios_id` int(11) NOT NULL AUTO_INCREMENT,
  282.   `nombre` varchar(50) NOT NULL,
  283.   `apellido` varchar(50) NOT NULL,
  284.   `edad` varchar(3) NOT NULL,
  285.   `genero` varchar(10) DEFAULT NULL,
  286.   `ciudad_id_1` int(11) NOT NULL,
  287.   `telefono` varchar(50) NOT NULL,
  288.   PRIMARY KEY (`usuarios_id`),
  289.   KEY `ciudad_ibfk_1` (`ciudad_id_1`),
  290.   CONSTRAINT `ciudad_ibfk_1` FOREIGN KEY (`ciudad_id_1`) REFERENCES `ciudades` (`ciudad_id`)
  291. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
  292.  
  293. -- La exportación de datos fue deseleccionada.
  294.  
  295. -- Volcando estructura para vista redsocialbd.vista_usuario_edades
  296. -- Creando tabla temporal para superar errores de dependencia de VIEW
  297. CREATE TABLE `vista_usuario_edades` (
  298.     `usuario` VARCHAR(101) NOT NULL COLLATE 'utf8mb4_general_ci',
  299.     `edad` VARCHAR(3) NOT NULL COLLATE 'utf8mb4_general_ci'
  300. ) ENGINE=MyISAM;
  301.  
  302. -- Volcando estructura para vista redsocialbd.vista_usuario_edades
  303. -- Eliminando tabla temporal y crear estructura final de VIEW
  304. DROP TABLE IF EXISTS `vista_usuario_edades`;
  305. CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `vista_usuario_edades` AS SELECT CONCAT(nombre, ' ', apellido) AS usuario, edad FROM usuarios ORDER BY edad ;
  306.  
  307. /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
  308. /*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
  309. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  310. /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
  311.  
Add Comment
Please, Sign In to add comment