2014-10-31 4 views
2

При подключении к конкретной таблицы в базе данных, я мог бы поставить следующую информациюРазница между именем базы данных и именем схемы в SQLAlchemy?

Database: protocol://user:[email protected]:port/dbname 
Table: myschema.mytable 

Какая разница здесь между dbname и myschema? Их использование кажется излишним для меня.

ответ

4

Схема - это группировка объектов базы данных (таблицы, представления и т. Д.). within база данных. Это способ логического разбиения объектов в базе данных.

Предполагая, что у пользователя есть соответствующие разрешения, они могут обращаться к таблицам в нескольких схемах с одним подключением к базе данных. Объединение таблиц (даже из нескольких схем) также тривиально.

Когда объекты хранятся в нескольких базах данных, для доступа к этим объектам требуется подключение к базе данных, а объединения обычно сложнее (ваши РСУБД или ОРМ могут скрыть некоторые из этих трудностей). Каждая база данных также будет иметь отдельные логины.

1

После немного большего чтения, я считаю, что схемы - это просто способы или разбить БД. Это может быть полезно как для управления разрешением, так и для обеспечения уникальности таблиц с одинаковым именем. Таким образом, можно собрать набор таблиц, представлений, триггеров, в схему и установить там разрешения. Затем я могу установить perms для этой схемы и передать ее пользователям.

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

+0

Как это определение/использование отличается от использования нескольких баз данных? – MRocklin

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