MySQL'de Şema / Veritabanı Arasındaki Fark


290

MySQL'de şema ve veritabanı arasında fark var mı? SQL Server'da, veritabanı şemaya göre daha üst düzey bir kapsayıcıdır.

Bunu okudum Create Schemave Create DatabaseMySQL'de aynı şeyi yapıyorum, bu da şemaların ve veritabanlarının aynı nesneler için farklı kelimeler olduğuna inanmamı sağlıyor.


Aslında MySQL bir tür veritabanı schemaolduğu için daha iyi olduğunu söyleyebilirim databaseve birkaç databaseve bazen de usebir database, hedefi kaçırmak için birçok arama yapan bir içerir .
theaws.blog

Yanıtlar:


335

MySQL Sözlüğünde tanımlandığı gibi :

MySQL'de fiziksel olarak bir şema bir veritabanı ile eşanlamlıdır . Anahtar kelimesini yerini alabilir SCHEMAyerine DATABASEkullanılarak, örneğin MySQL SQL sözdizimi CREATE SCHEMAyerine CREATE DATABASE.

Diğer bazı veritabanı ürünleri bir ayrım yapar. Örneğin, Oracle Database ürününde şema , veritabanının yalnızca bir bölümünü temsil eder: tablolar ve tek bir kullanıcının sahip olduğu diğer nesneler.


74
"Bazı diğer veritabanı ürünleri" gerçekten hemen hemen her diğer veritabanı (belki de SQLite hariç, ama bu anlaşılabilir) için bir örtmece olduğunu düşünüyorum.
Stefan Steiger

5
Şema veritabanı ile eşanlamlı yapmak ilginç - her zaman kullanıcı nesneleri ile ilişkilendirmişti .. Ve esnek bir tekne yükü ve dinamik sorgular yapmak için bazı ilginç yollar sağlayan kullanıcı / şema kavramını ayıran SQLServer'ın samimi bir söz.
Gerard ONeill

"Şema" yı veritabanı nesneleri grubu olarak tanımlamanın can sıkıcı yanı, örneğin en.wikipedia.org/wiki/Database_schema gibi kelimenin eski anlamını aşırı yüklemesidir .
Mark E. Haase

1
@mehaase her ikisi de kelimenin eski anlamıdır. Oracle, SQL3'ten bile daha önce şemalara sahipti (1999), ancak diğer veritabanları tam gelişmiş veritabanları basacak gibi davranıyordu. Aslında Oracle, başkalarının sunucu veya sunucu örneği olarak adlandırdığı "veritabanı" olarak adlandırır - farklı ikili dosyalar, farklı yürütülebilir dosyalar, farklı bağlantı noktaları.
Panagiotis Kanavos

61

Veritabanı sunucusuna bağlıdır. MySQLumrumda değil, temelde aynı şey.

Oracle,, DB2ve diğer kurumsal düzey veritabanı çözümleri bir ayrım yapar. Genellikle şema bir tablolar topluluğudur ve bir veritabanı şemalar topluluğudur.


6
Hatta Microsoft SQL Server olarak çok benzer bir ayrım vardır Oracleve DB2bu durum için.
RBT

2
MySQL'de "veritabanı" ve "şema" temelde aynı şey değildir; tam olarak aynı şeydir (örneğin create databaseve create schemaeşanlamlıdır). Oracle şeması kullanıcı ile eşanlamlıdır (belki daha doğru bir şekilde şema, bir kullanıcı altında oluşturulan tüm nesnelerin bir listesidir). MSSQL, üçünü de ayırır (ve sonuç olarak, bir tabloya farklı bir veritabanından erişirken, adın hem veritabanı hem de şema tarafından nitelendirilmesi gerekir database1.dbo.table2)
Mike Rosoft

17

Atıfta MySQL belgelerinde ,

CREATE DATABASE verilen ada sahip bir veritabanı oluşturur. Bu ifadeyi kullanmak için veritabanı için CREATE ayrıcalığına ihtiyacınız vardır. CREATE SCHEMA, MySQL 5.0.2 itibariyle CREATE DATABASE ile eşanlamlıdır.


7

PostgreSQL, bir veritabanının alt kümesi olan şemaları destekler: https://www.postgresql.org/docs/current/static/ddl-schemas.html

Bir veritabanı, tablolar içeren bir veya daha fazla adlandırılmış şema içerir. Şemalar ayrıca veri türleri, işlevler ve işleçler dahil olmak üzere başka türde adlandırılmış nesneler içerir. Aynı nesne adı farklı şemalarda çakışma olmadan kullanılabilir; örneğin, hem şema1 hem de myschema mytable adlı tablolar içerebilir. Veritabanlarının aksine, şemalar kesin olarak ayrılmaz: Bir kullanıcı, ayrıcalıklarına sahip oldukları takdirde, bağlı oldukları veritabanındaki şemaların herhangi birindeki nesnelere erişebilir.

Şemalar, şemaların yuvalanamaması dışında, işletim sistemi düzeyindeki dizinlere benzer.

Benim düşünceme göre, MySQL bir referans veritabanı değildir. MySQL'i asla açıklama için alıntı yapmamalısınız. MySQL standart olmayan SQL uygular ve bazen desteklemediği özellikleri talep eder. Örneğin, MySQL'de CREATE şeması yalnızca bir VERİTABANI oluşturur. Gerçekten yanıltıcı kullanıcılar.

Bu tür sözcük dağarcığına DBA'lar tarafından "MySQLism" denir.


2
Ve sonra yeni başlayanlar için karışıklık eklemek için "şema" var :)
Zeni

@Zeni MySQL'de bir şema nedir?
Bulabildiğim

@ Alf47 "şema" sadece "şema" kelimesinin çoğul halidir. "şemaları" da kabul edilebilir, ama fantezi değil :)
jobo3208

6

MySQL şeması veritabanı eşanlamlıdır . MySQL'e atlayan yeni başlayanlar için oldukça kafa karıştırıcı ve ilk gün şema kelimesini buluyor , bu yüzden her ikisi de aynı olduğu için endişelenecek bir şey yok.

İlk kez MySQL başlarken size böylece çalışmak için (başka bir veritabanı sistemi gibi) bir veritabanı oluşturmak için gereken CREATE SCHEMA bir şey değildir ama create database

Diğer bazı veritabanı sistem şemaları, veritabanının bir bölümünü veya Tablolar koleksiyonunu temsil eder ve şema koleksiyonu bir veritabanıdır.


3

Evet, insanlar bu terimleri MySQL ile ilgili olarak birbirinin yerine kullanır. Çoğu zaman insanların uygunsuz bir şekilde tüm veritabanı sunucusuna veritabanı olarak başvurduklarını duyarsınız.


0

Örneğin Microsoft SQL Server, Şemalar tek bir kullanıcıya başvurur ve sunucuyu, veritabanını, şemayı, tabloları ve nesneleri belirtme sırasına göre bir kapsayıcısının başka bir düzeyidir.

Örneğin, dbo.table_a dosyasını güncellemek istediğinizde ve sözdizimi UPDATE tablosu gibi tam olarak nitelendirilmediğinde. DBMS amaçlanan tabloyu kullanmaya karar veremez. Temelde DBMS varsayılan olarak myuser.table_a yöntemini kullanır


Şemalar tek bir kullanıcıya aittir . Varsayılan olarak, veritabanında oluşturulan bir kullanıcı varsayılan şeması olarak dbo şemasını kullanır. Tam nitelikli olmayan bir tablo başvurusu için kullanılan varsayılan şema, o kullanıcı için ayarlanan şemadır.
Gerard ONeill

SQL Server'ın eski sürümlerinde, bir kullanıcının silinmesi onunla ilişkilendirilmiş şemayı kullanılamaz hale getirir. Günümüzde kullanıcı ve şema arasındaki eşleme daha az katıdır. Ayrıca, veritabanı sahibine ve tüm şemalara tek bir sahte hesap yapmak en iyi uygulama olarak kabul edilir.
Jonathan Allen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.