Tabelas

  • As tabelas existem dentro de schemas e devem estar de acordo com as regras de nomeação de objetos de schema;
  • As colunas de uma tabela são definidas como sendo de um certo tipo de dados.

Users, contas, schemas e objetos

  • Um usuário é uma pessoa que faz logon em um banco de dados e se conecta a uma conta de usuário;
  • Quando uma conta de usuário é criada, um schema também é criado;
  • Um schema consiste em objetos pertencentes à conta. Inicialmente ele está vazio, mas ele pode conter tabelas, views, códigos e outros objetos do banco de dados;
  • Os objetos de schema são objetos com um owner (proprietário). O identificador único para um objeto de um tipo específico não é apenas o seu nome: é seu nome com um prefixo do nome do schema ao qual ele pertence;
  • Exemplo: a tabela SCOTT.DEPT é uma tabela chamada DEPT que pertence ao usuário SCOTT. É possível existir uma tabela HR.DEPT, completamente diferente, sem nenhuma relação com a SCOTT.DEPT;
  • Diversos usuários são criados automaticamente durante a criação de um banco de dados;
  • Os principais são: SYS e SYSTEM;
  • SYS: owner do dicionário de dados, de centenas de pacotes PL/SQL, etc;
  • Os objetos do schema SYS nunca devem ser alterados com comandos DDL. E comandos DML podem corromper o dicionário de dados, causando um grande estrago no banco de dados;
  • SYSTEM: armazena vários objetos adicionais usados para aministração e monitoramento.

Regras para nomear objetos de schema

  • De 1 a 30 caracteres de comprimento, com exceção dos nomes de links, que podem ter até 128 caracteres;
  • Palavras reservadas (como SELECT, CREATE, UPDATE, TABLE, etc) não podem ser usadas como nomes de objetos;
  • Todos os nomes devem começar com uma letra de A a Z;
  • Os nomes podem conter letras, números, sublinhado (_), cifrão ($) ou o símbolo de hash (#);
  • Letras minúsculas são convertidas para letras maiúsculas automaticamente durante a criação do objeto;
  • Colocando o nome entre aspas (” “), todas as regras acima (com exceção do comprimento) podem ser quebradas. Porém, para referenciar estes objetos após a criação ele deve ser sempre especificado entre aspas. As mesmas restrições se aplicam aos nomes de colunas.

Namespace de objeto

Um namespace define um grupo de tipos de objeto, no qual os nomes devem ser identificados com exclusividade por schema e nome. Os objetos em diferentes namespaces podem compartilhar o mesmo nome.

Todos estes tipos de objeto compartilham o mesmo namespace:

  • Tabelas
  • Views
  • Sequences
  • Sinônimos privados
  • Procedures
  • Functions
  • Packages
  • Views materializadas
  • Tipos definidos pelo usuário

Portanto, é impossível criar uma view com o mesmo nome de uma tabela.

Já os tipos abaixo tem seu próprio namespace:

  • Índices
  • Constraints
  • Clusters
  • Triggers
  • Database Links
  • Dimensões

Portanto, é possível existir um índice com o mesmo nome de uma view, por exemplo. Mesmo assim, esta prática não é nada recomendada.

Referência Bibliográfica

Este post, assim como todos os posts sobre Certificação OCA deste blog, são trechos do livro “OCA Oracle Database 11g – Administração I (Guia do Exame 1Z0-052)”, da editora Bookman – www.bookman.com.br
Recomendo este livro a todos que pretendem estudar para o exame. Meus posts são apenas algumas dicas para quem já está estudando por outros materiais, e por isso exige uma base de conhecimento anterior em cada um dos capitulos. Para uma referência completa de estudos é recomendado a compra do livro correspondente, bem como a documentação oficial da Oracle.