Agencia de arrendamientos

Juan Manuel Ramirez Devia

“Inmobiliaria que arrienda”
Enunciado: Controlar Una agencia de arrendamiento. La información a manejar es la siguiente.
  1. Se tiene un conjunto de sedes que pertenecen a la agencia  de arrendamiento en cada una hay un administrador responsable del cual se maneja el  su identificador, nombre completo y tiempo de labor en la sucursal.
  2. Para cada propiedad se debe conocer  su ubicación, tipo, número de dormitorios, número de baños, salas de estar, metros cuadrados construidos y su número telefónico.
  3. Para cada propiedad se debe conocer  el dueño de la misma.
  4. Para los dueños se tiene su identificador, nombre, dirección,  teléfono y cantidad de propiedades.
  5. Para los que toman el arriendo de la propiedad se tiene  su identificación, nombre, dirección, teléfono, nombre, empresa donde trabaja, dirección trabajo y  teléfono de trabajo.
  6. Para que un arrendatario o inquilino pueda tomar una propiedad necesita proporciona mínimo un fiador que cuente con uno o más bienes  para que pueda respaldar el contrato de alquiler o arriendo.
  7. Para cada propiedad, si ésta se encuentra arrendada se debe  manejar quién es el inquilino, desde cuándo, y a cuánto asciende el arriendo.
  8. Interesa saber quiénes han arrendado la propiedad anteriormente (no sólo el arrendatario actual).
  9. Interesa conocer cuánto tiempo ha estado arrendada una propiedad, y cuánto tiempo ha estado sin arrendatario.
  10. También interesa conocer los pagos que se han generado por cada contrato de arrendamiento de una determinada propiedad.
  11. PLANIFICACIÓN PRELIMINAR.
  • Descripción del  problema
  • Objetivos de la aplicación de bases de datos

  1. DEFINICIÓN DE REQUISITOS.
  • Definición de reglas o requisitos que tendrá la base de datos.
  1. DISEÑO EN MODELO ENTIDAD RELACIÓN.
       Debe tener mínimo 6 entidades o tablas.
  1. PASAR EL MODELO ENTIDAD RELACION A MODELO RELACIONAL
  • Identificar claves primarias y claves foráneas.
  • Verificar la normalización de cada tabla.
  1. IMPLEMENTACIÓN DEL MODELO RELACIONAL EN EL DBGS SQL SERVER 2008 o superior.
  • Tablas
  • Relaciones
  • Verificar la integridad de la base de datos.
  • Insertar información mínimo 10 registros por tabla.

DESARROLLO


1. Análisis de las necesidades

Necesidades
  • .Asociar la sede  con el administrador responsable.
  • Para cada propiedad que se arrienda se debe conocer su ubicación y sus    características principales.
  • Asociar las  propiedades con su respectivo  dueño.
  • Requisitos para el cliente que desea arrendar -certificados de trabajo- fiador que  cuente con uno o más bienes para que pueda respaldar el contrato
  • Una propiedad varía su precio en cada nuevo contrato que realiza.Nuevo contrato -precio nuevo
  • También se manejan los pagos que se han generado por cada contrato de arrendamiento de una determinada propiedad.
          Pagos-por cada propiedad

Datos de seguridad de la empresa               
  • Definir los roles para acceder a los permisos de ingreso.
  • Cada usuario según su rol accede a un área específica.
Ejemplo
  • Asignación de claves
  • Nombre: Yeraldin Cardona
  • Cargo:Administrador
  • Área de Responsabilidad:
          Discos internos y externos.
          Que la información tenga los parámetros establecidos.
          Es responsable de los datos y el Backup.
  • Obligaciones principales que requieren información de la base datos ¿De qué aplicaciones recibe información?
         Generar la información en tiempo real
  • ¿Con cuánta frecuencia recibe información?
          En todo tiempo.
  • ¿Qué hace con esta información?
          Se procesa para obtener un resultado.
  • ¿Qué precauciones de seguridad debe tomar con respecto a la información?
          Se debe hacer backup diariamente para conservar la información.
          Verificar que los datos almacenados sean veraces.
  • ¿Para qué aplicación proporciona datos?
           Para la plataforma de la empresa de arrendamientos Castillo.
  • ¿Están contemplados cambios para alguna de sus actividades actuales que involucren alguna de las informaciones anteriores?
        Si, hay una variación de precios en el canon de arrendamiento cada que se                     renueva un nuevo contrato.

