Veritabanı vs kullanıcı vs şema arasındaki fark


Yanıtlar:


77

Oracle'da, kullanıcılar ve şemalar aslında aynı şeydir. Bir kullanıcının bir veritabanına bağlanmak için kullandığınız hesap olduğunu ve bir şemanın bu hesaba ait olan nesnelerin (tablolar, görünümler vb.) Olduğunu düşünebilirsiniz.

Yığın Taşması ile ilgili şu yazıya bakın: Oracle'da bir Kullanıcı ile Şema arasındaki fark? Daha fazla detay ve ekstra linkler için.

İfadeli kullanıcılar oluşturursunuz create user. Bu ayrıca şemayı "oluşturur" (başlangıçta boş) - böyle bir şema oluşturamazsınız, kullanıcıya bağlanır. Kullanıcı oluşturulduktan sonra, bir yönetici kullanıcıya tablolar oluşturmasını, selectsorgular yürütmesini insertve diğer her şeyi yapmasını sağlayacak ayrıcalıklar verebilir .

Veritabanı, oluşturduğunuz tüm kullanıcıları ve bunların verilerini (ve her şeyi çalıştıran önceden tanımlanmış sistem kullanıcılarını, tabloları, görüşleri vb.) İçeren şeydir. Veritabanının ne olduğu hakkında bir fikir edinmek için Kavramlar Kılavuzundaki (aslında, tüm sayfanın okunmaya değer olduğu - o sayfada daha yüksek kullanıcılar ve şemalar hakkında bir bölüm var) bulunan Oracle Database Architecture belgelerine bakmalısınız. veritabanı örneği - iki önemli kavram.

create databaseOracle yazılım yığınını yükledikten sonra , ifadeyle bir veritabanı oluşturabilirsiniz . Ancak dbca(veritabanı oluşturma asistanı) kullanarak başlamak daha kolaydır.


2

Terminolojinin bazen kullanılma şekline göre , a USERve a SCHEMAbiraz benzerdir. Fakat aynı zamanda büyük bir fark var. Bir USERbir çağrılabilir SCHEMA"eğer USER" herhangi bir nesne sahibi bir aksi takdirde sadece kalacaktır " USER". Bir kere USERen az bir nesneye sahip USERolunur , sonra yukarıdaki tanımlarınızın tümü sayesinde ... şimdi a olarak adlandırılabilir SCHEMA.


Sanırım burada işaret ettiğiniz şey, 'SCHEMA' teriminin çok yönlü olduğudur. Bir yandan veritabanı nesneleri için bir ad alanıdır. Ayrıca, Oracle'da (ve diğerlerinde?) Ancak PostgreSQL'de değil, tam olarak şema adını paylaşan kullanıcı tarafından oluşturulan nesneleri içeren bir veritabanı nesnesi ad alanıdır. Başka bir açıdan bakıldığında, bir veritabanındaki nesnelerin ilişkileri ve yapılarıdır, genellikle hem sahipliği hem de ad alanını yok sayarlar.
Andrew Wolfe

2

Farkı anlamaya başlamak için bence bu terminolojinin Oracle’ın yanlış olduğunu söylemeye başlamalıyız.

TRITON adında bir ERP'niz varsa, veritabanınızın TRITON olarak adlandırılmasını istediğinizi veya şirketimin JENNY EXPORT olarak adlandırılmasını istiyorsanız, veritabanımın JENNYEXP veya buna benzer bir şey olmasına karar verebileceğime, aynı adı taşıyan herhangi bir kullanıcıya gerek kalmayacağına inanıyorum. .

Oracle'da tabloları oluşturmadan önce bir KULLANICI oluşturmanız gerekir ve bu TABLES koleksiyonuna SCHEMA denir.

O zaman asıl kullanıcıları oluşturabilir ve bu örnekte olduğu gibi, bu örnekte olduğu gibi TRITON gibi bir veritabanıyla çalışmak için uygun izinler verebilirsiniz, bu arada, SQL DEVELOPER aracılığıyla bağlanırsanız, BİR BAĞLANTI İSMELİSİNİZ.

Biraz sinirli olduğumu biliyorum ama bu bana MS SQL SERVER adlandırma kuralını daha mantıklı kılıyor ve Oracle ile SQL SERVER'den daha önce çalıştığımı da ekleyebilirim.


1

Veri tabanı.

Veri tabanı, aslında verilerin depolandığı bir veri topluluğudur. DBMS Yazılımı ile Yüklenen Bilgisayara Bağlı Fiziksel Bellek Bileşeni Bu Bellek bileşenindeki verileri değiştirmek için, dbms yazılımı ile yüklenen bilgisayara Sunucu veya Veritabanı Sunucusu adı verilir. Hem Sunucu (Bilgisayar) hem de Veritabanı (bellek bileşeni) farklıdır. Duruma göre çoğu zaman aynı olarak ifade edildi.

