domingo, 10 de março de 2013

Database - Namespaces

Neste post falarei sobre Namespaces, um conceito simples mas importante para dominar a nomenclatura de objetos.

Namespace é um espaço imaginário composto por um ou mais tipos de objetos. Ele pode pertencer ao banco de dados como um todo, a um schema ou até mesmo a um tipo de objeto do schema. Ele é gerenciado automaticamente pelo SGDB, não pode ser criado, alterado ou eliminado. Sua função é restringir o nome dos objetos no banco de dados.

Segue abaixo uma figura extraída de um livro de Steve O'Hearn que apresenta como são divididos os namespaces.
Os Index e Constraints possuem um namespace próprio dentro de cada schema, já Tables, Views, Sequences, Private Synonyms e User-Defined Types compartilham o mesmo namespace em cada schema. Com isto pode-se dizer que é possível ter um  table abc, com um index abc e uma constraint abc no schema_1 e outra table abc, com index abc e constraint abc no schema_2, porém em nenhum destes schemas seria possível criar uma view abc pois já possuem um table abc. Users, Roles e Public Synonyms pertencem a um namespace único para todo Database, ou seja não é possível ter uma role xyz se já houver um user xyz.

Nenhum comentário:

Postar um comentário