2. Estudio de viabilidad

-Viabilidad tecnológica:
¿Hay tecnología suficiente para el desarrollo?.
R// Si,se cuenta con avanzada tecnología en computación y en servidores para  lograr que todo tenga un funcionamiento de calidad.

-Viabilidad operacional:
¿Existen suficientes recursos humanos, experiencia y formación para el desarrollo?.
R// Si, se cuenta  con personal capacitado para  las diferentes áreas de la empresa tanto para  capacitar como para recibir los conocimientos para dicha  labor.

-Viabilidad económica:
¿Se pueden identificar los beneficios?
R// Los beneficios que tendremos con esta implementación es poder tener  la información correcta, en el momento solicitado sin tener errores al realizar las consultas de cada cliente, tanto propietario como arrendador.
Además de tener  la información ordenada de la empresa.
¿Los beneficios costearían el desarrollo del sistema?
R//Sí, al ser más ágil la gestión hay más clientes interesados en que la empresa maneje sus inmuebles ya que se puede acceder de manera inmediata a la información del cliente.
¿Se pueden medir los costes y los beneficios?.
R//sí, al paso del tiempo se verá reflejado los beneficios de la implementación y nos dará a conocer si la inversión realizada fue exitosa y asi nos permitirá medir  cuáles fueron los costos y beneficios y si valieron la pena.

3. Definición de requisitos

  • Responsabilidades de los miembros del equipo.
         Verificar que todos los puntos asignados sean realizados correctamente.
         Entregar el trabajo en el tiempo establecido.
         Asignar roles a cada miembro del equipo.
         Brindar asesoría.

  • Quienes serán los interlocutores y fijar calendario de reuniones de seguimiento.
          La junta directiva de la empresa.

  • Definir un validador que vele y asegure la implementación de las necesidades del cliente.
          El administrador de la base de datos.

4. Diseño conceptual

https://lh5.googleusercontent.com/6iKFRvQ_kKQ3L0J21IG6F3TZGp9rHYdF4hr9Y7mLWCjN2Ezkd1YxKXYRj4YCAgAjW3FrISPbVCn0o-WeDIQBaveJljRyi6I5RyBlu-rK4FFdkTW4zRwbRB3T8ejjfqHqKX8YU90u





Diseño lógico
https://lh4.googleusercontent.com/LS2iAQSVR7v9tJ7ChApiZaUzPwI_wiJxCutYvs3Z1T0Ii7AYg5HW1dFM8XEG8T4VHjZpSOBzVt9LmPKLSDotI6fCLxpTAfDs7CfotK_oDz6tARMMVv_lPlTY9rS5eIat0vyre-Xm


5. Implementación Se hace ya físicamente en la empresa
Una vez totalmente detallado el modelo conceptual se comienza con la implementación física del modelo de datos, a medida que se va avanzando en el modelo el administrador del sistema va asegurando la corrección del modelo y el validador la utilidad del mismo.
La implementación consiste en el desarrollo de las tablas, los índices de los mismos, las condiciones de validación de los datos, la relación entre las diferentes tablas. Por otro lado, la definición de las consultas y los parámetros a utilizar por cada una de ellas.
Una vez finalizada la implementación física, se asignan las correspondientes medidas de seguridad y se ubica la base de datos en el lugar correspondiente.

6. Evaluación y Mantenimiento  Se hace ya físicamente en la empresa
En esta última etapa todos los usuarios del sistema acceden a la base de datos y deben asegurarse el correcto funcionamiento de la misma, que sus derechos son los adecuados, teniendo a su disposición cuanta información necesiten. También deberán asegurarse que el acceso a los datos es cómodo, práctico, seguro y que se han eliminado, en la medida de lo posible, las posibilidades de error.
El administrador se asegura que todos los derechos y todas las restricciones han sido implementados correctamente y que se ha seguido en manual de estilo en la totalidad de la implementación.
El validador se asegurará que todas las necesidades del cliente han sido satisfechas.


