From iamargelh, 1 Year ago, written in SQL.
This paste will cross the great divide in 1 Second.
Embed
  1. --CREATE TABLES
  2. CREATE DATABASE RAPIDA
  3.  
  4. USE RAPIDA
  5.  
  6. CREATE TABLE AEROLINEA(
  7.         CVE_AERO VARCHAR(1) PRIMARY KEY,
  8.         NOMBRE VARCHAR(20)
  9. )
  10. CREATE TABLE VUELOS(
  11.         CVE_VUELO VARCHAR(3) PRIMARY KEY,
  12.         CVE_AERO VARCHAR(1) FOREIGN KEY REFERENCES AEROLINEA(CVE_AERO),
  13.         HORARIO VARCHAR(5),
  14.         CAPACIDAD INT,
  15.         NO_CLIENTES INT
  16. )
  17. CREATE TABLE CLIENTES(
  18.         CVE_CLIEN VARCHAR(3) PRIMARY KEY,
  19.         NOMBRE VARCHAR(20),
  20.         TELEFONO VARCHAR(10)
  21. )
  22. CREATE TABLE RESERVACIONES(
  23.         CVE_VUELO VARCHAR(3) FOREIGN KEY REFERENCES VUELOS(CVE_VUELO),
  24.         CVE_CLIEN VARCHAR(3) FOREIGN KEY REFERENCES CLIENTES(CVE_CLIEN)
  25. )
  26.  
  27.  
  28. --UNIDAD 3
  29. --Crear logins
  30. CREATE LOGIN USUARIO1
  31. WITH PASSWORD = '123', DEFAULT_DATABASE=RAPIDA;
  32. CREATE LOGIN USUARIO2
  33. WITH PASSWORD = '123', DEFAULT_DATABASE=RAPIDA;
  34.  
  35. --Crear usuarios
  36. --Nombre de usuario y el nombre del login pueden diferir
  37. CREATE USER USUARIO1 FOR LOGIN USUARIO1;
  38. CREATE USER USUARIO2 FOR LOGIN USUARIO2;
  39.  
  40. --Crear roles
  41. CREATE ROLE Programador
  42. GRANT SELECT ON CLIENTES TO Programador
  43. GRANT UPDATE ON AEROLINEA TO Programador
  44.  
  45. --Asignar roles a usuarios
  46. sp_addrolemember Programador, USUARIO1
  47.  
  48. --Asignar privilegios a usuarios
  49. GRANT SELECT ON AEROLINEA TO USUARIO2
  50. GRANT UPDATE ON CLIENTES TO USUARIO2
  51. GRANT INSERT ON VUELOS TO USUARIO2
  52.  
  53. --UNIDAD 5
  54. CREATE TABLE RESERVA_RES(
  55.         CVE_VUELO VARCHAR(3) FOREIGN KEY REFERENCES VUELOS(CVE_VUELO),
  56.         CVE_CLIEN VARCHAR(3) FOREIGN KEY REFERENCES CLIENTES(CVE_CLIEN),
  57.         FECHA DATE,
  58.         USUARIO VARCHAR(30),
  59.         TERMINAL VARCHAR(30)
  60. )
  61.  
  62. --Creacion de trigger para bitacora
  63. CREATE TRIGGER BITACORA_RESERVA
  64. ON RESERVACIONES
  65. FOR INSERT
  66. AS
  67. BEGIN
  68. INSERT INTO
  69. RESERVA_RES(CVE_CLIEN,CVE_VUELO,FECHA,USUARIO,TERMINAL)
  70. SELECT
  71. CVE_CLIEN,CVE_VUELO,getdate() ,system_user,host_name() FROM INSERTED
  72. END;
  73.  
  74. --Creacion de funcion mayus
  75. CREATE SCHEMA bdo
  76.  
  77. CREATE FUNCTION bdo.MAYUS(@PALABRA VARCHAR(20))
  78. RETURNS VARCHAR(20)
  79. AS
  80. BEGIN
  81.         SET @PALABRA=UPPER(@PALABRA)
  82.         RETURN @PALABRA
  83. END
  84.  
  85. --Creacion de procedimiento almacenado inserciĆ³n
  86. CREATE PROCEDURE INSERTAR_CLIENTES
  87. @CVE_CLIEN VARCHAR(3),
  88. @NOMBRE VARCHAR(20),
  89. @TELEFONO VARCHAR(10)
  90. AS
  91. BEGIN
  92. INSERT INTO CLIENTES
  93. (CVE_CLIEN,NOMBRE,TELEFONO) VALUES
  94. (@CVE_CLIEN,bdo.MAYUS(@NOMBRE),@TELEFONO)
  95. END;
  96.  
  97. --Llenado con el procedimiento de inserciĆ³n
  98. EXEC INSERTAR_CLIENTES 902,'pedro',9999999999
  99. EXEC INSERTAR_CLIENTES 950,'luis',9999999999
  100. EXEC INSERTAR_CLIENTES 951,'mario',9999999999
  101. EXEC INSERTAR_CLIENTES 952,'armida',9999999999
  102. EXEC INSERTAR_CLIENTES 953,'valentina',9999999999
  103. EXEC INSERTAR_CLIENTES 954,'oscar',9999999999
  104. EXEC INSERTAR_CLIENTES 955,'francisco',9999999999
  105.  
  106. SELECT * FROM CLIENTES
  107.