Sunteți pe pagina 1din 15

BAZA DE DATE PENTRU GESTIUNEA CONTRACTELOR PENTRU O

AGENTIE IMOBILIARA

SC.IMOB.SRL societate de intermedieri imobiliare cu sediu in Bucuresti doreste


implementarea unui program informatic pentru gestiunea contractelor .Personaul se identifica
prin urmatoarele atibute:CNP,Data nasterii,Nume,Adresa,Varsta,Data angajari,Vechime,Salariu
de incadrare,Comision agent.
In operatiunile de baza sunt incheiate contracte atat cu proprietari care doresc sa vanda
sau sa inchirieze imobilele din posesie pentru care se retin si inregistreaza urmatoarele date:Cod
Proprietar,Nume Proprietar,Adresa Proprietar,Telefon Proprietar,cat si cu clienti care doresc sa
cumpere sau sa inchirieze imobile identificati prin:Cod Client,Nume Client,Telefon
Client,Cerere,Buget maxim,Serviciu(cumparare/inchiriere).
Prin contractele de prestari servicii inchieate cu cu proprietari SC.IMOB.SRL obtine
exclusivitate pentru inchirierea sau vanzarea imobilelor pentru care se cunosc:Cod
imobilizare,Tip imobilizare,Suprafata, Adresa imobilizare,Pret/mp,Pret/inchiriat.
Tranzactiile se incheie prin contracte de vanzare-cumparare sau inchiriere pentru care se
memoreaza:Numar Contract, Tip Contract ,Data Contract,Valoare contract. Pentru fiecare client
este incheiat un contract iar politica societati este ca clientilor sa nu li se perceapa cominsion
.Ulterior se emite factura pentru proprietar cu valoarea serviciului prestart inregistrandu-se:
Numar factura, Data emitere Factura,Valoare comision tranzactie iar facturile sunt platite prin
ordine de plata pentru care se cunosc:Numar Op,Data OP,Valoare platita, TotalValoarePlatita.
Societatea isi desfasoara activitatea pe imobilizari din Bucuresti.

Reguli de gestiune:
1. Un proprietar poate detine unul sau mai multe imobile, un imobil poate avea un
singur proprietar.
2. Un contract de vazare cumparare sau de inchiriere este semnat intre un client si un
proprietar avand ca intermediar societatea.
3. Pentru o imobilzare se pot incheia mai multe contracte.
4. Un agent poate incheia unul sau mai multe contracte, un contract este incheiat de
un singur agent.
5. O factura este emisa pentru un singur contract.
6. O factura poate fi platita prin mai multe ordine de plata,printr-un ordin de plata se
pot plati mai multe facturi.

Constriurea modelului relational


Dictionar de date:
CNP,DataNasterii,NumeSalariat,AdresaSalariat,DataAngajarii,Vechime,Salariu de
incadrare,Cod Proprietar,Nume Proprietar,Adresa Proprietar, Telefon Proprietar, Cod
Client,Nume Client,Telefon Client,Cerere,Buget maxim, Cod imobilizare,Tip
imobilizare,Suprafata, Adresa imobilizare, Pret/mp,Pret/Inchiriat, Numar Contract,Tip
Contract,Data Contract,Valoare contract, Numar factura, Data emitere Factura,Data scadenta
factura,Valoarefactura,Numar Op,Data OP,Valoare platita,TotalValoarePlatita.
Dictionar de atribute:
CNP, NumeSalariat, AdresaSalariat, DataAngajarii, Salariudeincadrare, CodProprietar,
NumeProprietar, AdresaProprietar , TelefonProprietar, CodClient,
NumeClient,TelefonClient,Cerere, Bugetmaxim, Codimobilizare,Tipimobilizare, Suprafata,
Adresaimobilizare, Pret/mp ,Pret/Inchiriat, NumarContract, Tip Contract ,DataContract,
Valoarecontract, NumarFactura, DataEmitereFactura, DataScadentaFactura, NumarOp, DataOP,
ValoarePlatita.
Elemente calculate: DataNasterii, Salariu Brut, Vechime, TotalValoarePlatita.
a) Dependente Functionale Simple(
CNP

) si din reguli de gestiune (

NumeSalariat
AdresaSalariat
DataAngajarii
Salariudeincadrare

CodProprietar

CodClient

NumeProprietar
AdresaProprietar
TelefonProprietar
CodContract
CodImobilizare
NumeClient
TelefonClient
Cerere
Bugetmaxim
Serviciu

Codimobilizare

TipImobilizare
Suprafata
Adresaimobilizare

Pret/mp

NumarContract

NumarFactura

NumarOp

DataContract
TipContract
CodClient (R2)
CodProprietar (R2)
CNP (R4)

DataEmitereFactura
DataScadentaFactura
NumarContract (R5)
DataOP

b) Dependente functionale multiple:


Codimobilizare
NumarContract (R3)
CNP
NumarContract (R4)
NumarFactura
NumarOp (R6)
NumarOp
NumarFactura (R6)
c) Chei primare:
NumarOp, NumarFactura, NumarContract, Codimobilizare, CodClient, CNP,
CodProprietar,
Codimobilizare
NumarContract,

NumarFactura
NumarOp

d) Atribute izolate
Codimobilizare

NumarFactura
Valoarecontract

NumarContract

e) Matricea dependentelor functionale:

ValoarePlatita
NumarOp

f) Tabele:
1. Angajati(CNP, NumeSalariat, AdresaSalariat, DataAngajarii, Salariudeincadrare)
2. Proprietari(CodProprietar, NumeProprietar, AdresaProprietar ,
TelefonProprietar,CodContract,CodImobilizare)
3. Clienti(CodClient, NumeClient,AdresaClient, TelefonClient, Bugetmaxim)
4. Imobilizari(Codimobilizare, TipImobilizare, Suprafata,
Adresaimobilizare,Pret/mpVandut,Pret/Inchiriat)
5. Contracte(NumarContract, DataContract, CodClient ,CodProprietar, CNP)
6. Facturi(NumarFactura, DataEmitereFactura, DataScadentaFactura,
NumarContract)
7. OP(NumarOp, DataOP)
8. ContracteImobilizari(Codimobilizare,NumarContract, Valoarecontract)
9. FacturiOP(NumarOp,NumarFactura, ValoarePlatita)
In tabela Angajati se impun urmatoarele restrictii:
a) CNP va fi de tip Text si va admite obligatoriu 13 caractere numerice

b) Comision implicit 20 %

In tabela Contracte DataContract se considera implicit Data curenta

INTEROGARI:
Interogari de selectie
1. Sa se afiseze clienti care sunt din provincie si doresc sa cumparare apartamente cu 3
camere la un buget maxim de 550000.

2. Sa se afiseze in ordine cronologica dupa data semnari contractului ,contractele incheiate


pentru vanzari apartamente.

3. Sa se calculeze si sa se afiseze pentru fiecare imobilizare valoarea de piata ta.

Interogari de Actiune
1) De creare a unei noi tabele(Make Table)
a) Sa se creeze o tabela noua care sa contina contractele a caror valoare depaseste 50000.

b) Sa se creze o tabela cu angajati care au peste 5 ani vechime.

c) Sa se creeze o tabela in care sa se afiseze valoarea facturi ca fiind 2% din valoarea contractului
semnat la care se adauga TVA 24%.

2) Update
Sa se adauge la salariu de incadrare o crestere de 25%.

3) Append
Sa se adauge la tabela ContracteMake si contractele semnate pentru inchiriere.

4) De stergere:
Sa se stearga din tabela VechimeMake angajati care sunt din Iasi.

4. De totalizare
a)Sa se calculeze fondul brut de salariu pentru toti angajati.

b)Sa se calculeze incasarile provenite din contracte de vanzare cumparare pentru


apartamentele de 3 camere.

5. Parametrizate
a) Sa se afiseze salariati angajati intr-o anumita date perioada.

b)Sa se afiseze contactele semnate pentru imobilizarile pentru care doreste utilizatorul s si intr-o
anumita perioada.

c) Sa se afiseze contracte semnate de un angajat indrodus ca parametru.

6. De tip Crosstab
a) Sa se afiseze valoare totala a contractelor pe angajati si pe tipuri de contracte.

b) Sa se realizeze o interogare de tip CrossTab pentru a evidentia pretul


maximim a fiecarui tip de imobilizare tranzactionata in fiecare in fiecare
luna din 2011.

Formulare
a) Sa se creeze un formular care sa permita gestionarea tabelei Proprietari imobilizari.
b) Sa se defineaca un formular pentru gestionarea contractelor din BD.

Rapoarte
a)Sa se creeze un raport care sa reflecte situatia contractelor semnate de fiecare agent pe
o anumita perioada.
b) Sa se creeze un raport privind situatia salarii acordate angajatilor pe localitatea din care
fac parte .
Interogari SQL
1. Sa afiseze toate imobilizarile din tipul terenuri care au o suprafata mai mare de 50
mp.
SELECT Imobilizari.CodImobilizare, Imobilizari.TipImobilizare,
Imobilizari.Suprafata, Imobilizari.AdresaImobilizare, Imobilizari.[Pret/mpVandut],
Imobilizari.[Pret/Inchiriat]
FROM Imobilizari
WHERE (((Imobilizari.TipImobilizare) Like "teren") AND
((Imobilizari.Suprafata)>50));
2. Sa se afiseze angajati de sex masculin cu o vechime mai mare de 5 ani.
SELECT VechimeMake.NumeSalariat, VechimeMake.AdresaSalariat,
VechimeMake.Vechime
FROM VechimeMake
WHERE ((Val(Left([CNP],1))="1"))
GROUP BY VechimeMake.NumeSalariat, VechimeMake.AdresaSalariat,
VechimeMake.Vechime
HAVING (((VechimeMake.Vechime)>5));
3. Sa se determine numarul de clienti care au incheiat contracte pe diferite tipuri de servici in
trimestrele 1 si 2 ale anului trecut.
TRANSFORM Count(Contracte.CodClient) AS CountOfCodClient
SELECT Contracte.TipContract
FROM Contracte
WHERE ((DatePart("q",[DataContract]) In (1,2) And Year([DataContract])=Year(Date())-1))
GROUP BY Contracte.TipContract
PIVOT Contracte.DataContract;
4. Sa se afiseze lista ordonata alfabetic cu numele clientilor care au o cerere pentru
apartamente cu 2 camere.
SELECT Clienti.CodClient, Clienti.NumeClient, Clienti.Cerere
FROM Clienti
WHERE (((Clienti.Cerere) Like "2 cam"))

