Apa perbedaan antara skema dan tabel dan database?

155

Ini mungkin pertanyaan n00blike (atau lebih buruk). Tapi saya selalu melihat skema sebagai definisi tabel dalam database. Ini salah atau tidak sepenuhnya benar. Saya tidak ingat banyak dari kursus basis data saya.

anbanm
sumber
3
Dalam skema oracle hanya dirujuk ke pengguna. Saat itulah kami membuat pengguna, skema akan dibuat sekarang kami dapat menambahkan tabel, tampilan, paket indeks, dll.
Ali786

Jawaban:

242

skema : database : tabel :: denah lantai : rumah : kamar

MusiGenesis
sumber
81
Sedikit samar, tetapi tidak salah; tetapi apakah Anda benar-benar berpikir bahwa n00b yang diproklamirkan akan memahami hal itu?
Stein G. Strindhaug
6
Analogi yang bagus. Saya akan mengubah "denah lantai" menjadi "cetakan biru" karena skema memiliki lebih dari sekadar tabel, dan cetakan biru berisi kabel, pemanas, dan pipa ledeng.
Paul Tomblin
4
"Skema" benar-benar hanya berarti "rencana". Saya pernah melihatnya digunakan untuk merujuk ke seluruh database, atau hanya satu tabel atau tampilan.
MusiGenesis
@ Paul: poin bagus. Saya awalnya menulis "cetak biru" tetapi mengubahnya karena itu tidak benar-benar berkonotasi "rumah" (paling tidak bagi saya).
MusiGenesis
4
Ya, saya cenderung melihat skema sebagai pengguna di Oracle. Jadi definisi bahkan bervariasi dari db ke db: D Sungguh menyebalkan.
Robert
123

Sebuah skema relasi adalah definisi logis dari meja - mendefinisikan apa nama meja, dan apa nama dan jenis setiap kolom adalah. Ini seperti rencana atau cetak biru. Sebuah skema database adalah kumpulan dari relasi skema untuk seluruh database.

Sebuah meja adalah struktur dengan sekelompok baris (alias "tupel"), yang masing-masing memiliki atribut yang didefinisikan oleh skema. Tabel mungkin juga memiliki indeks untuk membantu mencari nilai pada kolom tertentu.

Sebuah basis data adalah, secara resmi, setiap koleksi data. Dalam konteks ini, database akan menjadi kumpulan tabel. A DBMS (Database Management System) adalah perangkat lunak (seperti MySQL, SQL Server, Oracle, dll) yang mengelola dan menjalankan database.

Ian Varley
sumber
1
Skema basis data juga mencakup indeks, tampilan, dll.
Paul Tomblin
1
pasti ini tidak benar. database bukan kumpulan tabel seperti itu. Anda dapat memiliki 30 database tanpa memiliki satu tabel misalnya.
Robert
@ Robert - apa gunanya memiliki database tanpa tabel di dalamnya?
Paul Tomblin
16
Bahkan jika Anda tidak memiliki tabel, itu masih kumpulan tabel - ini adalah kumpulan tabel kosong .
Jon Skeet
1
@Ian: jangan lupa bahwa database juga akan memiliki batasan - batasan referensial (kunci primer, kunci asing), batasan keunikan, dan periksa batasan. Mungkin juga termasuk pemicu dan prosedur.
Jonathan Leffler
16

Singkatnya, skema adalah definisi untuk seluruh basis data, sehingga mencakup tabel, tampilan, prosedur tersimpan, indeks, kunci primer dan asing, dll.

Graeme Perrow
sumber
12

Posting khusus ini telah terbukti hanya berhubungan dengan Oracle dan definisi Skema berubah ketika dalam konteks DB lain.

Mungkin hal yang agak hanya google up tetapi istilah FYI tampaknya berbeda dalam definisi mereka yang merupakan hal yang paling menjengkelkan :)

Dalam Oracle, basis data adalah basis data. Di kepala Anda pikirkan ini sebagai file data dan redo log dan keberadaan fisik aktual pada disk dari database itu sendiri (yaitu bukan instance)

Skema secara efektif adalah pengguna. Lebih khusus itu adalah seperangkat tabel / procs / indeks dll yang dimiliki oleh pengguna. Pengguna lain memiliki skema yang berbeda (tabel yang dimilikinya) namun pengguna juga dapat melihat skema apa pun yang telah mereka pilih haknya. Jadi sebuah database dapat terdiri dari ratusan skema, dan masing-masing skema ratusan tabel. Anda bisa memiliki tabel dengan nama yang sama di skema yang berbeda, yang berada di database yang sama.

Tabel adalah tabel, seperangkat baris dan kolom yang berisi data dan terkandung dalam skema.

Definisi mungkin berbeda di SQL Server misalnya. Saya tidak mengetahui hal ini.

Robert
sumber
11

Skema berperilaku seperti objek induk seperti yang terlihat di dunia OOP. jadi itu bukan database itu sendiri. mungkin tautan ini ini bermanfaat.

Tapi, di MySQL, keduanya setara. Kata kunci DATABASE atau DATABASES dapat diganti dengan SCHEMA atau SCHEMAS di mana pun kata itu muncul. Contoh:

  • BUAT DATABASE <=> BUAT SKEMA
  • TAMPILKAN DATABASE <=> TAMPILKAN SKEMA

Dokumentasi MySQL

Istilah SCHEMA & DATABASE adalah sesuatu yang bergantung pada DBMS.

Sebuah Tabel adalah sekumpulan elemen data (nilai-nilai) yang diselenggarakan menggunakan model kolom vertikal (yang diidentifikasi dengan nama mereka) dan baris horizontal. Database berisi satu atau lebih (biasanya) Tabel . Dan Anda menyimpan data Anda di tabel ini. Tabel mungkin terkait satu sama lain ( Lihat di sini ).

earthdan
sumber
jawaban yang berharga
sofs1
2

Lebih lanjut tentang skema:

Dalam SQL 2005 skema adalah cara untuk mengelompokkan objek. Ini adalah wadah tempat Anda bisa meletakkan benda. Orang dapat memiliki objek ini. Anda dapat memberikan hak pada skema.

Pada tahun 2000 skema setara dengan pengguna. Sekarang telah rusak dan sangat berguna. Anda bisa membuang semua procs pengguna Anda dalam skema tertentu dan procs admin Anda yang lain. Berikan EXECUTE kepada pengguna / peran yang sesuai dan Anda selesai memberikan EXECUTE pada prosedur tertentu. Bagus.

Notasi titik akan seperti ini:

Server.Database.Schema.Object

atau

myserver01.Adventureworks.Accounting.Beans

Sam
sumber
2

A Schemaadalah kumpulan objek database yang mencakup struktur logis juga. Itu memiliki nama pengguna yang memilikinya. A databasedapat memiliki sejumlah Skema. Satu tabel dari database dapat muncul dalam dua skema berbeda dengan nama yang sama. Seorang pengguna dapat melihat skema apa pun yang telah ditetapkan untuk mereka, pilih hak istimewa.

Iswarya
sumber
2

Seperti yang dikatakan MusiGenesis dengan sangat baik, di sebagian besar basis data:

skema: database: tabel :: denah lantai: rumah: kamar

Tapi, di Oracle mungkin lebih mudah untuk memikirkan:

skema: database: tabel :: pemilik: rumah: kamar

cmrust
sumber
2

Bertentangan dengan beberapa jawaban di atas, inilah pemahaman saya berdasarkan pengalaman dengan masing-masing dari mereka:

  • MySQL: database/schema :: table
  • SQL Server: database :: (schema/namespace ::) table
  • Peramal: database/schema/user :: (tablespace ::) table

Harap perbaiki saya apakah tablespace opsional atau tidak dengan Oracle, sudah lama saya tidak ingat menggunakannya.

Sridhar Sarnobat
sumber
1

Dalam Skema oracle adalah satu pengguna di bawah satu basis data, Misalnya scott adalah satu skema dalam basis data orcl. Dalam satu basis data kita mungkin memiliki banyak skema seperti scott

prasadj
sumber
1

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 yang 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 dengannya, jika ia memiliki hak istimewa untuk melakukannya.

Ada beberapa alasan mengapa seseorang mungkin ingin menggunakan skema:

Untuk memungkinkan banyak pengguna menggunakan satu basis data tanpa mengganggu satu sama lain.

Untuk mengatur objek database ke dalam grup logis untuk membuatnya lebih mudah dikelola.

Aplikasi pihak ketiga dapat dimasukkan ke dalam skema terpisah sehingga mereka tidak bertabrakan dengan nama-nama benda lain.

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

Dokumentasi resmi dapat dirujuk https://www.postgresql.org/docs/9.1/ddl-schemas.html

Siddharth Kumar
sumber
0

Schemas berisi Database.

Database adalah bagian dari Skema.

Jadi, skema> basis data.

Skema berisi tampilan, prosedur tersimpan, basis data, pemicu, dll.

Rafael Lopes
sumber
0

Skema bukan rencana untuk seluruh database. Ini adalah paket / wadah untuk subset objek (ex.tables) di dalam database.

Ini bisa dikatakan bahwa Anda dapat memiliki beberapa objek (mis. Tabel) di dalam satu database yang tidak perlu masuk dalam kategori fungsional yang sama. Jadi, Anda dapat mengelompokkannya di bawah berbagai skema dan memberi mereka izin akses pengguna yang berbeda.

Yang mengatakan, saya tidak yakin apakah Anda dapat memiliki satu tabel di bawah beberapa skema. Management Studio UI memberikan dropdown untuk menetapkan skema ke tabel, dan karenanya memungkinkan untuk memilih hanya satu skema. Saya kira jika Anda melakukannya dengan TSQL, itu mungkin membuat 2 (atau beberapa) objek berbeda dengan Id objek yang berbeda.

Gadam
sumber
0

Skema basis data adalah cara untuk mengelompokkan objek secara logis seperti tabel, tampilan, prosedur tersimpan, dll. Pikirkan skema sebagai wadah objek. Dan tabel adalah kumpulan baris dan kolom. kombinasi semua tabel menghasilkan db.

vivek chandel
sumber
1
Kalimat-kalimat pertama itu sama persis .... stackoverflow.com/a/29042133/2308683
OneCricketeer