В чем разница между схемой, таблицей и базой данных? - PullRequest
132 голосов
/ 18 ноября 2008

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

Ответы [ 13 ]

214 голосов
/ 18 ноября 2008

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

104 голосов
/ 18 ноября 2008

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

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

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

16 голосов
/ 18 ноября 2008

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

11 голосов
/ 18 ноября 2008

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

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

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

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

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

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

10 голосов
/ 15 февраля 2012

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

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

  • СОЗДАТЬ БАЗУ ДАННЫХ <=> СОЗДАТЬ СХЕМУ
  • ПОКАЗАТЬ Базы данных <=> ПОКАЗАТЬ СХЕМЫ

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

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

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

2 голосов
/ 03 июля 2012

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

2 голосов
/ 18 ноября 2008

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

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

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

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

Server.Database.Schema.Object

или

myserver01.Adventureworks.Accounting.Beans

1 голос
/ 14 марта 2018

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

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

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

1 голос
/ 12 апреля 2014

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

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

Но в Oracle это может быть проще:

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

1 голос
/ 09 февраля 2010

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

...