Perbedaan Antara Skema / Database di MySQL


290

Apakah ada perbedaan antara skema dan database di MySQL? Dalam SQL Server, database adalah wadah tingkat yang lebih tinggi dalam kaitannya dengan skema.

Saya membaca itu Create Schemadan Create Databasepada dasarnya melakukan hal yang sama di MySQL, yang membuat saya percaya bahwa skema dan database adalah kata yang berbeda untuk objek yang sama.


Sebenarnya saya akan mengatakan schemalebih baik daripada database, seperti MySQL adalah jenis database, dan berisi beberapa database, dan kadang-kadang Anda useseorang database, yang membuat banyak pencarian target miss.
theaws.blog

Jawaban:


335

Sebagaimana didefinisikan dalam Glosarium MySQL :

Dalam MySQL, secara fisik, skema identik dengan database . Anda dapat mengganti kata kunci SCHEMAalih-alih DATABASEdalam sintaks MySQL SQL, misalnya menggunakan CREATE SCHEMAalih-alih CREATE DATABASE.

Beberapa produk basis data lainnya menarik perbedaan. Misalnya, dalam produk Oracle Database, skema hanya mewakili bagian dari database: tabel dan objek lain yang dimiliki oleh satu pengguna.


74
Saya pikir "beberapa produk database lain" benar-benar eufemisme untuk hampir semua database lainnya (mungkin kecuali SQLite, tapi itu bisa dimengerti).
Stefan Steiger

5
Membuat skema identik dengan database itu menarik - saya selalu mengaitkannya dengan objek pengguna .. Dan penyebutan SQLServer yang ramah yang memisahkan konsep pengguna / skema yang memungkinkan fleksibilitas muatan kapal dan beberapa cara menarik untuk melakukan kueri dinamis.
Gerard ONeill

Hal yang mengganggu tentang mendefinisikan "skema" sebagai pengelompokan objek database adalah bahwa ia membebani makna kata yang lebih lama, misalnya en.wikipedia.org/wiki/Database_schema .
Mark E. Haase

1
@mehaase keduanya adalah arti kata yang lama. Oracle memiliki skema bahkan sebelum SQL3 (1999), meskipun itu memperlakukan mereka sebagai database lain akan menginjak database full-blown. Bahkan, Oracle menyebut "database" apa yang orang lain sebut server atau contoh server - binari yang berbeda, executable yang berbeda, port yang berbeda.
Panagiotis Kanavos

61

Tergantung pada server database. MySQLtidak peduli, pada dasarnya hal yang sama.

Oracle,, DB2dan solusi basis data tingkat perusahaan lainnya membuat perbedaan. Biasanya skema adalah kumpulan tabel dan Database adalah kumpulan skema.


6
Bahkan Microsoft SQL Server memiliki perbedaan yang sangat mirip dengan Oracledan DB2untuk kasus ini.
RBT

2
Dalam MySQL "database" dan "skema" pada dasarnya tidak sama; itu persis hal yang sama (misalnya, create databasedan create schemasinonim). Dalam skema Oracle identik dengan pengguna (mungkin lebih akurat, skema adalah daftar semua objek yang dibuat di bawah pengguna). MSSQL membedakan ketiganya (dan sebagai hasilnya, ketika mengakses tabel dari database yang berbeda, nama tersebut harus dikualifikasikan oleh database dan skema, misalnya database1.dbo.table2)
Mike Rosoft

17

Mengacu pada dokumentasi MySql ,

BUAT DATABASE membuat database dengan nama yang diberikan. Untuk menggunakan pernyataan ini, Anda memerlukan hak CREATE untuk database. CREATE SCHEMA adalah sinonim untuk CREATE DATABASE pada MySQL 5.0.2.


7

PostgreSQL mendukung skema, yang merupakan bagian dari database: https://www.postgresql.org/docs/current/static/ddl-schemas.html

Database berisi satu atau lebih skema bernama, yang pada gilirannya berisi tabel. Skema juga berisi jenis objek bernama lainnya, termasuk tipe data, fungsi, dan operator. Nama objek yang sama dapat digunakan dalam skema berbeda tanpa konflik; misalnya, schema1 dan myschema dapat berisi tabel bernama mytable. Tidak seperti basis data, skema tidak dipisahkan secara kaku: pengguna dapat mengakses objek di skema mana pun di basis data yang terhubung, jika mereka memiliki hak istimewa untuk melakukannya.

Skema analog dengan direktori di tingkat sistem operasi, kecuali skema yang tidak dapat disarangkan.

Menurut pendapat saya, MySQL bukan database referensi. Anda tidak boleh mengutip MySQL untuk penjelasan. MySQL mengimplementasikan SQL non-standar dan terkadang mengklaim fitur yang tidak didukungnya. Misalnya, di MySQL, skema CREATE hanya akan membuat DATABASE. Itu benar-benar menyesatkan pengguna.

Kosa kata semacam ini disebut "MySQLism" oleh DBA.


2
Dan kemudian ada "schemata" untuk menambah kebingungan bagi pemula :)
Zeni

@ Zeni apa sebenarnya schemata di MySQL? Yang bisa saya temukan hanyalah referensi ke tabel schemata information_schema tetapi tidak ada definisi ringkas tentang apa artinya sebenarnya
Alf47

@ Alf47 "schemata" hanyalah bentuk jamak dari kata "schema". "skema" juga dapat diterima, tetapi tidak sebagus :)
jobo3208

6

dalam skema MySQL adalah sinonim dari database . Ini cukup membingungkan bagi orang-orang pemula yang melompat ke MySQL dan hari pertama menemukan skema kata , jadi tidak ada yang perlu dikhawatirkan karena keduanya sama.

Ketika Anda memulai MySQL untuk pertama kalinya, Anda perlu membuat database (seperti sistem basis data lainnya) agar Anda dapat MENCIPTAKAN SKEMA yang tidak lain adalah CIPTAKAN DATABASE

Dalam beberapa skema sistem database lain merupakan bagian dari database atau kumpulan Tabel, dan koleksi skema adalah database.


3

Ya, orang menggunakan istilah-istilah ini secara bergantian terkait dengan MySQL. Meskipun seringkali Anda akan mendengar orang secara tidak tepat menyebut seluruh server basis data sebagai basis data.


0

Microsoft SQL Server misalnya, Skema merujuk ke satu pengguna dan tingkat lain dari suatu wadah dalam urutan yang menunjukkan server, database, skema, tabel, dan objek.

Misalnya, ketika Anda berniat untuk memperbarui dbo.table_a dan sintaksinya tidak memenuhi syarat penuh seperti tabel UPDATE. DBMS tidak dapat memutuskan untuk menggunakan tabel yang dimaksud. Pada dasarnya secara default DBMS akan menggunakan myuser.table_a


Skema adalah dimiliki oleh satu pengguna. Secara default, pengguna yang dibuat dalam database menggunakan skema dbo sebagai skema default mereka. Skema default yang digunakan untuk referensi tabel yang tidak sepenuhnya memenuhi syarat adalah apa yang ditetapkan untuk pengguna tersebut.
Gerard ONeill

Dalam versi SQL Server yang lebih lama, menghapus pengguna akan membuat skema yang dikaitkan dengannya tidak dapat digunakan. Saat ini pemetaan antara pengguna dan skema kurang ketat. Juga, dianggap sebagai praktik terbaik untuk membuat satu akun palsu untuk pemilik database dan semua skema.
Jonathan Allen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.