Company Relational Database for Exicese

employee (person_name, street, city)
works(person_name, company_name, salary)
company(company_name, city)
manages(person_name, manager_name)

1.Consider the Company Relational Database, where the primary keys are underlined. Give an expression in the relational algebra to express each the following queries:
•Find the names of all employees who live in the same city and on the same street as do their manager
•Find the names of all employees in this database who do not work for “First Bank Corporation”
•Find the names of all employees who earn more than every employee of “Small Bank Corporation”

2.Consider the Company Relational Database, where the primary keys are underlined. Give an expression in the relational algebra to express each the following queries:
•Find all employees who work directly for “Jones.”
•Find all cities of residence of all employees who work directly for “Jones.”
•Find the name of the manager of the manager of “Jones.”
•Find the employees who earn more than all employees living in the city “Mumbai.”

3.
•Find the names of all employees who work for “Small Bank Corporation”.
•Find the names and cities of residence of all employees who work for “Small Bank Corporation”.
•Find the names, street addresses, and cities of residence of all employees who work for “Small Bank Corporation” and earn more than $5,000.
•Find the names of all employees in this database who live in the same city as the company for which they work.
•Assume the companies maybe located several cities. Find all companies located in every city in which “First Bank Corporation” is located

4.Choose 2 relational algebra (RA) expressions (from the answer of previous exercise). For each RA, create a Query Evaluation Plan (QEP) by selecting the appropriate algorithm.

5.Let relations r1(A,B,C) and r2(C,D,E) have the following properties :
r1 has 20,000 tuples, r2 has 45,000 tuples, 25 tuples of r1 fit on one block, and 30 tuples of r2 fit on one block.
Estimate the number of block transfers and seeks require, using each of the following join strategies for r1 |x| r2:
•Nested-loop join.
•Block nested-loop join

Jawab

1) a.Πperson_name (σcity,street = manager (works))
b.Πperson_name (σcompany_name ≠ ‘First Bank Corporation’(works))
c.Πperson_name (σ salary >‘ Small Bank Corporation ‘(works))

2) a.Πperson_name, street, city (σemployee.person_name = manager.person_name ^ manager_name = ‘Jones’ (employee x manages))
b.Πcity (σemployee.person_name = manager.person_name ^ manager_name = ‘Jones’(employee x manages))
c.Π manager.person_name ∩ Π manager.person_name = ‘jones’(employee x manages))
d.Πperson_name (σ salary > employee.person_name^Mumbai (employee x manages))

3) a.Πperson_name (σcompany_name = ‘Small Bank Corporation’ (works |x| employee))
b.Πperson_name, city (σcompany_name = ‘Small Bank Corporation’ (works |x| employee))
c. Πperson_name, street, city (σcompany_name = ‘Small Bank Corporation’ ^ salary > 5000(works |x| employee))
d. Πperson_name (σemployee.city = company.city((employee|x|works)|x|company))

Sorting , Join dan Selection

Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu proses sorting:
1. Urut naik (ascending)
Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar

2. Urut turun (descending)
Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.

Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi. Selain itu, dengan mengurutkan data maka kita semakin mudah untuk menyisipkan data atapun melakukan penggabungan data.
Metode-metode sorting meliputi:

1. Insertion Sort (Metode Penyisipan)
2. Selection Sort (Metode Seleksi)
3. Bubble sort(Metode Gelembung)
4. Shell Sort (Metode Shell)
5. Quick Sort (Metode Quick)
6. Merge Sort (Metode Penggabungan)

JOIN
Algoritma query melakukan join ada beberapa algoritma yang sering digunakan yaitu Algoritma Hash Join, Algoritma Nested Join. Masing-masing algoritma memilik kegunaan yang sama dalam menggabungkan beberapa tabel atau relasi tabel pada database manajemen sistem.
Proses Join Query dalam pencarian data di database adalah salah satu sangat penting dan sulit untuk membuatnya, proses pencarian data menggunakan join query mempunyai banyak metode-metode atau algoritma yang digunakan dan memiliki formula query yang berbeda menghasilkan Output yang sama

Algoritma Join Query yang banyak digunakan dikalangan user adalah Algoritma Nested Join dan Hash Join, kedua algoritma tersebut memiliki keunggulan dan kelemahan sehingga perlu diteliti bagaimana kerja/performance algoritma ini dalam pencarian data atau pengaksesan data dari segi kecepatan waktunya untuk merespon data.

Algoritma Hash Join adalah sebuah algoritma join untuk menggabungkan data yang berjumlah besar. Cara kerja Hash Joins adalah Optimizer membuat sebuah Hash Table berdasarkan predikat Join. Setiap tabel di Inner maupun Outer masing-masing dijadikan sebuah kode dengan Hash Function kemudian setiap kode Hash dari Inner akan dibandingkan dengan Hash Kode dari Outer. Apabila kode hash dari Inner dan Outer sama maka akan dilakukan proses pengecekan nilai dari kolom yang pada akhirnya akan dimasukkan ke dalam hasil jika nilai kolomnya sama.

Algoritma Nested Join adalah sebuah Join yang efektif jika subset yang digabungkan berjumlah sedikit dan jika kondisi dalam perintah join efisien untuk menggabungkan 2(dua) tabel tersebut.

Aljabar Relasional
aljabar relasional merupakan kumpulan operasi terhadap relasi dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru dan termasuk kategori prosedural dan juga menyediakan seperangkat operator untuk memanipulasi data.
Operasi Dalam Aljabar Relasional
Operasi-operasi dasar dalam aljabar relasional adalah sebagai berikut :
1.Operasi selection Operasi select berfungsi untuk menyeleksi tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi. Operasi select menyeleksi tuple-tuple yang memenuhi predikat yang diberikan. Digunakan symbol sigma untuk menunjukkan operasi select. Predikat muncul sebagai subcript dari . Argumen relasi diberikan dalam kurung yang mengikuti .
2.Operasi projection (π) Operasi project berfungsi untuk memilih nilai atribut-atribut tertentu saja dari sebuah tabel relasi. Operasi project disimbolkan dengan symbol phi (π). Nama-nama atribut yang diinginkan tampil ditulis sebagai subcript π.
3.Operasi cartesian (x) Operasi cartesian product berfungsi untuk mengkombinasikan informasi yang ada dalam

Selection(σ) adalah operasi untuk menyeleksi tuperl-tupel yang memenuhi suatu predikat , kita dapet menggunakan operator perbandingan pada predikat.
Beberapa predikat dapat di kombinasikan menjadi predikat manjemuk menggunakan penghubung AND (^) dan OR(V)

Daftar Pustaka:
http://sisinform-aaf1231072.blogspot.co.id/2013/02/pengertian-sorting.html
http://repository.usu.ac.id/bitstream/123456789/46315/4/Chapter%20I.pdf
http://ilearning.me/2015/07/05/perancangan-basis-data/