Anda di halaman 1dari 9

Introduction To T-SQL

Prayarat
~

Tujuan
Mengenal dasar teori matematis RDBMS yaitu himpunan dan logika predikat
Memahami hubungan SQL dan T-SQL
Pengantar

Penjelasan berikut memberikan latar belakang teori singkat tentang SQL. Informasi teoretis yang
diberikan di sini bersifat informal dan tidak lengkap. Tujuannya adalah untuk memberi Anda konteks
untuk bahasa T-SQL dan untuk menyampaikan poin-poin penting yang tidak terpisahkan untuk
memahami T-SQL dengan benar dalam rangkaian pembelajaran ini.

SQL
SQL adalah singkatan dari Structured Query Language. SQL adalah bahasa standar yang dirancang
untuk meminta(kueri) dan mengelola data dalam sistem manajemen basis data relasional (Relational
Data Base Management Systems - RDBMSs). RDBMS adalah sistem manajemen basis data
berdasarkan Relational Model (model semantik untuk merepresentasikan data), yang pada gilirannya
didasarkan pada dua cabang matematika: teori himpunan(set) dan Logika Predikat (Predicate Logic).
Banyak bahasa pemrograman lain dan berbagai aspek komputasi telah berevolusi. Sebaliknya, karena
SQL didasarkan pada Relational Model, ia didasarkan pada fondasi matematika terapan yang kuat
sehingga SQL tidak banyak berevolusi.

sejarah
Pada awal tahun 1970-an, seorang peneliti dari IBM, Dr E. E. Codd mengembangkan model data
relasional dan bahasa yang disebut sebagai DSL / Alpha dengan menerapkan rumus matematika yang
akurat untuk pengambilan penyimpanan data. Kemudian, IBM membuat proyek bernama System / R,
kemudian tim mengembangkan prototipe DSL yang disebut SQUARE, diganti namanya menjadi
SEQUEL dan akhirnya dikenal dengan SQL.

Ada dua kelompok perintah yang berbeda yang disertakan dalam SQL - DDL dan DML. DDL
memperluas ke Bahasa Definisi Data yang digunakan untuk mendefinisikan dan memodifikasi
beberapa struktur data. Sementara DML (Data Manipulation Language) dimaksudkan untuk mengakses
dan memanipulasi data yang disimpan dalam struktur data yang sebelumnya ditentukan oleh DDL.
T-SQL
T-SQL (Transact-SQL) adalah produk Microsoft yang merupakan Ekstensi dari SQL. T-SQL adalah
bahasa prosedural, tidak seperti SQL yang digunakan oleh SQL server. Fungsi prosedural dapat
membantu dalam melakukan operasi seperti pengambilan data dari satu baris, penyisipan baris baru,
pengambilan beberapa baris. Sintaks T-SQL berbeda dari yang lain (misal PL-SQL). Namun, memiliki
fungsi yang sama dan menghasilkan hasil yang sama dengan bahasa SQL lain.

T-SQL adalah implementasi Microsoft dari SQL untuk SQL Server(produk basis data dari microsoft).
SQL server 2014 T-SQL didirikan berdasarkan standar ANSI (American National Standards Institute).
Kemudian Microsoft memasukkan banyak penambahan fungsionalitas dalam T-SQL. Ini juga terdiri
dari pernyataan DDL, DML dan flow-control.
Secara singkat. Penjelasan mengenai TSQL dapat dijabarkan dengan beberapa perbandingan dengan
SQL (native).

SQL TSQL
fokus pada pengelolaan basis data relasional. Sama dengan SQL tetapi mempunyai ekstensi
digunakan untuk memproses dan menganalisis prosedural sehingga dapat dengan mudah
data menggunakan kueri sederhana menambahkan bussiness logic ke aplikasi
Permintaan SQL dikirimkan secara individual ke T-SQL melakukan optimisasi sehingga semua
server database. perintah dikirimkan ke server dalam sekali jalan
Sintaksis diformalkan untuk banyak perintah; Selain menggunakan sintaksis standar SQL, TSQL
beberapa di antaranya adalah SELECT, INSERT, mencakup fungsi-fungsi khusus seperti konversi
UPDATE, DELETE, CREATE, dan DROP. tanggal dan beberapa fungsi lain yang bukan
bagian dari SQL(native).
Berorientasi data Bersifat Transaksional
Tidak dapat menggunakan sintaksis T-SQL Dapat menggunakan sintaksis SQL
SET ( Himpunan )
Teori himpunan, yang berasal dari ahli matematika Georg Cantor, adalah salah satu cabang matematika
yang menjadi dasar model relasional. Definisi satu himpunan dari Cantor adalah sebagai berikut:

By a “set” we mean any collection M into a whole of definite, distinct objects m (which are called the
“elements” of M) of our perception or of our thought.
—Joseph W. Dauben dan Georg Cantor (Princeton University Press, 1990)

google translate “ Yang dimaksud dengan "himpunan" adalah kumpulan M ke seluruh objek m yang
jelas dan berbeda (yang disebut elemen dari M) dari persepsi kita atau dari pikiran kita.”

Setiap kata dalam definisi memiliki makna yang dalam dan krusial. Definisi himpunan dan anggota
himpunan adalah aksioma yang tidak didukung oleh bukti. Setiap elemen adalah milik semesta, entah
itu anggota himpunan dari atau bukan.

Mari kita mulai dengan kata utuh dalam definisi Cantor. Satu Himpunan harus dianggap sebagai entitas
tunggal. Fokus kita harus pada koleksi objek yang bertentangan dengan objek individual yang
membentuk koleksi.

Kemudian, ketika menulis kueri T-SQL terhadap tabel dalam database (seperti tabel karyawan), Kita
harus memikirkan kumpulan karyawan secara keseluruhan, bukan karyawan individu. Ini mungkin
terdengar sepele dan remeh, tetapi tampaknya banyak programmer mengalami kesulitan dalam
mengadopsi cara berpikir ini.

Kata distinct(berbeda) berarti bahwa setiap elemen himpunan harus unik. Pada tabel dalam basis data,
Anda bisa memaksakan keunikan data dengan mendefinisikan key constraints. Tanpanya, anda tidak
akan dapat mengidentifikasi baris data secara unik, dan karenanya tabel tidak akan memenuhi syarat
sebagai satu himpunan. Sehingga tabel itu menjadi multiset

Ungkapan persepsi kita atau pemikiran kita menyiratkan bahwa definisi suatu himpunan adalah
subyektif. Pertimbangkan sebuah ruang kelas: satu orang mungkin mempersepsikan sekelompok orang,
sedangkan yang lain mungkin mempersepsikan sekelompok siswa dan sekelompok guru. Oleh karena
itu, Anda memiliki kebebasan dalam mendefinisikan himpunan. Saat Anda mendesain model data
untuk database Anda, proses desain harus mempertimbangkan kebutuhan subjektif aplikasi untuk
menentukan definisi yang memadai untuk entitas yang terlibat.

Sedangkan untuk objek, definisi dari himpunan tidak terbatas hanya pada pada objek nyata, seperti
mobil atau karyawan. Tetapi relevan untuk objek abstrak juga, misal bilangan prima atau garis.

Apa definisi Cantor tentang suatu himpunan mungkin sama pentingnya dengan apa yang dicakupnya.
Perhatikan bahwa definisi tersebut tidak menyebutkan urutan di antara elemen yang ditetapkan. Di
mana urutan elemen himpunan terdaftar tidak penting. Notasi formal untuk daftar elemen set
menggunakan kurung kurawal: {a, b, c}. Karena urutan tidak memiliki relevansi, Anda dapat
mengekspresikan himpunan yang sama dengan {b, a, c} atau {b, c, a}. Pada attribut himpunan (disebut
‘column’ dalam SQL) yang membentuk judul relasi (disebut ‘table’ dalam SQL), elemen seharusnya
diidentifikasi dengan nama — bukan oleh posisi ordinal.
Demikian pula, pertimbangkan himpunan tupel (disebut ‘row’ dalam konteks SQL) yang membentuk
kerangka relasi; sebuah elemen diidentifikasi oleh nilai-nilai keys, bukan oleh posisi.

Banyak programmer kesulitan beradaptasi dengan ide bahwa, sehubungan dengan kueri tabel, tidak
ada urutan di antara baris data.
Dengan kata lain, kueri terhadap tabel dapat mengembalikan baris tabel dalam urutan apa pun kecuali
Anda secara eksplisit meminta agar data diurutkan dengan cara tertentu untuk tujuan presentasi.

Predicate Logic ( Logika Predikat )

Predicate Logic, adalah cabang matematika lain yang menjadi dasar Relational Model . Edgar F. Codd,
dalam menciptakan Relational Model,ia berusaha untuk menghubungkan Predicate Logic dengan
manajemen dan kueri data.
Secara umum, predikat adalah properti atau ekspresi yang dimiliki atau tidak dimiliki — dengan kata
lain, benar atau salah. Relational Model bergantung pada predikat untuk mempertahankan integritas
logis data dan menentukan strukturnya. Salah satu contoh predikat yang digunakan untuk menegakkan
integritas adalah constraint yang didefinisikan dalam tabel. Misal pada tabel Karyawan ada constraint
yang memungkinkan bahwa hanya karyawan dengan gaji lebih besar dari nol untuk disimpan dalam
tabel. Predikatnya adalah "gaji lebih besar dari nol" (ekspresi SQL: gaji > 0).

Kita juga dapat menggunakan predikat saat melakukan penyaringan data untuk menetapkan
subset(himpunan bagian). Misalnya, jika Anda perlu kueri tabel Karyawan dan hanya mengembalikan
baris untuk karyawan dari departemen penjualan, Anda menggunakan predikat "departemen sama
dengan penjualan" di filter kueri Anda (ekspresi SQL: departemen = ‘penjualan’).

Dalam teori himpunan, Anda dapat menggunakan predikat untuk menentukan himpunan. Hal ini dapat
membantu karena anda tidak dapat selalu mendefinisikan himpunan dengan mendaftarkan semua
elemennya. Terkadang lebih mudah untuk mendefinisikan himpunan berdasarkan properti.
Sebagai contoh dari himpunan tak hingga yang didefinisikan dengan predikat, himpunan semua
bilangan prima dapat didefinisikan dengan predikat berikut: “x adalah bilangan bulat positif lebih
besar dari 1 yang hanya dapat dibagi oleh 1 dan dirinya sendiri”
Untuk nilai tertentu, predikat itu benar atau tidak benar. Himpunan semua bilangan prima adalah
himpunan semua elemen yang predikatnya benar.
Sebagai contoh himpunan terhingga yang didefinisikan dengan predikat, himpunan {0, 1, 2, 3, 4,
5, 6, 7, 8, 9} dapat didefinisikan sebagai himpunan semua elemen yang dipegang oleh predikat berikut
ini. true: "x adalah bilangan bulat yang lebih besar dari atau sama dengan 0 dan lebih kecil dari atau
sama dengan 9."

Relational Model ( Model relasional )

Relational Model adalah model semantik untuk manajemen dan manipulasi data dan didasarkan pada
teori himpunan dan Predicate Logic. Seperti yang disebutkan sebelumnya, itu dibuat oleh Dr. Edgar F.
Codd, dan kemudian dijelaskan dan dikembangkan oleh Chris Date, Hugh Darwen, dan lainnya. Versi
pertama dari model relasional diusulkan oleh Codd pada tahun 1969 dalam sebuah laporan penelitian
IBM yang disebut "Derivabilitas, Redundansi, dan Konsistensi Hubungan yang Disimpan di Bank Data
Besar." Versi revisi diajukan oleh Codd pada tahun 1970 dalam sebuah makalah yang disebut "A Model
Data Relasional untuk Bank Data Besar yang Dibagikan, ”diterbitkan dalam jurnal Communications of
ACM.

Tujuan dari Relational Model adalah untuk memungkinkan representasi data yang konsisten dengan
redundansi minimal atau tanpa dan tanpa mengorbankan kelengkapan, dan untuk mendefinisikan
integritas data (penegakan konsistensi data) sebagai bagian dari model. RDBMS mewajibkan
implementasi Relational Model dan penyediaan sarana untuk menyimpan, mengelola, penegak
integritas, dan kueri data.

Fakta bahwa Relational Model didasarkan pada dasar matematika yang kuat berarti bahwa diberikan
contoh model-data tertentu (dari mana database fisik nantinya akan dihasilkan). Anda dapat mengetahui
dengan pasti kapan suatu desain cacat, ini lebih baik daripada hanya mengandalkan intuisi.

Relational Model melibatkan konsep-konsep seperti propositions, predicates, links, tuples, attributes,
dan banyak lagi. Untuk non-mathematicians, konsep-konsep ini bisa sangat menakutkan. Namun
penjelasan setelah ini mencakup beberapa aspek kunci dari model secara informal dengan cara non-
matematis, dan menjelaskan bagaimana mereka berhubungan dengan basis data.

Propositions (Dalil), predicates (Predikat), and relations (Relasi)


Keyakinan umum bahwa istilah relasional berasal dari hubungan antar tabel adalah salah. "Relasional"
sebenarnya berkaitan dengan hubungan istilah matematika. Dalam teori himpunan, suatu relasi adalah
representasi dari himpunan. Dalam Relational model, relasi adalah seperangkat informasi terkait, di
dalam SQL berbentuk tabel - meskipun tidak begitu tepat.
Poin penting dalam Relational model adalah bahwa relasi tunggal harus mewakili satu himpunan
tunggal (misalnya, Pelanggan). Perhatikan bahwa operasi pada relasi (berdasarkan aljabar relasional)
menghasilkan relasi (misalnya, gabungan antara dua relasi).
Saat Anda mendesain model data untuk database, Anda mewakili semua data dengan relasi (tabel).
Anda mulai dengan mengidentifikasi proposisi(propositions - dalil) yang perlu Anda wakili dalam
database Anda. Proposisi adalah pernyataan atau pernyataan yang harus benar atau salah. Misalnya,
pernyataan, "Budi Santoso lahir pada 12 Februari 1971, dan bekerja di departemen IT" adalah sebuah
proposisi. Jika proposisi ini benar, itu akan memanifestasikan dirinya sebagai baris dalam tabel
Karyawan. Proposisi yang tidak sesuai tidak akan terwujud. Anggapan ini dikenal sebagai closed-world
assumption (CWA).
Langkah selanjutnya adalah memformalkan proposisi. Anda melakukan ini dengan mengambil data
aktual (isi relasi) dan mendefinisikan struktur (judul relasi) — misalnya, dengan membuat predikat dari
dalil. Anda dapat menganggap predikat sebagai proposisi berparameter. Judul relasi terdiri dari
serangkaian atribut. Atribut(dalam SQL disebut column) diidentifikasi oleh nama atribut dan nama
tipe. Misalnya, tajuk hubungan Karyawan mungkin terdiri dari atribut berikut (dinyatakan sebagai
pasangan nama atribut dan tipe):
integer karyawan_id,
string nama_depan,
string name_belakang,
date tanggal_lahir,
integer departemen.

Type (tipe data) adalah salah satu blok fundamental dalam relasi. Type constrains atribut ke himpunan
tertentu dari nilai yang mungkin atau valid. Misalnya, INT adalah himpunan semua bilangan bulat
dalam kisaran –2,147.483.648 hingga 2.147.483.647. Type adalah salah satu bentuk predikat paling
sederhana dalam database karena membatasi nilai atribut yang diizinkan. Misalnya, database tidak akan
menerima proposisi di mana tanggal lahir karyawan adalah 31 Februari 1971 (belum lagi tanggal lahir
yang dinyatakan sebagai sesuatu seperti "abc!"). Perhatikan bahwa Type tidak terbatas pada tipe dasar
seperti bilangan bulat atau karakter string; suatu tipe juga dapat berupa enumerasi nilai yang mungkin,
seperti enumerasi posisi pekerjaan yang memungkinkan. Suatu tipe bisa sederhana atau kompleks.
Mungkin cara terbaik untuk memikirkan suatu tipe adalah sebagai Class — data yang dienkapsulasi
dan perilaku yang mendukungnya. Contoh Type kompleks adalah geometri type yang mendukung
poligon.

Missing values (Nilai yang Hilang)