KULLANICI ve ŞEMA

Her iki kelime, kullanıcı ve şema birbirinin yerine geçebilir, bu yüzden çoğu insan bu kelimeler üzerinde kafa karışıklığı yaratır.

kullanıcı

Kullanıcı veritabanına bağlanmak için bir hesaptır (Sunucu). CREATE USER IDENTIFIED BY kullanarak kullanıcı oluşturabiliriz.

Şema

Aslında Oracle Database, verileri işlemek için mantıksal ve fiziksel bir yapı içerir. Şema Ayrıca Veritabanındaki verileri işlemek için Mantıksal Yapı (Bellek Bileşeni). Kullanıcı oluşturulduğunda Oracle tarafından otomatik olarak oluşturulur. Bu i adıyla bir kullanıcı oluşturduk eğer schema.For Örnek ilişkili kullanıcı tarafından oluşturulan tüm nesneler içeriyor santhoshsonra oracle adlı bir şema oluşturur santhoshOracle mağazaları kullanıcı tarafından oluşturulan tüm nesneler santhoshiçinde santhoshşema.

İfadeyi kullanarak şema oluşturabiliriz CREATE SCHEMA, ancak Oracle otomatik olarak bu şema için bir kullanıcı oluşturur.

Şemayı DROP SCHEMA <name> RESTRICTifadeyi kullanarak bırakabiliriz , ancak şema içeren nesneleri silemez, bu nedenle şemayı bırakmak için boş olması gerekir. Burada kısıtlama sözcüğü sizi bu şemayı nesnelerle belirtmeye zorlar.

Şemasına nesne içeren bir kullanıcıyı bırakmaya çalışırsak, CASCADEOracle, nesne içeren bir kullanıcıyı silmenize izin vermediğinden, sözcük belirtmeliyiz .

DROP USER <name> CASCADE

Böylece Oracle, şemadaki nesneleri siler ve ardından kullanıcıyı otomatik olarak bırakır, bu şema nesnelerine diğer şemalardan görünümler ve özel eşanlamlılar geçersiz duruma geçer.


-2

Yukarıdaki ifadelerin Oracle'ın uygulaması için geçerli olduğunu ancak SQL Server ve PostgreSQL dahil diğer veritabanlarının şemayı yalnızca bir ad alanı, yani nesneleri gruplandırmanın bir yolu olarak kullandığını eklerdim. Örneğin, Hazırlama şeması, hazırlama verilerinde kullanılan tüm nesneleri gruplayabilir, Hesaplama şeması, Muhasebe ile ilgili tüm nesneleri gruplandırabilir.


"Yukarıdaki ifadeler" derken neyi kastettiğinizden emin değilsiniz ama SQL ve Oracle'daki şema bir izin grubudur. Başka bir deyişle, benzer nesneleri bir arada gruplamanın bir yolu değil, bir şemaya izinleri verebileceğiniz ve bu nedenle şema içindeki her nesneye izinler vermek zorunda kalmaktan kaçındığınız için izinlerin yönetimini kolaylaştıracak nesneleri gruplandırmanın bir yoludur.
Thronk

-4

Kullanıcı! = Şema, Kullanıcı ve Şema aynı değil ancak birbirlerinin yerine kullanılıyor


2
Lütfen nasıl farklı olduklarına ilişkin ayrıntıları ekleyin.
Erik

-4

Kullanmakta olduğunuz herhangi bir veritabanı yönetim sistemine dayalı olmayan kavramlara göre söylüyorum.

Kavramsal olarak: Veri tabanı: Sadece çoğu veriyi yönetmeyen ya da ilgisiz veri yığını .

Şema: Şema, yönetilmeyen ilgili / ilişkisiz verilerin resmi olarak yapılandırılmasını ifade eder, böylece şema tarafından sağlanan resmi tanımı anlayan bazı yönetim sistemleri tarafından yönetilebilir. Şema temel olarak genel bakış sağlamak için bir şemadır. Örneğin, XML oluşturmak için şema tanımlayan XSD var. RDBMS oluşturmak için temelde şemaları tanımlayan Kodlayıcı Kurallarını temel alan kendi şemalarını tanımlayan RDBMS'niz vardır.

Şimdi hakkında daha fazla bilgi edinmek istiyorsanız bu bağlantıya bakın .

Kullanıcı Veritabanına erişmek için şema tarafından belirtilen resmi dili kullanır.

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.