Advertisement
Guest User

Social Network

a guest
Dec 4th, 2016
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.95 KB | None | 0 0
  1. CREATE DATABASE RedSocial
  2. GO
  3. USE RedSocial
  4. GO
  5. --------------------------------------------TABLAS / REGISTROS-------------------------------------------------
  6. CREATE TABLE Idioma (  
  7.     ID          INT IDENTITY(1,1) PRIMARY KEY,
  8.     Nombre      VARCHAR(50)
  9. )
  10. GO
  11. INSERT INTO Idioma VALUES ('Español'),('Ingles'),('Aleman'),('Frances')
  12. GO
  13. CREATE TABLE Pais(
  14.     ID          INT IDENTITY(1,1) PRIMARY KEY,
  15.     Nombre      VARCHAR(50)
  16. )
  17. INSERT INTO Pais VALUES ('Rep. Dom.'),('España'), ('Alemania'),('Francia')
  18. GO
  19. CREATE TABLE Usuarios(
  20.     ID                  INT IDENTITY(1,1) PRIMARY KEY,
  21.     ID_Idioma           INT NOT NULL      FOREIGN KEY REFERENCES Idioma,
  22.     Usuario             VARCHAR(50)       NOT NULL,
  23.     Contraseña         VARCHAR(50)       NOT NULL,
  24.     Nombre              VARCHAR(50)       NOT NULL,
  25.     Apellido            VARCHAR(50)       NOT NULL,
  26.     Correo              VARCHAR(100)      NOT NULL,
  27.     Foto                VARCHAR(100)      NOT NULL,
  28.     Fecha_Registro      DATE DEFAULT      GETDATE() NOT NULL,
  29.     Conectado           BIT DEFAULT 0     NOT NULL,
  30.     Estado              BIT DEFAULT 1     NOT NULL,
  31. )
  32. GO
  33. INSERT INTO  Usuarios (Usuario,      ID_Idioma,   Contraseña, Nombre,     Apellido, Correo, Foto) VALUES
  34. ('beni',    '2', '123', 'Bernard',  'Wiesner',   'link@yahoo.com',       'files/perfil_beni.jpg'),
  35. ('felix',   '1', '123', 'Felix',    'Manuel',    'felix@yahoo.com',      'files/perfil_felix.jpg'),
  36. ('max',     '1', '123', 'Maxwell',  'Fereirras', 'maxwell@yahoo.com',    'files/perfil_max.jpg'),
  37. ('jenny',   '3', '123', 'Jennifer', 'Fernandez', 'jennifer@hotmail.com', 'files/perfil_jennifer.jpg'),
  38. ('caludia', '4', '123', 'Claudia',  'Leduc',     'claudia@yahoo.com',    'files/perfil_claudia.jpg')
  39. GO
  40. CREATE TABLE Perfil(
  41.     ID                  INT IDENTITY(1,1) Primary Key,
  42.     Sobre_Mi            VARCHAR(200)      NOT NULL,
  43.     Genero              VARCHAR(20)       NOT NULL,
  44.     Relacion            VARCHAR(50),
  45.     Telefono            VARCHAR(30),
  46.     Intereses           VARCHAR(200),
  47.     Educacion           VARCHAR(200),
  48.     Hobbies             VARCHAR(200),
  49.     Direccion           VARCHAR(100),
  50.     Fecha_Nacimiento    DATE NOT NULL,
  51.     ID_Pais             INT  NOT NULL     FOREIGN KEY REFERENCES Pais(ID),
  52.     ID_Usuario          INT               FOREIGN KEY REFERENCES Usuarios(ID)
  53. )
  54. GO
  55. INSERT INTO Perfil (Sobre_Mi, Genero, Relacion, Telefono, Intereses, Educacion, Hobbies, Direccion, Fecha_Nacimiento, ID_Pais, ID_Usuario) VALUES
  56. ('Mi nombre es Bernard, soy un estudiante del itla...',  'Masculino', 'Casado',   '809-374-2541',   'IT',         'Desarrollo de Software',  'Football',         'calle 12, #5',   '1989-10-16', '3', '1'),
  57. ('Soy Felix, soy un estudiante del itla...',             'Masculino', 'Soltero',  '809-222-3333',   'IT',         'Desarrollo de Software',  'Video Juegos',     'calle 2,  #10',  '1997-01-10', '1', '2'),
  58. ('Me llamo Mawwell, soy un estudiante del itla...',      'Masculino', 'Soltero',  '809-123-1234',   'IT',         'Desarrollo de Software',  'Programacion',     'calle 28, #16',  '1998-03-12', '1', '3'),
  59. ('Soy Jennifer, soy un estudiante de la UASD...',        'Femenino',  'Soltera',  '809-852,9874',   'Medicina',   'Enfermera',               'Peliculas',        'calle 15, #1',   '1995-05-03', '2', '4'),
  60. ('Soy Claudia, soy francesa...',                         'Femenino',  'Casada',   '809-789-3214',   'Fotografia', 'Fotografa',               'Fotos, Editacion', 'calle 3,  #16',  '1960-03-01', '4', '5') 
  61. GO
  62. CREATE TABLE Contacto(
  63.     ID                  INT IDENTITY(1,1) PRIMARY KEY,
  64.     ID_Usuario          INT FOREIGN KEY   REFERENCES Usuarios(ID),
  65.     ID_Otro_Uuario      INT,
  66.     Estado              INT
  67. )
  68. GO
  69. INSERT INTO Contacto (ID_Usuario, ID_Otro_Uuario) VALUES (1, 2), (1, 3), (4, 5)
  70. GO
  71. CREATE TABLE Publicaciones(
  72.     ID                  INT IDENTITY(1,1) PRIMARY KEY,
  73.     ID_Usuario          INT FOREIGN KEY   REFERENCES Usuarios(ID),
  74.     Mensaje             VARCHAR(200)      NOT NULL,
  75.     Fecha               DATE DEFAULT      GETDATE() NOT NULL,
  76.     Estado              BIT  DEFAULT 1
  77. )
  78. GO
  79. INSERT INTO Publicaciones (ID_Usuario, Mensaje) VALUES (1, 'Me gusta el footbal'), (2, 'Me gusta los video juegos'),
  80. (1, 'Me gusta Neuer, el jugador de football'),
  81. (3, 'Hoy asisti a una operacion')
  82. GO
  83. CREATE TABLE Fotos(
  84.     ID                  INT IDENTITY(1,1) PRIMARY KEY,
  85.     ID_Publicacion      INT FOREIGN KEY   REFERENCES Publicaciones(ID),
  86.     Url_Foto            VARCHAR(100)      NOT NULL
  87. )
  88. GO
  89. CREATE TABLE Comentario_Foto(
  90.     ID                  INT IDENTITY (1,1) PRIMARY KEY,
  91.     Comentario          VARCHAR(200)       NOT NULL,
  92.     Fecha               DATE DEFAULT       GETDATE() NOT NULL,
  93.     ID_Foto             INT FOREIGN KEY    REFERENCES Fotos(ID),
  94.     ID_Usuario          INT FOREIGN KEY    REFERENCES Usuarios(ID),
  95.     Estado              BIT DEFAULT 1      NOT NULL
  96. )
  97. GO
  98. CREATE TABLE Comentario_Publicacion(
  99.     ID                  INT IDENTITY (1,1) PRIMARY KEY,
  100.     Comentario          VARCHAR(200)       NOT NULL,
  101.     Fecha               DATE DEFAULT       GETDATE() NOT NULL,
  102.     ID_Publicacion      INT FOREIGN KEY    REFERENCES Publicaciones(ID),
  103.     ID_Usuario          INT FOREIGN KEY    REFERENCES Usuarios(ID),
  104.     Estado              BIT DEFAULT 1      NOT NULL
  105. )
  106. GO
  107. CREATE TABLE Notificaciones(
  108.     ID                  INT IDENTITY (1,1) PRIMARY KEY,
  109.     Mensaje             VARCHAR(100)       NOT NULL,
  110.     Fecha               DATE DEFAULT       GETDATE() NOT NULL,
  111.     ID_Usuario          INT FOREIGN KEY    REFERENCES Usuarios(ID)
  112. )
  113. GO
  114. CREATE TABLE Monitoreo_Faltas(
  115.     ID                  INT IDENTITY (1,1) PRIMARY KEY,
  116.     ID_Usuario          INT FOREIGN KEY    REFERENCES Usuarios(ID)
  117.     Fecha               DATE DEFAULT       GETDATE() NOT NULL,
  118.     Nombre              VARCHAR(50)        NOT NULL,
  119.     Apellido            VARCHAR(50)        NOT NULL,
  120.     Correo              VARCHAR(100)       NOT NULL,
  121.     Mensaje             VARCHAR(200)       NOT NULL
  122. )
  123. GO
  124. CREATE TABLE Chat(
  125.     ID                  INT IDENTITY (1,1) PRIMARY KEY,
  126.     Fecha               DATE DEFAULT       GETDATE() NOT NULL,
  127.     Mensaje             VARCHAR(100)       NOT NULL,
  128.     ID_Usuario          INT FOREIGN KEY    REFERENCES Usuarios(ID)
  129.     ID_Otro_Usuario     INT,
  130.     Estado              BIT DEFAULT 1
  131. )
  132. GO
  133. INSERT INTO Chat (Mensaje, ID_Usuario, ID_Otro_Usuario) VALUES('Hola Bernard',2,1),('Como estas Felix',1,2),
  134. ('Espero que estes bien',1,2), ('Hola Maxwell',1,3)
  135. GO
  136. CREATE TABLE  Historico(
  137.     ID                  INT IDENTITY (1,1) PRIMARY KEY,
  138.     Mensaje             VARCHAR(100)       NOT NULL,
  139.     Fecha               DATE               NOT NULL,
  140.     ID_Usuario          INT FOREIGN KEY    REFERENCES Usuarios(ID)
  141. )
  142. GO
  143. -------------------------------------CONSULTAS-----------------------------------------
  144.  
  145. ---1. Buscar los contactos de usuarios e indicar si está conectado o no.
  146.  
  147. SELECT Usuario, (SELECT Usuario FROM Usuarios WHERE Usuarios.ID = Contacto.ID_Otro_Uuario) AS Amigo, Conectado from Usuarios INNER JOIN Contacto ON (Usuarios.ID = Contacto.ID_Usuario)
  148.  
  149. ---2. Buscar los usuarios registrados en los ultimos 2 meses
  150. select Usuario FROM Usuarios WHERE MONTH(Fecha_Registro) > MONTH(getdate())-2
  151.  
  152. ---3. Usuarios activos que no son tus contactos.
  153. SELECT
  154.     a.id,
  155.     a.usuario,
  156.     a.estado
  157. FROM
  158.     Usuarios a
  159. LEFT JOIN
  160.     Contacto b ON
  161.         a.id IN (b.id_usuario, b.ID_Otro_Uuario) AND
  162.         1 IN (b.id_usuario, b.ID_Otro_Uuario)
  163. WHERE
  164.     (b.ID_Otro_Uuario IS NULL OR b.estado <> 2) AND
  165.     a.id <> 1 AND
  166.     a.estado IS NOT NULL
  167.  
  168.  
  169. ---4. Listar los mensajes enviados a un determinado usuario.
  170. SELECT Mensaje FROM Chat INNER JOIN Usuarios ON (Chat.ID_Usuario = Usuarios.ID) AND (Chat.ID_Otro_Usuario = 2)
  171.  
  172.  
  173. ----------------------------CASOS PROGRAMACION-----------------------------------
  174.  
  175. --Usted debe crear un procedimiento almacenado que genere un reporte  con la cantidad de conexiones por año.
  176. CREATE PROCEDURE SP1_Conexiones
  177. AS
  178. SELECT DB_NAME(dbid) AS DBName, COUNT(dbid) AS NumeroDeConexiones, YEAR(login_time) AS Año
  179. FROM sys.sysprocesses
  180. WHERE dbid = DB_ID('RedSocial')
  181. GROUP BY dbid, loginame, YEAR(login_time)
  182. GO
  183. Exec SP1_Conexiones
  184.  
  185. --Los mensajes escritos por un usuario pueden ser borrados por esta persona, pero el sistema debe mantenerlos en sus datos históricos, para esto usted debe crear un "Trigger" que permita esta funcionalidad.-
  186.  
  187. ALTER TRIGGER T1_MSG ON Chat
  188. AFTER DELETE
  189. AS
  190. BEGIN
  191. SET IDENTITY_INSERT Historico ON
  192. declare @id int
  193. declare @fecha date
  194. declare @mensaje varchar(1000)
  195. declare @id_usuario int
  196. Select @id = id From deleted
  197. Select @fecha = fecha From deleted
  198. Select @mensaje = mensaje From deleted
  199. Select @id_usuario = id_usuario from deleted
  200. INSERT INTO Historico (id , mensaje, fecha, id_usuario) values (@id, @mensaje, @fecha, @id_usuario)
  201. SET IDENTITY_INSERT Historico OFF
  202. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement