Şema ile tablo ve veritabanı arasındaki fark nedir?


155

Bu muhtemelen n00blike (veya daha kötü) bir sorudur. Ama her zaman bir şemayı veritabanında tablo tanımı olarak gördüm. Bu yanlış veya tamamen doğru değil. Veritabanı derslerimden fazla hatırlamıyorum.


3
Oracle şemasında sadece bir kullanıcıya atıfta bulunur. Bir kullanıcı oluşturduğumuzda şema şimdi oluşturulacak tablolar, görünümler, dizinler paketleri vb. Gibi
Ali786

Yanıtlar:


242

şema : veritabanı : tablo :: kat planı : ev : oda


81
Biraz şifreli, ama yanlış değil; Ama gerçekten kendini ilan eden bir n00b'nin bunu anlayacağını mı düşünüyorsun?
Stein G. Strindhaug

6
İyi benzetme. Şema sadece tablolardan daha fazlasına sahip olduğundan ve mavi baskılarda kablolama ve ısıtma ve sıhhi tesisat bulunduğundan "kat planı" nı "mavi baskılar" olarak değiştirirdim.
Paul Tomblin

4
"Şema" gerçekten sadece "plan" anlamına gelir. Tüm veritabanına ya da sadece bir tabloya veya görünüme atıfta bulunduğunu gördüm.
MusiGenesis

@ Paul: iyi puan. Aslında "planları" yazdım ama gerçekten "ev" (en azından bana değil) anlamına gelmez çünkü değiştirdim.
MusiGenesis

4
Evet, şemayı Oracle'da kullanıcı olarak görme eğilimindeyim. Yani tanımlar bile db'den db'ye değişir: D Ne kadar can sıkıcı.
Robert

123

Bir ilişki şeması bir tablo mantıksal tanımıdır - bu tablonun adı tanımlayan, ve her bir sütunun ismi ve türüdür. Bir plan ya da bir plan gibi. Bir veritabanı şeması bütün bir veritabanı için ilişki şema koleksiyon.

Bir tablo şeması tarafından tanımlanan özellikleri, her biri sıra (aka "küpe") 'in bir grup ile bir yapıdır. Tablolarda, belirli sütunlardaki değerlerin aranmasına yardımcı olacak dizinler de olabilir.

Bir veritabanı , resmi olarak herhangi bir veri topluluğudur. Bu bağlamda, veritabanı bir tablo koleksiyonu olacaktır. Bir DBMS (Veritabanı Yönetim Sistemi) yönetir ve bir veritabanı çalıştırır (vb MySQL, SQL Server, Oracle gibi) yazılımıdır.


1
Bir veritabanı şeması ayrıca dizinler, görünümler, vb.
İçerir

1
elbette bu doğru değil. bir veritabanı böyle bir tablolar topluluğu değildir. Örneğin bir tablonuz olmadan 30 veritabanınız olabilir.
Robert

@Robert - içinde tablo olmayan bir veritabanına sahip olmanın anlamı ne olurdu?
Paul Tomblin

16
Herhangi bir tablonuz olmasa bile, bu hala bir masa koleksiyonudur - boş bir masa koleksiyonudur.
Jon Skeet

1
@Ian: bir veritabanının da sınırlamalara sahip olacağını unutmayın - referans kısıtlamaları (birincil anahtarlar, yabancı anahtarlar), teklik kısıtlamaları ve kontrol kısıtlamaları. Ayrıca tetikleyiciler ve prosedürler içerebilir.
Jonathan Leffler

16

Özetle, şema tüm veritabanının tanımıdır, bu nedenle tabloları, görünümleri, saklı yordamları, dizinleri, birincil ve yabancı anahtarları vb. İçerir.


12

Bu özel gönderinin yalnızca Oracle ile ilgili olduğu ve Şema tanımının başka bir DB bağlamında değiştiği gösterilmiştir.

Muhtemelen sadece google kadar tür bir şey ama FYI terimleri en sinir bozucu şey olan tanımlarında değişiyor gibi görünüyor :)

Oracle'da bir veritabanı bir veritabanıdır. Kafanızda bunu veri dosyaları ve yineleme günlükleri ve veritabanının diskindeki gerçek fiziksel varlık olarak düşünün (örnek değil)

Şema etkin bir kullanıcıdır. Daha özel olarak, bir kullanıcının sahip olduğu tablolar / procs / dizinler vb. Kümesidir. Başka bir kullanıcının farklı bir şeması (sahip olduğu tablolar) vardır, ancak kullanıcı belirli ayrıcalıklara sahip oldukları şemaları da görebilir. Yani bir veritabanı yüzlerce şemadan ve her şema yüzlerce tablodan oluşabilir. Aynı veritabanında bulunan farklı şemalarda aynı ada sahip tablolarınız olabilir.

Tablo, bir tablo, veri içeren bir satır ve sütun kümesidir ve şemalarda bulunur.

SQL Server'da tanımlar farklı olabilir. Bunun farkında değilim.


11

Şema, OOP dünyasında görülen bir ana nesne gibi davranır. yani bir veritabanının kendisi değildir. belki bu bağlantı yararlıdır.

Ancak, MySQL'de ikisi eşdeğerdir. DATABASE veya DATABASES anahtar kelimesi, görüldüğü her yerde SCHEMA veya SCHEMAS ile değiştirilebilir. Örnekler:

  • VERİTABANI OLUŞTUR <=> ŞEMA OLUŞTUR
  • VERİTABANLARINI GÖSTER <=> ŞEMALLARI GÖSTER

MySQL belgeleri

SCHEMA & DATABASE terimleri DBMS'ye bağımlı bir şeydir.

Bir tablo ve yatay sıralar halinde (kendi adıyla tanımlanır) dikey sütun modeli kullanılarak düzenlenmiş veri elemanları (değerleri) bir kümesidir. Veritabanı bir veya daha fazla (genellikle) Tablo içerir . Ve verilerinizi bu tablolarda saklarsınız. Tablolar birbiriyle ilişkili olabilir ( Buraya bakınız ).


değerli cevap
sofs1

2

Şemalar hakkında daha fazla bilgi:

SQL 2005'te şema nesneleri gruplamanın bir yoludur. Nesneleri koyabileceğiniz bir kaptır. İnsanlar bu nesneye sahip olabilirler. Şema üzerinde haklar verebilirsiniz.

2000 yılında bir şema bir kullanıcıya eşitti. Şimdi serbest kırıldı ve oldukça yararlı. Tüm kullanıcı işlemlerinizi belirli bir şemaya, yönetici işlemlerinizi başka bir şemaya atabilirsiniz. Uygun kullanıcıya / role EXECUTE verin ve belirli prosedürler için EXECUTE vermeyi tamamladınız. Güzel.

Nokta gösterimi şu şekilde olur:

Server.Database.Schema.Object

veya

myserver01.Adventureworks.Accounting.Beans


2

A Schema, mantıksal yapıları da içeren bir veritabanı nesneleri koleksiyonudur. Sahibi olan kullanıcının adı vardır. A databaseherhangi bir sayıda Şema olabilir. Bir veritabanından bir tablo, aynı ada sahip iki farklı şemada görünebilir. Bir kullanıcı kendilerine seçme ayrıcalığı atanmış herhangi bir şemayı görüntüleyebilir.


2

MusiGenesis'in birçok veritabanında çok iyi ifade ettiği gibi:

şema: veritabanı: tablo :: kat planı: ev: oda

Ancak, Oracle'da şunları düşünmek daha kolay olabilir:

şema: veritabanı: tablo :: sahibi: ev: oda


2

Yukarıdaki cevapların aksine, her biriyle ilgili deneyime dayalı anlayışım:

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

Lütfen tablo alanının Oracle ile isteğe bağlı olup olmadığı konusunda beni düzeltin, bunları kullandığımı hatırladığımdan beri uzun zaman geçti.


1

Oracle şema bir veritabanı altında bir kullanıcı, örneğin scott orcl veritabanında bir şema. Bir veritabanında scott gibi birçok şema olabilir


1

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 katı bir şekilde ayrılmaz: Bir kullanıcı, ayrıcalıkları varsa, bağlı olduğu veritabanındaki şemaların herhangi birindeki nesnelere erişebilir.

Birinin şemaları kullanmak istemesinin birkaç nedeni vardır:

Birçok kullanıcının bir veritabanını birbirine müdahale etmeden kullanmasına izin vermek için.

Veritabanı nesnelerini daha yönetilebilir hale getirmek için mantıksal gruplar halinde düzenlemek.

Üçüncü taraf uygulamalar ayrı şemalara konulabilir, böylece diğer nesnelerin adlarıyla çarpışmazlar.

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

Resmi belgeler https://www.postgresql.org/docs/9.1/ddl-schemas.html


0

Şemalar Veritabanları içerir.

Veritabanları bir Şemanın parçasıdır.

Şemalar> veritabanları.

Şemalar görünümleri, saklı yordamları, veritabanlarını, tetikleyicileri vb. İçerir.


0

Şema, tüm veritabanı için bir plan değildir. Bir veritabanı içindeki nesnelerin bir alt kümesi (ör. Tablolar) için bir plan / kapsayıcıdır.

Bu, bir veritabanında aynı işlevsel kategoriye girmeyen birden çok nesneye (ör. Tablolar) sahip olabileceğiniz anlamına gelir. Böylece bunları çeşitli şemalar altında gruplayabilir ve farklı kullanıcı erişim izinleri verebilirsiniz.

Bununla birlikte, birden fazla şema altında bir tablonuz olup olmadığından emin değilim. Management Studio kullanıcı arayüzü, bir tabloya şema atamak için bir açılır liste sunar ve böylece yalnızca bir şema seçmeyi mümkün kılar. TSQL ile yaparsanız, farklı nesne Ids ile 2 (veya birden çok) farklı nesneler oluşturabilir sanırım.


0

Veritabanı şeması , tablolar, görünümler, saklı yordamlar vb. Gibi nesneleri mantıksal olarak gruplamanın bir yoludur. Bir şemayı bir nesne kabı olarak düşünün. Ve tablolar satır ve sütun koleksiyonlarıdır. tüm tabloların kombinasyonu bir db yapar.


1
Bu ilk cümleler tamamen aynı .... stackoverflow.com/a/29042133/2308683
OneCricketeer
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.