В чем разница между схемой, таблицей и базой данных?

155

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

anbanm
источник
3
В оракуле схема просто передается пользователю. То есть, когда мы создаем пользователя, схема будет создана, теперь мы можем добавлять таблицы, представления, индексировать пакеты и т. Д.
Ali786

Ответы:

242

схема : база данных : таблица :: план этажа : дом : комната

MusiGenesis
источник
81
Немного загадочно, но не неправильно; но вы действительно думаете, что самопровозглашенный n00b это поймет?
Стейн Г. Стриндхауг
6
Хорошая аналогия. Я бы поменял «план этажа» на «синие отпечатки», потому что схема содержит больше, чем просто таблицы, а синие отпечатки содержат проводку, отопление и водопровод.
Пол Томблин
4
«Схема» на самом деле просто означает «план». Я видел, как он ссылался на всю базу данных, или только на одну таблицу или представление.
MusiGenesis
@ Пол: хорошие моменты. Первоначально я написал «чертежи», но изменил их, потому что это не означает «дом» (как минимум, не для меня).
MusiGenesis
4
Да, я склонен рассматривать схему как пользователя в Oracle. Так что определения даже варьируются от дБ до дБ: D Как раздражает.
Роберт
123

Отношение схема является логическим определением таблицы - это определяет , что имя таблицы, и то , что имя и типа каждого столбца. Это как план или план. Схема базы данных представляет собой набор реляционных схем для всей базы данных.

Таблица представляет собой структуру с кучей строк ( так называемый «кортежей»), каждый из которых имеет атрибуты , определенные в схеме. Таблицы могут также иметь индексы для поиска значений в определенных столбцах.

База есть, формально, любой набор данных. В этом контексте база данных будет представлять собой набор таблиц. СУБД (система управления базами данных) является программное обеспечение (например , MySQL, SQL Server, Oracle и т.д.) , которая управляет и управляет базой данных.

Ян Варли
источник
1
Схема базы данных также включает в себя индексы, представления и т. Д.
Пол Томблин,
1
конечно, это не правильно. база данных не является набором таблиц как таковых. Например, вы можете иметь 30 баз данных без одной таблицы.
Роберт
@ Роберт - какой смысл иметь базу данных без таблиц в ней?
Пол Томблин
16
Даже если у вас нет таблиц, это все еще коллекция таблиц - это пустая коллекция таблиц.
Джон Скит
1
@Ian: не забывайте, что база данных также будет иметь ограничения - ссылочные ограничения (первичные ключи, внешние ключи), ограничения уникальности и ограничения проверки. Это может также включать триггеры и процедуры.
Джонатан Леффлер
16

В двух словах, схема - это определение всей базы данных, поэтому она включает таблицы, представления, хранимые процедуры, индексы, первичные и внешние ключи и т. Д.

Грэм Перроу
источник
12

Было показано, что эта конкретная публикация относится только к Oracle и определение схемы изменяется в контексте другой БД.

Вероятно, это просто гугл, но термины FYI, кажется, различаются в своих определениях, что является самой раздражающей вещью :)

В Oracle база данных - это база данных. В вашей голове думайте об этом как о файлах данных, журналах повторов и фактическом физическом присутствии на диске самой базы данных (т.е. не экземпляра).

Схема фактически является пользователем. Более конкретно, это набор таблиц / procs / indexes и т. Д., Принадлежащих пользователю. У другого пользователя есть другая схема (таблицы, которыми он / она владеет), однако пользователь также может видеть любые схемы, на которых у него есть права доступа. Таким образом, база данных может состоять из сотен схем, а каждая схема - из сотен таблиц. Вы можете иметь таблицы с одинаковыми именами в разных схемах, которые находятся в одной базе данных.

Таблица - это таблица, набор строк и столбцов, содержащих данные и содержащиеся в схемах.

Например, определения могут быть разными в SQL Server. Я не знаю об этом.

Роберт
источник
11

Схема ведет себя как родительский объект, как видно в мире ООП. так что это не сама база данных. Может быть, эта ссылка полезна.

Но, в MySQL, два эквивалентны. Ключевое слово DATABASE или DATABASES может быть заменено на SCHEMA или SCHEMAS, где бы оно ни появлялось. Примеры:

  • СОЗДАТЬ БАЗУ ДАННЫХ <=> СОЗДАТЬ СХЕМУ
  • ПОКАЗАТЬ БАЗЫ ДАННЫХ <=> SCHEMAS

