2014-10-16 5 views
1

У меня есть база данных Postgres с некоторыми схемами (все они имеют одинаковую структуру), я хочу знать, есть ли возможность изменить структуру (имена таблиц, новые столбцы и т. Д.) Для всех схемы в той же базе данных. Возможно ли это, или какова цель схем в базе данных?Изменение структуры схем в базе данных PostgreSQL

Спасибо.

+0

http://youtu.be/ymb9gsl_x1U – Taylor714

+0

Извините - нажмите ввод по ошибке. Схема описывает общую организацию базы данных и то, как все таблицы внутри базы данных связаны (или не связаны) друг с другом. Таблицы могут быть изменены, но трудно дать исчерпывающий ответ без дополнительной информации. Это видео может помочь объяснить, как работают схемы и таблицы. http://youtu.be/ymb9gsl_x1U Если вы хотите углубиться, Стэнфордский университет предлагает класс базы данных онлайн бесплатно. https://class.stanford.edu/courses/Engineering/db/2014_1/about – Taylor714

ответ

2

Я собираюсь сосредоточиться на второй половине ваш вопрос, потому что я думаю, что это будет ответить на первую половину (и я не уверен, что я понимаю первая половина).

Какая цель из схем в базе данных?


Это смутило меня, когда я первый перешел с MySQL на PostgreSQL. Схема Postgres по сути такая же, как и база данных MySQL. На самом деле, в соответствии с MySQL Reference Manual:

В MySQL Физически схема является синонимом базы данных.


Это ставит вопрос о том, что база данных PostgreSQL, то? Из PostgreSQL Documentation:

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


Так база данных PostgreSQL в основном коллекция схем? Кажется, бессмысленно, зачем нам нужен этот шаг в иерархии? Давайте посмотрим на документы для PostgreSQL schema:

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

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


Так, в PostgreSQL, схема содержит таблицы, функции и т.д.И база данных управляет связью пользователей и групп и доступом/ролями к конкретным кластерам схем. Как правило, я работаю под одной базой данных и имею информацию, разбитую на схемы для сегментирования информации.

+2

Стандарт SQL определяет два уровня «пространства имен»: каталоги и схемы. «Каталог» может содержать несколько «схем». База данных Postgres (в определенной степени) соответствует концепции каталога в стандарте SQL. Это, по сути, так же, как SQL Server управляет базами данных и схемами. Другие СУБД (например, H2, HSQLDB) имеют аналогичные двухуровневые пространства имен. –

+0

Спасибо, @a_horse_with_no_name, не знал этого, и это очень полезно для моего ответа :) – Sam

Смежные вопросы