Advertisement
limun11

BPII - Vjezba 8

May 8th, 2017
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 4.50 KB | None | 0 0
  1. USE IB140261sara
  2. GO
  3.  
  4. /*1. Unutar baze podataka kreirane u vježbi 7 dodati novu tabelu Komisija sa sljedećim poljima:
  5.  Ime, polje za unos 30 karaktera (obavezan unos)
  6.  Prezime, polje za unos 30 karaktera (obavezan unos)
  7.  Titula, polje za unos 15 karaktera,
  8.  Telefon, polje za unos 20 karaktera,
  9.  Email, polje za unos 50 karaktera.
  10. Napomena: Tabelu kreirati bez primarnog ključa.*/
  11.  
  12. CREATE TABLE Komisija
  13. (
  14. Ime nvarchar (30) NOT NULL,
  15. Prezime nvarchar (30) NOT NULL,
  16. Titula nvarchar (15),
  17. Telefon nvarchar (20),
  18. Email nvarchar (50)
  19. );
  20.  
  21. /*2. U prethodno kreiranu tabelu, primjenom podupita,
  22. importovati 10000 osoba iz baze podataka AdventureWorks2014, a zatim testirati rad upita (testni upiti)
  23. provjeravajući aktualni plan izvršenja.*/
  24.  
  25. INSERT INTO Komisija(Ime,Prezime, Titula, Telefon, Email)
  26. SELECT TOP 10000 pp.FirstName, pp.LastName, pp.Title, ppp.PhoneNumber, pea.EmailAddress
  27. FROM AdventureWorks2014.Person.Person AS pp
  28. INNER JOIN AdventureWorks2014.Person.PersonPhone AS ppp ON pp.BusinessEntityID=ppp.BusinessEntityID
  29. INNER JOIN AdventureWorks2014.Person.EmailAddress AS pea ON pp.BusinessEntityID=pea.BusinessEntityID
  30.  
  31. SELECT * FROM Komisija
  32. --Plan izvrsenja upita:
  33. --Estimated operator cost: 0.094282
  34. --Estimated I/O cost: 0.0832035
  35. --Estimated CPU cost: 0.0110785
  36. --Estimated Subtree cost: 0.094282
  37. --Estimated row size: 129 B
  38.  
  39. /*3. U tabelu Komisija dodati primarni ključ pod nazivom ClanKomisijeID, automatski generator vrijednosti,
  40. a zatim testirati izvršenje prethodno kreiranih upita, te provjeriti aktualni plan izvršenja.
  41. U komentaru zapisati razlike uočene u planu izvršenja upita!*/
  42. ALTER TABLE Komisija
  43. ADD ClanKomisijeID int IDENTITY(1,1) PRIMARY KEY NOT NULL
  44. SELECT * FROM Komisija
  45. --Plan izvrsenja upita:
  46. --Estimated operator cost: 0.0979857
  47. --Estimated I/O cost: 0.0868287
  48. --Estimated CPU cost: 0.011157
  49. --Estimated Subtree cost: 0.0979857
  50. --Estimated row size: 133 B
  51.  
  52. /*4. Tabelu Komisija povezati sa tabelom Testovi many-to-many relacijom,
  53. te importovati testne podatke kao članove komisije za određene testove.*/
  54. CREATE TABLE KomisijaTestovi
  55. (
  56. TestID int FOREIGN KEY REFERENCES Testovi (TestID),
  57. ClanKomisijeID int FOREIGN KEY REFERENCES Komisija(ClanKomisijeID),
  58. PRIMARY KEY (TestID, ClanKomisijeID)
  59. );
  60. SELECT * FROM KomisijaTestovi
  61. SELECT * FROM Testovi
  62. SELECT * FROM Komisija
  63.  
  64. INSERT INTO KomisijaTestovi(TestID, ClanKomisijeID)
  65. VALUES
  66. (1, 1),
  67. (2,2),
  68. (1,3),
  69. (2,10),
  70. (1,50),
  71. (2,100)
  72.  
  73.  
  74. /*5. Kreirati jednostavan non-clustered indeks nad tabelom Komisija (npr. polje Prezime)
  75. i upitima testirati primjenu indeksa, provjeravajući aktualni plan izvršenja.*/
  76. CREATE NONCLUSTERED INDEX KomisijaPrezime
  77. ON Komisija (Prezime)
  78. GO
  79.  
  80. /*6. Kreirati kompozitni non-clustered indeks nad tabelom Komisija
  81. (npr. polja Ime i Prezime) i upitima testirati primjenu indeksa, provjeravajući aktualni plan izvršenja.*/
  82. CREATE NONCLUSTERED INDEX KomisijaImePrezime
  83. ON Komisija (Ime, Prezime)
  84.  
  85. --testiranje bez indeksa
  86. ALTER INDEX KomisijaImePrezime
  87. ON Komisija DISABLE
  88. SELECT Ime, Prezime
  89. FROM Komisija
  90. --Estimated operator cost: 0.097857
  91. --Estimated I/O cost: 0.0868287
  92. --...
  93.  
  94. --testiranje sa indexom
  95. ALTER INDEX KomisijaImePrezime
  96. ON Komisija REBUILD
  97. SELECT Ime, Prezime
  98. FROM Komisija
  99. --Estimated operator cost: 0.0275694
  100. --Estimated I/O cost: 0.0387264
  101. --...
  102.  
  103. /*7. Kreirati kompozitni non-clustered indeks sa uključenim dodatnim kolonama nad tabelom Komisija
  104. i upitima testirati primjenu indeksa, provjeravajući aktualni plan izvršenja.*/
  105. CREATE NONCLUSTERED INDEX komisijaKolone
  106. ON Komisija (Telefon)
  107. INCLUDE (Titula)
  108.  
  109.  
  110. /*8. Kreirati unique non-clustered indeks nad tabelom Komisija, polje Email. INSERT komandom testirati
  111.  funkcionalnost prethodno kreiranog indeksa.*/
  112.  CREATE UNIQUE NONCLUSTERED INDEX komisijaEmail
  113.  ON Komisija (Email)
  114.  
  115.  INSERT INTO Komisija (Ime, Prezime, Email)
  116.  VALUES
  117.  ('Sara', 'Saric', 'sara@gmail.com')
  118.  
  119.  /*9. Nad bazom podataka kreirati minimalno 5 kompleksnijih upita primjenom različitih
  120.  elemenata SELECT komande. Za svaki upit provjeriti plan izvršenja i zapisati komentare.
  121.  Također, primjenom alata SQL Server Profiler kreirati novi trace, izvršiti sve kreirane upite te rezultat dobiven
  122.  alatom pohraniti na file system.*/
  123.  
  124. /*10. Primjenom alata SQL Server Database Engine Tuning Advisor, nad bazom podataka iskoristiti prethodno kreirani trace file i provjeriti preporuke dobivene od strane korištenog alata. Ukoliko alat ponudi određene preporuke, iste implementirati nad bazom podataka.*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement