Dalam buku yang saya baca (Querying SQL Server 2012) penulis berbicara tentang teori cara kerja database. Dia menyebutkan relasi, atribut dan tupel, dll.
Dia sering menekankan fakta bahwa beberapa aspek T-SQL tidak bersifat relasional. Seperti pada kutipan berikut:
Berbeda dengan fase sebelumnya yang hasilnya bersifat relasional, output pada fase ini tidak bersifat relasional karena memiliki tatanan yang terjamin. Hasil dari fase ini adalah apa yang disebut oleh SQL standar sebagai kursor. Perhatikan bahwa penggunaan istilah kursor di sini bersifat konseptual. T-SQL juga mendukung objek yang disebut kursor yang ditentukan berdasarkan hasil kueri, dan memungkinkan pengambilan baris satu per satu dalam urutan tertentu. Anda mungkin peduli untuk mengembalikan hasil kueri dalam urutan tertentu untuk tujuan presentasi atau jika pemanggil perlu menggunakan hasilnya dengan cara itu melalui beberapa mekanisme kursor yang mengambil baris satu per satu. Namun perlu diingat bahwa pemrosesan tersebut tidak bersifat relasional. Jika Anda perlu memproses hasil kueri secara relasional—misalnya, mendefinisikan ekspresi tabel seperti tampilan berdasarkan kueri (rinciannya nanti di Bab 4)—hasilnya harus relasional. Selain itu, pengurutan data dapat menambah biaya pada pemrosesan kueri. Jika Anda tidak peduli dengan urutan pengembalian baris hasil, Anda dapat menghindari biaya yang tidak perlu ini dengan tidak menambahkan klausa ORDER BY.
Saya ingin tahu, karena setiap implementasi SQL
cukup banyak memiliki klausa ORDER BY
yang membuatnya non-relasional, mengapa penting bahwa (himpunan setelah ORDER BY
digunakan) tidak lagi relasional karena di mana-mana selalu seperti itu?
Saya bisa mengerti jika dia mengatakan itu tidak standar, misalnya menggunakan !=
daripada <>
untuk ketidaksetaraan karena itu mempengaruhi portabilitas dll. tapi saya tidak mengerti mengapa ada sesuatu yang lebih baik menjadi relasional.
Mohon pencerahannya.