Это, вероятно, вопрос типа n00b (или того хуже). Но я всегда рассматривал схему как определение таблицы в базе данных. Это неправильно или не совсем правильно. Я мало что помню из своих курсов по базам данных.

схема : база данных : таблица :: план этажа : дом : комната
Немного загадочно, но правильно; но неужели вы думаете, что самопровозглашенный n00b это поймет?
Хорошая аналогия. Я бы изменил «план этажа» на «чертежи», потому что в схеме есть больше, чем просто таблицы, а чертежи содержат проводку, отопление и водопровод.
«Схема» на самом деле означает просто «план». Я видел, как он использовался для обозначения всей базы данных или только одной таблицы или представления.
@ Пол: хорошие моменты. Изначально я написал «чертежи», но изменил их, потому что на самом деле это не означает «дом» (по крайней мере, для меня).
@Stein: это довольно сурово по анбанму - он понял. :)
наверняка схемы есть в базе данных, поэтому порядок неправильный? Я говорю конкретно об Oracle, но база данных содержит множество схем.
@Robert: это может быть просто семантическим, но внутри Oracle «схема» больше синонимична «пользователю» или «владельцу».
Да, я склонен рассматривать схему как пользователь в Oracle. Так что определения даже меняются от db к db: D Как раздражает.
Я все время плохо говорю об Oracle, исходя из SQL Server.
Я согласен с Полом Томблином, я предпочитаю "чертежи"
@GordonG: вы когда-нибудь видели план дома?
@MusiGenesis: Просто спасибо за хороший, чистый и быстрый ответ. :)
возможно вместо плана этажа вы могли бы использовать "папку" для схем
Всего два цента. На самом деле Schema - это пользователь, когда вы на нее смотрите. Владелец базы данных ... dbo независимо от SQL-сервера, MySQL, Oracle ... каждый получает dbo означает владельца базы данных ... Поэтому я бы изменил аналогию Владелец: Дом: Комната Если я вхожу в систему как владелец / резидент - я могу получить доступ к каждому дому, в котором я собственные, и комнаты внутри дома. Если я не владелец - мне просто не повезло - или хорошая работа, чтобы взломать замок.
Обратите внимание, что слово «Схема» меняет определение для каждой СУБД.
Вкратце, схема - это определение всей базы данных, поэтому она включает таблицы, представления, хранимые процедуры, индексы, первичные и внешние ключи и т. д.
схема отношений - это логическое определение таблицы - оно определяет имя таблицы, а также имя и тип каждого столбца. Это как план или план. схема базы данных - это набор схем отношений для всей базы данных.
стол - это структура с набором строк (также называемых «кортежами»), каждая из которых имеет атрибуты, определенные схемой. Таблицы также могут иметь индексы для помощи в поиске значений в определенных столбцах.
база данных - это формально любой набор данных. В этом контексте база данных будет набором таблиц. СУБД (Система управления базами данных) - это программное обеспечение (например, MySQL, SQL Server, Oracle и т. д.), Которое управляет базой данных и запускает ее.
Схема базы данных также включает индексы, представления и т. д.
конечно, это неверно. база данных - это не набор таблиц как таковых. У вас может быть 30 баз данных, например, без одной таблицы.
@Robert - какой смысл иметь базу данных без таблиц?
Даже если у вас нет таблиц, это все равно набор таблиц - это набор таблиц пустой.
Нет смысла думать о том, что определение базы данных не меняется только потому, что там есть / нет таблиц. Согласен, я ожидал найти таблицы в базе данных :)
@Robert: коллекция включает пустой набор.
@Ian: не забывайте, что база данных также будет иметь ограничения - ссылочные ограничения (первичные ключи, внешние ключи), ограничения уникальности и ограничения проверки. Он также может включать триггеры и процедуры.
Кроме того, @Robert, я думаю, что «база данных», о которой вы говорите, - это термин, используемый коммерческими поставщиками и имеющий особое значение с точки зрения конфигурации. Более «формальное» определение базы данных - это просто «набор данных» (который включает базы данных СУБД, электронные таблицы и т. д.).
Как новичок, ИМХО, я чувствую, что больше всего на свете, это ответ, который на самом деле должен быть отмечен правильно.
плюс один к комментарию Джона Скита, независимо от того, что он говорит
очень информативно указать, что существует связь «схема» и «схема» базы данных. Большинство других ответов здесь просто игнорируют это и говорят с точки зрения конкретной реализации базы данных.
Было показано, что эта конкретная публикация относится только к Oracle, а определение схемы изменяется в контексте другой БД.
Вероятно, это своего рода вещь, чтобы просто погуглить, но, к вашему сведению, термины, похоже, различаются по своим определениям, что является наиболее раздражающей вещью :)
В Oracle база данных - это база данных. В своей голове подумайте об этом как о файлах данных и журналах повторного выполнения и о фактическом физическом присутствии на диске самой базы данных (то есть не экземпляра).
Схема фактически является пользователем. В частности, это набор таблиц / процессов / индексов и т. д., Принадлежащих пользователю. Другой пользователь имеет другую схему (таблицы, которыми он владеет), однако пользователь также может видеть любые схемы, для которых он имеет выбранные права. Таким образом, база данных может состоять из сотен схем, а каждая схема - из сотен таблиц. У вас могут быть таблицы с одинаковыми именами в разных схемах, которые находятся в одной базе данных.
Таблица - это таблица, набор строк и столбцов, содержащих данные и содержащихся в схемах.
Например, определения могут отличаться в SQL Server. Я не знаю об этом.
Подробнее о схемах:
В SQL 2005 схема - это способ группировки объектов. Это контейнер, в который можно складывать предметы. Люди могут владеть этим объектом. Вы можете предоставить права на схему.
В 2000 году схема была эквивалентна пользователю. Теперь он вышел из строя и весьма полезен. Вы можете использовать все пользовательские процессы в одной схеме, а процессы администратора - в другой. Предоставьте EXECUTE соответствующему пользователю / роли, и вы закончите с предоставлением EXECUTE для определенных процедур. Хороший.
Точечная запись будет выглядеть так:
Server.Database.Schema.Object
или же
myserver01.Adventureworks.Accounting.Beans
В схеме оракула один пользователь в одной базе данных, например, scott - это одна схема в базе данных orcl. В одной базе данных может быть много схем, таких как scott
Схемы содержат базы данных.
Базы данных являются частью схемы.
Итак, схемы> базы данных.
Схемы содержат представления, хранимые процедуры, базы данных, триггеры и т. д.
Схема поведения выглядит как родительский объект в мире ООП. так что это не сама база данных. может быть, эта ссылка пригодится.
Но в MySQL они эквивалентны. Ключевое слово БАЗА ДАННЫХ или БАЗЫ ДАННЫХ можно заменить на СХЕМУ или СХЕМУ, где бы она ни появлялась. Примеры:
Термины SCHEMA & DATABASE зависят от СУБД.
Стол - это набор элементов данных (значений), который организован с использованием модели вертикальных столбцов (которые идентифицируются по их имени) и горизонтальных строк. База данных содержит один или несколько (обычно) Столы. И вы храните свои данные в этих таблицах. Таблицы могут быть связаны друг с другом (Глянь сюда).
ценный ответ
Schema - это набор объектов базы данных, который также включает в себя логические структуры.
На нем указано имя пользователя, которому он принадлежит.
database может иметь любое количество схем.
Одна таблица из базы данных может отображаться в двух разных схемах с одинаковым именем.
Пользователь может просматривать любую схему, для которой ему назначена привилегия выбора.
Схема - это не план для всей базы данных. Это план / контейнер для подмножества объектов (например, таблиц) внутри базы данных.
Это означает, что вы можете иметь несколько объектов (например, таблиц) внутри одной базы данных, которые не обязательно подпадают под одну и ту же функциональную категорию. Таким образом, вы можете сгруппировать их по разным схемам и дать им разные права доступа.
Тем не менее, я не уверен, можно ли иметь одну таблицу в нескольких схемах. Пользовательский интерфейс Management Studio предоставляет раскрывающийся список для назначения схемы таблице, что позволяет выбрать только одну схему. Я думаю, если вы сделаете это с помощью TSQL, он может создать 2 (или несколько) разных объектов с разными идентификаторами объектов.
База данных схема - это способ логически группировать объекты, такие как таблицы, представления, хранимые процедуры и т. д. Думайте о схеме как о контейнере объектов. А таблицы - это наборы строк и столбцов. комбинация всех таблиц составляет db.
Эти первые предложения абсолютно такие же .... stackoverflow.com/a/29042133/2308683
Как прекрасно выразился MusiGenesis, в большинстве баз данных:
schema : database : table :: floor plan : house : room
Но в Oracle может быть проще подумать о:
схема: база данных: таблица :: владелец: дом: комната
В отличие от некоторых из приведенных выше ответов, вот мое понимание, основанное на опыте работы с каждым из них:
database/schema :: tabledatabase :: (schema/namespace ::) tabledatabase/schema/user :: (tablespace ::) tableПожалуйста, поправьте меня относительно того, является ли табличное пространство необязательным или нет в Oracle, я давно не помню, как использовал их.
База данных содержит одну или несколько именованных схем, которые, в свою очередь, содержат таблицы. Схемы также содержат другие виды именованных объектов, включая типы данных, функции и операторы. Одно и то же имя объекта может использоваться в разных схемах без конфликтов; например, и schema1, и myschema могут содержать таблицы с именем mytable. В отличие от баз данных, схемы не разделены жестко: пользователь может получить доступ к объектам в любой из схем в базе данных, к которой он подключен, если у него есть права на это.
Есть несколько причин, по которым можно захотеть использовать схемы:
Чтобы позволить многим пользователям использовать одну базу данных, не мешая друг другу.
Организовать объекты базы данных в логические группы, чтобы сделать их более управляемыми.
Сторонние приложения можно поместить в отдельные схемы, чтобы они не конфликтовали с именами других объектов.
Схемы аналогичны каталогам на уровне операционной системы, за исключением того, что схемы не могут быть вложенными.
Официальную документацию можно сослаться https://www.postgresql.org/docs/9.1/ddl-schemas.html
Согласно https://www.informit.com/articles/article.aspx?p=30669
The names of all objects must be unique within some scope. Every database must have a unique name; the name of a schema must be unique within the scope of a single database, the name of a table must be unique within the scope of a single schema, and column names must be unique within a table. The name of an index must be unique within a database.
В схеме оракула просто ссылается на пользователя. То есть, когда мы создаем пользователя, схема будет создана, теперь мы можем добавлять таблицы, представления, индексировать пакеты и т. д. Как