ORDER BY Clienti.NumeClient;
5. Sa se construieasca o tabela in care sa se introduca coloana achitata integral sau nu in
tabela facturi.
SELECT distinct Facturi1.NumarFactura, Facturi1.DataEmitereFactura,
Facturi1.DataScadentaFactura, Facturi1.NumarContract, Facturi1.ValoareFactura,
IIf([ValoarePlatita]>=[ValoareFactura],"DA","NU") AS Platit
FROM Facturi1 INNER JOIN (Op INNER JOIN FacturiOP ON Op.NumarOP =
FacturiOP.NumarOP) ON Facturi1.NumarFactura = FacturiOP.NumarFactura;
6. Sa se totalizeze pe fiecare tip de imobilizare care este de vanzare de tip apartament valoarea
totala a facturi.
SELECT Imobilizari.TipImobilizare, Sum(Facturi1.ValoareFactura) AS
SumOfValoareFactura
FROM Imobilizari INNER JOIN (Contracteimobilizari LEFT JOIN Facturi1 ON
Contracteimobilizari.NrContract = Facturi1.NumarContract) ON
Imobilizari.CodImobilizare = Contracteimobilizari.CodImobilizare
GROUP BY Imobilizari.TipImobilizare, Imobilizari.[Pret/Inchiriat]
HAVING (((Imobilizari.TipImobilizare) Like "apartament *") AND ((Imobilizari.
[Pret/Inchiriat])=0));

7. Sa se stearga din tabela Facturi1 inregistrarilele a cororb data de emitere este inaintevde
2009 si a caror valoare este sub 50.
DELETE Facturi1.DataEmitereFactura, Facturi1.ValoareFactura
FROM Facturi1
WHERE ((Year([dataemiterefactura])<2009) AND ((Facturi1.ValoareFactura)<50));
8. Sa se majoreze valoarea contractului cu 2%.
UPDATE Contracteimobilizari
SET Contracteimobilizari.ValoareContract = 0.02*[valoareContract]+[ValoareContract];
9. Sa se realizeze o interogare de tip union si sa se formeze o tabela cu persoanele din BD a
societati(Clienti si proprietari)
Select CodClient as CodPersoana,NumeClient As NumePersoana
From Clienti
union
select CodProprietar as CodPersoana,NumeProprietar As NumePersoana
From Proprietari;
10. Sa se afiseze contractele care au valoarea mai mare ca contractele de tip inchiriere.
SELECT Contracte.NumarContract, Contracte.TipContract
FROM Contracte INNER JOIN Contracteimobilizari
ON Contracte.NumarContract = Contracteimobilizari.NrContract
Group by Contracte.NumarContract
Having sum(Contracteimobilizari.ValoareContract)>
(Select(sum(Contracteimobilizari.ValoareContract)
FROM Contracte INNER JOIN Contracteimobilizari

ON Contracte.NumarContract = Contracteimobilizari.NrContract
Group by Contracte.NumarContract
HAVING Contracte.TipContract="inchiriere");
11. Sa se afiseze valoare contractelor pe clienti si proprietari semnate in primul trimestru al
anului.
TRANSFORM Sum(Contracteimobilizari.ValoareContract) AS SumOfValoareContract
SELECT Clienti.NumeClient
FROM (Proprietari INNER JOIN (Clienti INNER JOIN Contracte ON Clienti.CodClient =
Contracte.CodClient) ON Proprietari.CodProprietar = Contracte.CodProprietar) INNER JOIN
Contracteimobilizari ON Contracte.NumarContract = Contracteimobilizari.NrContract
WHERE (((Contracte.DataContract)=DatePart("q",[DataContract])=1 And
Year([DataContract])=Year(Date())-1))
GROUP BY Clienti.NumeClient
PIVOT Proprietari.NumeProprietar;
12. Sa se afiseze facturile emise intr-o anumita perioada.
SELECT Facturi.NumarFactura, Facturi.DataEmitereFactura, Facturi.DataScadentaFactura,
Facturi.NumarContract
FROM Facturi
WHERE (((Facturi.DataEmitereFactura) Between [Introduceti data inceput] And
[Introduceti data sfarsit]));

S-ar putea să vă placă și