Mengambil puncak ke information_schema
database dan memuncak pada metadata untuk salah satu proyek hewan peliharaan saya, saya mengalami kesulitan memahami apa (jika ada) perbedaan antara create schema
perintah dan create database
perintah untuk MySQL.
Apakah ada perbedaan? Jika tidak, apakah ini pola perilaku yang agak khas untuk database relasional (saya pernah mendengar bahwa untuk database lain, seperti Oracle, skema ada dalam database, bukan pada level yang sama dengan database).
Terima kasih!
Dokumentasi Mysql mengatakan: CREATE SCHEMA adalah sinonim untuk CREATE DATABASE pada MySQL 5.0.2.
ini semua kembali ke standar ANSI untuk SQL di pertengahan 80-an.
Standar tersebut memiliki perintah "BUAT SKEMA", dan berfungsi untuk memperkenalkan beberapa ruang nama untuk nama tabel dan tampilan. Semua tabel dan tampilan dibuat dalam "skema". Saya tidak tahu apakah versi itu mendefinisikan beberapa akses skema silang ke tabel dan tampilan, tetapi saya berasumsi demikian. AFAIR, tidak ada produk (setidaknya saat itu) yang benar-benar menerapkannya, bahwa keseluruhan konsep itu lebih merupakan teori daripada praktik.
OTOH, ISTR versi standar ini tidak memiliki konsep perintah "pengguna" atau "CREATE USER", jadi ada produk yang menggunakan konsep "pengguna" (yang kemudian memiliki ruang namanya sendiri untuk tabel dan views) untuk mengimplementasikan padanannya dengan "skema".
Ini adalah area di mana sistemnya berbeda.
Mengenai administrasi, ini seharusnya tidak terlalu menjadi masalah, karena di sini Anda memiliki perbedaan.
Sejauh Anda melihat kode aplikasi, Anda "hanya" harus peduli dengan kasus di mana satu aplikasi mengakses tabel dari beberapa ruang nama. AFAIK, semua sistem mendukung sintaks ".", Dan untuk ini tidak masalah apakah ruang nama adalah milik pengguna, "skema", atau "database".
sumber
Sebenarnya, perbedaan antara Database dan Schema tidak ada di MySql.
Namun, ini tidak terjadi di mesin database lain seperti SQL Server. Di server SQL :,
Secara default, semua tabel di SQL Server termasuk dalam skema default yang disebut dbo . Saat Anda membuat kueri tabel yang belum dialokasikan ke skema tertentu, Anda bisa melakukan sesuatu seperti:
yang setara dengan:
Sekarang, server SQL memungkinkan pembuatan skema yang berbeda, yang memberi Anda kemungkinan untuk mengelompokkan tabel yang memiliki tujuan yang sama. Itu membantu mengatur database.
Misalnya, Anda dapat membuat skema yang disebut penjualan , dengan tabel seperti faktur , pemesan kredit (dan lainnya yang terkait dengan penjualan), dan skema lain yang disebut pencarian , dengan tabel seperti negara , mata uang , jenis langganan (dan tabel lain yang digunakan sebagai tampilan atas meja).
Tabel yang dialokasikan ke domain tertentu ditampilkan di SQL Server Studio Manager dengan nama skema diawali dengan nama tabel (persis sama dengan tabel milik skema dbo default ).
Ada skema khusus di SQL Server. Mengutip buku yang sama:
Skema tidak hanya untuk pengelompokan. Sebenarnya dimungkinkan untuk memberikan izin yang berbeda untuk setiap skema kepada pengguna yang berbeda, seperti yang dijelaskan MSDN .
Dengan cara ini, pencarian skema yang disebutkan di atas dapat tersedia untuk semua pengguna standar dalam database (misalnya
SELECT
hanya izin), sedangkan tabel yang disebut supplierbankaccountdetails dapat dialokasikan dalam skema berbeda yang disebut finansial , dan untuk memberikan akses hanya kepada pengguna di kelompokaccounts
(hanya contoh, Anda mendapatkan ide).Akhirnya, dan mengutip lagi buku yang sama:
sumber
CREATE SCHEMA adalah sinonim dari CREATE DATABASE. BUAT Sintaks DATABASE
sumber
Database adalah kumpulan skema dan skema adalah kumpulan tabel. Tapi di MySQL mereka menggunakannya dengan cara yang sama.
sumber
Jadi, tidak ada perbedaan antara "database" MySQL dan "skema" MySQL: ini adalah dua nama untuk hal yang sama - namespace untuk tabel dan objek DB lainnya.
Untuk orang-orang dengan latar belakang Oracle: "database" MySQL alias "skema" MySQL sesuai dengan skema Oracle. Perbedaan antara perintah MySQL dan Oracle CREATE SCHEMA adalah bahwa di Oracle, perintah CREATE SCHEMA tidak benar-benar membuat skema tetapi mengisinya dengan tabel dan tampilan. Dan perintah Oracle CREATE DATABASE melakukan hal yang sangat berbeda dari rekan MySQL-nya.
sumber