Salah satu aspek dari model relasional adalah sumber dari banyak perdebatan sengit - apakah predikat
harus dibatasi pada logika dua nilai (two-valued predicate logic). Artinya, dalam logika predikat dua
kemunkinan nilai, predikat adalah benar atau salah. Jika sebuah predikat tidak benar, itu pasti salah.
Penggunaan logika predikat dua-nilai mengikuti hukum matematika yang disebut "the law of excluded
middle." Namun, beberapa mengatakan bahwa ada ruang untuk logika predikat tiga-nilai (three-valued
predicate logic), dengan mempertimbangkan kasus-kasus di mana nilai-nilai hilang. Predikat yang
melibatkan nilai yang hilang menghasilkan benar atau salah - itu menghasilkan unknown.
Misalnya, atribut ponsel dari relasi Karyawan. Misalkan nomor ponsel karyawan tertentu tidak ada.
Bagaimana Anda mewakili fakta ini dalam basis data? Dalam implementasi logika tiga nilai, atribut
ponsel harus memungkinkan penggunaan penanda khusus untuk nilai yang hilang. Kemudian predikat
yang membandingkan atribut ponsel dengan beberapa nomor tertentu akan menghasilkan tidak
diketahui untuk kasus dengan nilai yang hilang. Logika predikat tiga nilai mengacu pada tiga nilai logis
yang mungkin dihasilkan dari predikat — true, false, dan unknown.
Beberapa orang percaya bahwa logika predikat tiga nilai adalah non-relasional, sedangkan yang lain
percaya bahwa itu adalah logika. Codd sebenarnya menganjurkan untuk logika predikat bernilai empat,
mengatakan bahwa ada dua kasus yang berbeda dari nilai yang hilang: hilang tetapi berlaku (penanda
A-Values), dan hilang tetapi tidak bisa diterapkan (penanda I-Values). Contoh "hilang tetapi berlaku"
adalah ketika karyawan memiliki ponsel, tetapi Anda tidak tahu apa nomor ponsel itu. Contoh "hilang
tetapi tidak dapat diterapkan" adalah ketika seorang karyawan tidak memiliki ponsel sama sekali.
Menurut Codd, dua penanda khusus harus digunakan untuk mendukung kedua kasus ini dari nilai yang
hilang. SQL menerapkan logika predikat tiga nilai dengan mendukung penanda NULL untuk
menandakan konsep generik dari nilai yang hilang.
Dukungan untuk NULLs dan logika predikat tiga nilai dalam SQL adalah sumber dari banyak
kebingungan dan kompleksitas, meskipun orang dapat berpendapat bahwa nilai yang hilang adalah
bagian dari kenyataan. Selain itu, alternatifnya — hanya menggunakan logika predikat dua nilai —
tidak kalah problematis.
Seperti disebutkan, NULL bukan nilai melainkan penanda untuk nilai yang hilang. Oleh karena itu,
penggunaan istilah "Nilai NULL" sebenarnya kurang cocok. Terminologi yang benar adalah "penanda
NULL" atau hanya "NULL." meskipun di bab penjelasan berikut akan tetap digunakan istilah “nilai
NULL” untuk memudahkan pemahaman

Constraints (Batasan)
Salah satu manfaat terbesar dari relational model adalah kemampuan untuk mendefinisikan integritas
data sebagai bagian dari model. Integritas data dicapai melalui aturan yang disebut constrains yang
didefinisikan dalam model data dan diwajibkan oleh konsep RDBMS. Metode paling sederhana untuk
mewajibkan integritas adalah menetapkan tipe atribut dengan “nullability” yang menyertainya (attribut
yang menyatakan apakah data boleh bernilai NULL atau tidak).
Contoh constrains lainnya termasuk unique/primary key, yang memberikan integritas entitas, dan
foreign-key, yang memberikan integritas referensial. unique/primary key adalah kunci yang
didefinisikan pada satu atau lebih atribut untuk mencegah lebih dari satu kemunculan tupel (disebut
‘row’ dalam SQL) yang sama dalam suatu relasi.
Predikat yang didasarkan pada kunci kandidat dapat secara unik mengidentifikasi baris (seperti
karyawan). Anda dapat menentukan beberapa kunci kandidat dalam suatu relasi. Misalnya, dalam
hubungan Karyawan, Anda dapat menetapkan kunci kandidat pada employeeid, pada SSN (nomor
Jaminan Sosial), dan lainnya. Biasanya, Anda secara sewenang-wenang memilih salah satu kunci
kandidat sebagai kunci utama (misalnya, employeeid dalam hubungan Karyawan) dan
menggunakannya sebagai cara yang disukai untuk mengidentifikasi baris. Semua kunci kandidat
lainnya dikenal sebagai kunci alternatif.
foreign-key digunakan untuk menegakkan integritas referensial. foreign-key didefinisikan pada satu
atau lebih atribut relasi (dikenal sebagai relasi referensi) dan merujuk primary key pada relasi lain (atau
mungkin sama). Ini membatasi nilai dalam atribut foreign-key

Konsep lainnya
Untuk lebih mengenal konsep lainnya dengan lebih mendalam, silahkan mencari referensi lain diluar
materi ini. Seperti yang sudah dijelaskan sebelumnya, materi di atas hanya berupa pengantar untuk
memahami dasar sebelum mempelajari SQL(T-SQL) sebagai praktisi.
Pendalaman materi

latihan:
1) Dari penjelasan di atas, jelaskan pengertian himpunan menurut anda?
2) Jika kelas ini adalah semesta, gambarkan berbagai macam himpunan (beserta contoh anggota
himpunannya) yang mungkin terbentuk berdasarkan intuisi anda ,
hint ( tentukan predikatnya terlebih dahulu, kemudian validasi proposisinya)

3) Sertakan constrains pada himpunan-himpunan yang sudah anda buat


4) Sertakan model relasi yang memungkinkan antara himpunan yang sudah anda buat
5) apakah ada himpunan abstrak pada kumpulan himpunan anda

Anda mungkin juga menyukai