Документация MySQL

Термины SCHEMA и DATABASE зависят от СУБД.

Таблица представляет собой набор элементов данных (значений) , который структурирован с использованием модели вертикальных колонок (которые идентифицированы по их имени) и горизонтальными рядами. База данных содержит одну или несколько (обычно) таблиц . И вы храните свои данные в этих таблицах. Таблицы могут быть связаны друг с другом ( см. Здесь ).

earthdan
источник
Ценный ответ
sofs1
2

Больше на схемах:

В SQL 2005 схема - это способ группировки объектов. Это контейнер, в который вы можете помещать объекты. Люди могут владеть этим объектом. Вы можете предоставить права на схему.

В 2000 году схема была эквивалентна пользователю. Теперь это вырвалось на свободу и весьма полезно. Вы можете добавить все свои пользовательские процессы в одну схему, а ваши административные - в другую. Предоставьте EXECUTE соответствующему пользователю / роли, и вы закончили с предоставлением EXECUTE для определенных процедур. Ницца.

Точечная запись будет выглядеть так:

Server.Database.Schema.Object

или

myserver01.Adventureworks.Accounting.Beans

Сэм
источник
2

A Schemaпредставляет собой набор объектов базы данных, который также включает в себя логические структуры. У него есть имя пользователя, которому он принадлежит. А databaseможет иметь любое количество схем. Одна таблица из базы данных может появляться в двух разных схемах с одинаковыми именами. Пользователь может просматривать любую схему, для которой ему была назначена привилегия выбора.

Iswarya
источник
2

Как замечательно выразился MusiGenesis, в большинстве баз данных:

схема: база данных: таблица :: план этажа: дом: комната

Но в Oracle может быть проще думать:

схема: база данных: таблица :: владелец: дом: комната

cmrust
источник
2

Вопреки некоторым из приведенных выше ответов, мое понимание основано на опыте каждого из них:

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

Пожалуйста, исправьте меня в том, является ли табличное пространство необязательным или нет в Oracle, я уже давно не использую их.

Шридхар Сарнобат
источник
1

В oracle Schema - это один пользователь в одной базе данных, например, scott - это одна схема в базе данных orcl. В одной базе данных у нас может быть много схем типа Скотта

prasadj
источник
1

База данных содержит одну или несколько именованных схем, которые в свою очередь содержат таблицы. Схемы также содержат другие виды именованных объектов, включая типы данных, функции и операторы. Одно и то же имя объекта может использоваться в разных схемах без конфликтов; например, и schema1, и myschema могут содержать таблицы с именем mytable. В отличие от баз данных, схемы жестко не разделены: пользователь может получить доступ к объектам в любой из схем в базе данных, к которой он подключен, если у него есть для этого полномочия.

Существует несколько причин, по которым можно использовать схемы:

Позволить многим пользователям использовать одну базу данных, не мешая друг другу.

Организовать объекты базы данных в логические группы, чтобы сделать их более управляемыми.

Сторонние приложения могут быть помещены в отдельные схемы, чтобы они не конфликтовали с именами других объектов.

Схемы аналогичны каталогам на уровне операционной системы, за исключением того, что схемы не могут быть вложенными.

Официальную документацию можно отсылать https://www.postgresql.org/docs/9.1/ddl-schemas.html.

Сиддхарт Кумар
источник
0

Схемы содержат базы данных.

Базы данных являются частью схемы.

Итак, схемы> базы данных.

Схемы содержат представления, хранимые процедуры, базы данных, триггеры и т. Д.

Рафаэль Лопес
источник
0

Схема не является планом для всей базы данных. Это план / контейнер для подмножества объектов (ex.tables) внутри базы данных.

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

Тем не менее, я не уверен, можете ли вы иметь одну таблицу в нескольких схемах. Пользовательский интерфейс Management Studio предоставляет раскрывающийся список для назначения схемы таблице, что позволяет выбирать только одну схему. Я предполагаю, что если вы сделаете это с TSQL, он может создать 2 (или несколько) разных объектов с разными идентификаторами объектов.

Gadam
источник
0

Схема базы данных - это способ логически группировать объекты, такие как таблицы, представления, хранимые процедуры и т. Д. Думайте о схеме как о контейнере объектов. А таблицы - это коллекции строк и столбцов. Сочетание всех таблиц составляет БД.

Вивек Шандел
источник
1
Эти первые предложения точно такие же ... stackoverflow.com/a/29042133/2308683
OneCricketeer