7.Definir problemas y restricciones que pueden presentar en la agencia.
R//
  • Que la información encontrada  por encargado no sea veraz.
  • Brindar información errada tanto a clientes como propietarios.
  • Mal ingreso de la información de los clientes al sistema.
  • Por parte del arrendatario que no se pague de manera  oportuna,lo cual cual genera inconsistencias,retaliaciones y medidas para  solucionar las situaciones llegando a tener que acudir a personal profesional como abogados.
  • Inmuebles dejados por el arrendador  en condiciones malas lo cual se debe hacer las mejoras para responder para así volver  a alquilar el inmueble.
  • Cuentas de servicio no pagadas por el arrendador lo cual a la empresa le toca en el momento solucionar mientras se toman medidas jurídicas contra el cliente responsable.

8.Definir objetivos que se pretenden en la compañía con la solución en una base de datos.

R// Se desea hacer manejo de los datos de la empresa de  manera organizada para poder localizar la información detallada e inmediata procurando que sea información veraz y no redundante además hacer que sea más fácil el trabajo dentro de la empresa detallando las áreas y el personal encargado para apoyar cualquier inquietud o dificultad.además tener la información de los cliente y propietarios  actualizada en todo momento y las condiciones contractuales de los inmuebles que están a disposición o que no están en la empresa.

7. Definir alcance y límites de la situación agencia de arrendamientos dados los requerimientos dados.
La finalidad de la  base de datos es contribuir a diseñar y validar una herramienta de trabajo, que incluya todos los procedimientos vinculados con la empresa  de manera específica a los programas operativos. Procedimientos de las personas encargadas de la Gestión de una manera práctica y operativa , que además pueda ser utilizada con un considerable grado de sencillez por todos los posibles usuarios.Se creo el programa para tener un buen manejo organizacional de todo lo referente con la gestión de la empresa con el fin de ser más eficaces  a la hora de informar y de saber de qué departamentos y que personajes son los encargados de cada área además de que se le de y guarde la información exacta de cada cliente sin redundancias que puedan interferir en la información causando posibles errores internos.
Las limitaciones que encontramos en la agencia de arrendamientos son:
Que un inmueble puede estar en diferentes agencias de arrendamientos y puede suceder que cuando se se esté rentando el inmueble, otra agencia ajena a la nuestra ya lo haya rentado.
También se puede mostrar el inmueble a la misma hora a diferentes clientes por parte de diferentes agencias, esto incurre a insatisfacción en los clientes.
La falta de un seguro que cubra los daños ocasionados por el arrendatario para evitar conflictos con la agencia de arrendamientos ni con el propietario del bien.
La posibilidad de que un cliente debido a algún inconveniente en el transcurso del tiempo en que adquirió el bien en arriendo, tenga la posibilidad de ser entregado sin cumplir la totalidad del tiempo pactado en el contrato.
Estipular en el contrato que si el arrendatario no paga los servicios públicos o tiene algún problema con vecinos o la autoridad pública, el bien sea restituido a la agencia de arrendamientos.



CREACIÓN DE LA BASE DE DATOS EN SQL SERVER

CREATE DATABASE Arrendamientos

USE Arrendamientos

CREATE TABLE Administrador(
Id INT PRIMARY KEY,
Nombre VARCHAR(50) NOT NULL,
Direccion VARCHAR(50),
Telefono VARCHAR(50),
-- Este campo no es usado para realizar operaciones matemáticas, pero si puede ser usado para realizar búsquedas LIKE
email VARCHAR(50)
)

INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (1, 'Yeraldin', 'Cl 80 # 80 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (2, 'Juan Manuel', 'Cl 90 # 80 - 80', '2345679', 'correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (3, 'Juan Fernando', 'Cl 100 # 80 - 80', '2345610', 'sin_correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (4, 'Carlos', 'Cl 85 # 89 - 60', '2567890', 'correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (5, 'Juan', 'Cl 95 # 80 - 90', '2345679', 'correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (6, 'Fernando', 'Cl 100 # 80 - 80', '2345610', 'sin_correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (7, 'sara', 'Cl 80 # 45 - 80', '2344678', 'correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (8, 'pedro ', 'Cl 90 # 80 - 80', '2345679', 'correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (9, 'luis', 'Cl 79 # 80 - 80', '2845680', 'sin_correo@electronico.com')
INSERT INTO Administrador(Id, Nombre, Direccion, Telefono, email) VALUES (10, 'lorena', 'Cl 100 # 70 - 80', '2345670', 'sin_correo@electronico.com')

CREATE TABLE Sede(
Id INT PRIMARY KEY,
Id_Administrador INT NOT NULL, -- Toda sede debe tener un administrador
Direccion VARCHAR(50),
Telefono VARCHAR(50), -- Este campo no es usado para realizar operaciones matemáticas, pero si puede ser usado para realizar búsquedas LIKE
email VARCHAR(50)
)
ALTER TABLE Sede ADD CONSTRAINT UK_Sede_Id_Administrador UNIQUE (Id_Administrador) -- Un administrador puede administrar solamente una sede
ALTER TABLE Sede ADD CONSTRAINT FK_Sede_Id_Administrador FOREIGN KEY (Id_Administrador) REFERENCES Administrador(Id)

INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (1, 1, 'Cl 80 # 80 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (2, 2, 'Cl 80 # 90 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (3, 3, 'Cl 80 # 100 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (4, 4, 'Cl 80 # 80 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (5, 5, 'Cl 80 # 90 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (6, 6, 'Cl 80 # 100 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (7, 7, 'Cl 80 # 80 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (8, 8, 'Cl 80 # 90 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (9, 9, 'Cl 80 # 100 - 80', '2345678', 'correo@electronico.com')
INSERT INTO Sede(Id, Id_Administrador, Direccion, Telefono, email) VALUES (10,10, 'Cl 80 # 100 - 80', '2345678', 'correo@electronico.com')



CREATE TABLE Propietario(
Id INT PRIMARY KEY,
Nombre VARCHAR(50),
Direccion VARCHAR(50),
Telefono VARCHAR(50), -- Este campo no es usado para realizar operaciones matemáticas, pero si puede ser usado para realizar búsquedas LIKE
email VARCHAR(50)
)

INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (1, 'Pedro', 'Cl 80 # 80 - 23', '2345658', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (2, 'Pablo', 'Cl 80 # 60 - 18', '2245678', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (3, 'Vilma', 'Cl 70 # 30 - 14', '2345698', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (4, 'lucas', 'Cl 80 # 80 - 10', '2344678', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (5, 'sara', 'Cl 80 # 00 - 22', '2345378', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (6, 'Ruben', 'Cl 20 # 50 - 88', '2745678', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (7, 'luisa', 'Cl 30 # 80 - 70', '2348678', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (8, 'Rosa', 'Cl 80 # 90 - 99', '2345679', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (9, 'carolina', 'Cl 87 # 86 - 80', '2349678', 'correo@electronico.com')
INSERT INTO Propietario(Id, Nombre, Direccion, Telefono, email) VALUES (10, 'jhon', 'Cl 80 # 90 - 90', '2345671', 'correo@electronico.com')


CREATE TABLE Propiedad(
Id INT PRIMARY KEY,
Id_Propietario INT NOT NULL,
Id_Sede INT NOT NULL,
Cantidad INT, -- Cantidad de habitaciones
Descripcion VARCHAR(50),
Direccion VARCHAR(50),
Precio INT,
Area INT,
Observaciones VARCHAR(50)
)
ALTER TABLE Propiedad ADD CONSTRAINT FK_Propiedad_Id_Propietario FOREIGN KEY (Id_Propietario) REFERENCES Propietario(Id);
ALTER TABLE Propiedad ADD CONSTRAINT FK_Propiedad_Id_Sede FOREIGN KEY (Id_Sede) REFERENCES Sede(Id)

INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (1, 1, 1, 5, 'Finca', 'calle 25 #12-12', 1000000, 100, 'Vista al llano')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (2, 2, 2, 1, 'Casa', 'Medellin', 800000, 35, 'Con tendedero')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (3, 3, 3, 3, 'Finca', 'Sopetran', 3000000, 50, 'Salida al mar')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (4, 4, 4, 5, 'Finca', 'calle 25 #12-12', 1000000, 100, 'Vista al llano')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (5, 5, 5, 1, 'Casa', 'Medellin', 800000, 35, 'Con tendedero')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (6, 6, 6, 3, 'Finca', 'Sopetran', 3000000, 50, 'Salida al mar')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (7, 7, 7, 5, 'Finca', 'calle 25 #12-12', 1000000, 100, 'Vista al llano')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (8, 8, 8, 1, 'Casa', 'Medellin', 800000, 35, 'Con tendedero')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (9, 9, 9, 3, 'Finca', 'Sopetran', 3000000, 50, 'Salida al mar')
INSERT INTO Propiedad(Id, Id_Propietario, Id_Sede, Cantidad, Descripcion, Direccion, Precio, Area, Observaciones) VALUES (10,10,10, 3, 'Finca', 'Sopetran', 3000000, 50, 'Salida al mar')

CREATE TABLE Cliente(
Id INT PRIMARY KEY,
Nombre VARCHAR(50),
Direccion VARCHAR(50),
Telefono VARCHAR(50), -- Este campo no es usado para realizar operaciones matemáticas, pero si puede ser usado para realizar búsquedas LIKE
email VARCHAR(50),
Certificado_De_Trabajo VARCHAR(50) NOT NULL
)

INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (1, 'Ed', 'Cartoon', '4258899', 'ed@cartoon_network.com', 'CN0001')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (2, 'Edd', 'Calle67', '4150899', 'edd@cartoon_network.com', 'CN0002')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (3, 'Eddy', 'Carrera 90', '4258899', 'eddy@cartoon_network.com', 'CN0003')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (4, 'maria', 'Calle 10', '7898899', 'ed@cartoon_network.com', 'CN0004')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (5, 'carlos', 'Carrera34', '4348899', 'edd@cartoon_network.com', 'CN0005')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (6, 'sara', 'Calle 54', '4345899', 'eddy@cartoon_network.com', 'CN0006')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (7, 'sandra', 'transversa 78', '6658899', 'ed@cartoon_network.com', 'CN0007')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (8, 'luis', 'Calle 23', '8958899', 'edd@cartoon_network.com', 'CN0008')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (9, 'julian', 'Carrera 8', '9088899', 'eddy@cartoon_network.com', 'CN0009')
INSERT INTO Cliente(Id, Nombre, Direccion, Telefono, email, Certificado_De_Trabajo) VALUES (10, 'pedro', 'Calle5', '3458899', 'eddy@cartoon_network.com', 'CN00010')


CREATE TABLE Fiador(
Id INT PRIMARY KEY,
Nombre VARCHAR(50),
Direccion VARCHAR(50),
Telefono VARCHAR(50), -- Este campo no es usado para realizar operaciones matemáticas, pero si puede ser usado para realizar búsquedas LIKE
email VARCHAR(50)
)

INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (1, 'Moe', 'Sin direccion', '9997099', 'moe@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (2, 'Larry', 'Sin direccion', '2345699', 'Larry@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (3, 'Curly', 'Sin direccion', '34567899', 'Curly@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (4, 'maria', 'Sin direccion', '5678989', 'moe@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (5, 'Laura', 'Sin direccion', '9234569', 'Larry@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (6, 'camila', 'Sin direccion', '8965499', 'Curly@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (7, 'jorge', 'Sin direccion', '9992345', 'moe@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (8, 'Mauricio', 'Sin direccion', '2546791', 'moe@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (9, 'wilson', 'Sin direccion', '9123456', 'Larry@correo.com')
INSERT INTO Fiador(Id, Nombre, Direccion, Telefono, email) VALUES (10, 'hernan', 'Sin direccion', '9876549', 'Curly@correo.com')





CREATE TABLE Bien( -- Un fiador debe tener bienes
Id INT PRIMARY KEY,
Id_Fiador INT NOT NULL,
Nombre VARCHAR(50)
)
ALTER TABLE Bien ADD CONSTRAINT FK_Bien_Id_Fiador FOREIGN KEY (Id_Fiador) REFERENCES Fiador(Id)

INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (1,1, 'Carro')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (2,2, 'Casa')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (3,3, 'Moto')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (4,4, 'Camioneta')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (5,5, 'Casa')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (6,6, 'Moto')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (7,7, 'Carro')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (8,8, 'Casa')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (9,9, 'Moto')
INSERT INTO Bien(Id, Id_Fiador, Nombre) VALUES (10,10, 'Moto')

CREATE TABLE Fiador_X_Cliente( -- Un Cliente puede tener uno o más fiadores y un fiador puede fiar a una o más personas
Id_Fiador INT NOT NULL,
Id_Cliente INT NOT NULL,
PRIMARY KEY (Id_Fiador, Id_Cliente)
)
ALTER TABLE Fiador_X_Cliente ADD CONSTRAINT FK_Fiador_X_Cliente_Id_Fiador FOREIGN KEY (Id_Fiador) REFERENCES Fiador(Id)
ALTER TABLE Fiador_X_Cliente ADD CONSTRAINT FK_Fiador_X_Cliente_Id_Cliente FOREIGN KEY (Id_Cliente) REFERENCES Cliente(Id)

INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (1, 1)
INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (3, 2)
INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (2, 3)
INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (3, 3)
INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (4, 1)
INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (5, 2)
INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (8, 3)
INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (9, 3)
INSERT INTO Fiador_X_Cliente(Id_Fiador, Id_Cliente) VALUES (2, 3)

CREATE TABLE Contrato(
Id INT PRIMARY KEY,
Id_Propiedad INT NOT NULL,
Id_Cliente INT NOT NULL,
Fecha DATE,
Vigente varchar(20),
Precio int
)

ALTER TABLE Contrato ADD CONSTRAINT FK_Contrato_Id_Propiedad FOREIGN KEY (Id_Propiedad) REFERENCES Propiedad(Id)
ALTER TABLE Contrato ADD CONSTRAINT FK_Contrato_Id_Cliente FOREIGN KEY (Id_Cliente) REFERENCES Cliente(Id)

INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (100, 1, 1, '2018-10-21', 'TRUE', 500000.00)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (101, 2, 2, '2018-11-21', 'TRUE', 1000000.50)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (102, 3, 3, '2015-12-01', 'TRUE', 200000.80)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (103, 4, 4, '2018-10-21', 'TRUE', 400000.00)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (104, 5, 5, '2018-10-21', 'TRUE', 500000.00)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (105, 6, 6, '2018-11-21', 'TRUE', 6000000.50)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (106, 7, 7, '2015-12-01', 'TRUE', 800000.80)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (107, 8,8, '2018-10-21', 'TRUE', 900000.00)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (108, 9, 9, '2018-11-21', 'TRUE', 5000000.50)
INSERT INTO Contrato(Id, Id_Propiedad, Id_Cliente, Fecha, Vigente, Precio) VALUES (109, 10, 10, '2015-12-01', 'TRUE', 700000.80)


CREATE TABLE Pago(
Id INT PRIMARY KEY,
Id_Contrato INT NOT NULL,
Fecha DATE
)
ALTER TABLE Pago ADD CONSTRAINT FK_Pago_Id_Contrato FOREIGN KEY (Id_Contrato) REFERENCES Contrato(Id)

INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (1,100,'2018-10-20')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (2,101,'2018-11-19')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (3,102,'2018-11-20')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (4,103,'2018-11-20')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (5,104,'2018-10-20')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (6,105,'2018-11-19')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (7,107,'2018-11-20')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (8,108,'2018-11-20')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (9,109,'2018-11-20')
INSERT INTO Pago(Id, Id_Contrato, Fecha) VALUES (10,110,'2018-11-20')

  1. MANIPULACIÓN DE LA BASE DE DATOS

  • Una con group by y having en una sola tabla.
  • Una con group by y having con dos o más tablas.
  • Una subconsulta de una sola tabla.
  • Una subconsulta de tres niveles
  • Una diferencia e intersección con not in y otra con in.
  • Una diferencia e intersección con not  exists y otra con exists.
  • Una con más de dos tablas  y con un cálculo aritmético en el select
    (+, -, *, /).
  • Una consulta con las 6 cláusulas.
  1. OPERACIONES DML COMO:
      
  • Dos actualizaciones.
  • Dos borrados.
DESARROLLO



------- Mostrar los datos de las propiedades con nun valor mayor a 300000 y la cantidad de habitaciones de las propiedades sea mayor a 2

select Propiedad.*,sum (cantidad)as cantidaddehabitaciones from propiedad
where precio>300000
groupby propiedad.Area,propiedad.Cantidad,propiedad.Descripcion,propiedad.Direccion,propiedad.Id,propiedad.Id_Propietario,propiedad.Id_Sede,propiedad.Observaciones,propiedad.Precio
having sum(cantidad)>2


-----Mostrar los datos de los propietarios  con propiedades de areas mayores a 50 y un precio mayor a  900000
use Arrendamientos
select Propietario.*,sum (Area)as cantidadArea from Propietario inner join
Propiedad ON Propietario.Id = Propiedad.Id_Propietario
where precio >900000
groupby  propietario.Direccion,propietario.email,propietario.Id,propietario.Nombre,propietario.Telefono,Propiedad.Area,Propiedad.precio
having sum(Area)>50


---Mostrar los datos de las propiedades  con un valor a 800000 y un area mayor a 60

SELECT * FROM Propiedad
WHERE  precio >800000 and Area in(select Area from Propiedad
where Area>60
)

----Mostrar los datos de las propiedades  con contratos vigentes y fecha menor a 2019

select * from  Propiedad,Contrato,Pago
where  Vigente='Vigente' (select Vigente from Contrato
)
/*Una subconsulta de tres niveles*/
/*Mostrar el nombre, el telefono y  la direccion de los propietarios cuyas propiedades tengan un area mayor de 35 y sean administradas por Yeraldin*/
select Propietario.Nombre,Propietario.Direccion, Propietario.Telefono,Propiedad.Area,Administrador.Nombre
from Propietario inner join propiedad on Propietario.Id=Propiedad.Id_Propietario
inner join Administrador on  Propiedad.Id=Administrador.Id
where area>35 and (Administrador.Nombre='yeraldin')


/*Una diferencia e intersección con not in y otra
con in.*/
/* Mostrar los datos de las propiedades con un valor mayor
 de 500000 que no se han alquilado*/
Select * from Propiedad where Precio>800000 and Id not in
(select id from Contrato)
Select * from Propiedad where Precio>800000 and Id  in
(select id from Contrato)

/*Una diferencia e intersección con not  exists y otra con exists
Una con más de dos tablas  y con un cálculo aritmético en el select
       (+, -, *, /).*/
/*Buscar las propiedades que no son casas para el alquiler*/
select Descripcion,Id from Propiedad as Pro
where  not exists (select * from Contrato as con
where pro.Id=Con.Id_Propiedad and pro.Descripcion='casa')
select Descripcion,Id from Propiedad as Pro
where  exists (select * from Contrato as con
where pro.Id=Con.Id_Propiedad and pro.Descripcion='casa')


/*Una consulta con las 6 cláusulas.*/
---Retornar los datos basicos de los clientes que han solicitado propiedades en arrendamientos  que han cumplido con todos los requisitos para hacerlo.

SELECT  Cliente.Id,Fiador.Id,Cliente.Nombre,Cliente.Direccion,Cliente.Telefono
from Cliente  inner join Fiador on Cliente.Id=Fiador.Id
group by  Cliente.Id,Fiador.Id,Cliente.Nombre,Cliente.Direccion,Cliente.Telefono
having count (*)=(select count (*)
from Propiedad inner join Contrato
on Propiedad.Id=Contrato.Id
where Contrato.Vigente not in ('Vigente'))


/*OPERACIONES DML COMO:
      
Dos actualizaciones.*/
update Propiedad
set Precio=Precio+Precio*0.05
where Area>=50

UPDATE Cliente
SET nombre = 'juan'
WHERE nombre = 'luis'

/*Dos borrados.*/

Delete from Cliente
where Nombre = 'sandra'

delete from Contrato
where  Vigente='Vigente'

Comentarios

Entradas populares de este blog

Matrices especiales

Conclusiones Subnetting

Pruebas de escritorio de los ejemplos y PSeInt