Esquema E/R e Implementações Relacional e Objeto-Relacional: Parte 1 Introdução Um dos recursos orientados a objetos é a habilidade de criar e usar tipos de dados que se baseiam em um agrupamento de outros tipos de dados. Os objetos definidos pelo usuário podem então, aparecer e serem usados como qualquer outro tipo de dados. O Objetivo deste artigo é mostrar um Esquema Entidade/Relacionamento simples, o mapeamento para esquema relacional (com implementação) e a implementação objeto-relacional. Esquema E/R - Entidade/Relacionamento A técnica de modelagem de dados mais difundida é a abordagem entidade/relacionamento (E/R). Os conceitos básicos da abordagem E/R são: entidade, relacionamento e atributo. Para explicar os conceitos da Modelagem E/R vamos usar uma parte de uma aplicação simples de um sistema acadêmico, que possui professores, suas disciplinas e alunos dessas disciplinas. Este módulo está representado graficamente na Figura 1.
Uma entidade corresponde ao conjunto de objetos da realidade modelada sobre os quais deseja-se manter informações no banco de dados. Uma entidade é representada através de um retângulo que contém o nome da entidade. Na Figura 1 são apresentadas três entidades: PROFESSOR, DISCIPLINA e ALUNO. O retângulo PROFESSOR representa o conjunto de todos os professores sobre os quais se deseja manter informações no banco de dados. Caso se deseje referir a um objeto particular (um determinado professor ou determinado aluno) fala-se em uma entidade e não um conjunto de entidades. Implementação Relacional O modelo Relacional foi definido E. F Cood, em 1970. A grande aceitação comercial foi a partir de meados da década de 80. As razões dessa grande aceitação foram simplicidade dos conceitos básicos e poder dos operadores de manipulação. O Esquema Entidade/Relacionamento representado na Figura 1, uma vez mapeado para o Esquema Relacional, resultará nas seguintes tabelas. PROFESSOR(codp,nome) Isso se dá tendo em vista as regras de mapeamento a seguir. REGRA 1: Para cada entidade não fraca no esquema E/R, criar uma tabela que inclui todos os atributos não multivalorados da entidade do Esquema E/R. Neste passo foram criadas as relações PROFESSOR, DISCIPLINA e ALUNO com os atributos correspondentes de cada entidade. Vale ressaltar que o atributo fone não foi colocado neste passo para a relação PROFESSOR tendo em vista que é um atributo multi-valorado e vai ser tratado na Regra 4. REGRA 2: Para cada relacionamento 1:N no Esquema E/R: (i) identificar a relação que representa a entidade do lado N; (ii) incluir como chave estrangeira a chave primária da relação que representa a entidade do lado 1; e (iii) incluir os atributos do relacionamento na relação. No exemplo da Figura 1, existe um relacionamento de 1:N, envolvendo as entidades PROFESSOR e DISCIPLINA, cujo relacionamento é LECIONA. A relação que representa a entidade do lado N é a DISCIPLINA. Deve ser incluído a chave da relação PROFESSOR, que representa a Entidade PROFESSOR do lado 1, como chave estrangeira na Relação DISCIPLINA. Se existissem atributos de relacionamentos deveriam ser incluídos também. REGRA 3: Para cada relacionamento M:N no Esquema E/R: (i) criar uma nova relação para representar o relacionamento; (ii) incluir como chave estrangeira as chaves primárias das relações que participam do relacionamento; (iii) essas chaves combinadas formarão a chave primária da relação; (iv) incluir também eventuais atributos do relacionamento. Através da Figura 1, tem-se o relacionamento CURSA, que associa as Entidades DISCIPLINA e ALUNO. Para representar esse relacionamento no esquema relacional, cria-se uma Relação CURSA inclui-se as chaves primárias (codd e coda) das tabelas DISCIPLINA e ALUNO como chaves estrangeiras nesta tabela. Essas chaves combinadas formarão a chave primária da Tabela CURSA resultante. O atributo de relacionamento ano será incluído na relação resultante como chave, tendo em vista que o aluno pode fazer mais de uma vez uma disciplina. REGRA 4: Para cada atributo multivalorado: (i) criar uma nova relação; (ii) incluir o atributo correspondendo ao atributo multivalorado mais a chave primária da relação que tem esse atributo; (iii) incluir como chave primária da nova relação a combinação do atributo multivalorado mais a chave primária da entidade que tinha o atributo multivalorado. Através da Figura 1, tem-se o atributo multivalorado fone. Deve ser criada uma nova tabela FONE_PROFESSOR e incluir o atributo multivalorado fone e a chave primária da Relação PROFESSOR que tem esse atributo multivalorado. A combinação do atributo multivalorado e a chave primária da Relação PROFESSOR formarão a chave primária da tabela resultante. A seguir é apresenta a implementação das tabelas mapeadas. Create table PROFESSOR Na implementação acima, foram criadas as tabelas e as restrições de integridade das mesmas. Implementação Objeto-Relacional Nesta seção é mostrado como pode ser implementado através da tecnologia objeto relacional o exemplo da Figura 1. Os conceitos de tabelas de objetos, tabelas aninhadas, tipo referência são alguns conceitos que serão mostrados. A tabela de objetos é construída onde seus campos são instâncias de objetos. create or replace type fone T as table of varchar2(10); Na modelagem relacional, para o atributo multivalorado foi criada uma nova tabela. Na implementação objeto-relacional anterior, foi criado um tipo fone_T como uma tabela do tipo varchar2(10), onde o campo alfanumérico tem dez posições. Para não criar uma nova tabela, repetindo os códigos, foi criada uma tabela aninhada fone do tipo fone_T ao objeto professor_T. A tabela de objetos professor do tipo professor_T, possui a tabela aninhada fone e os telefones de cada professor são armazenados fisicamente em fones_ST. O ”store as” indica o local físico da tabela aninhada. Insert into professor values Para listar os telefones é necessário utilizar o alias predefinido column_value e a função the. select column value fone from / O tipo disciplina_T foi criado e o codp faz referência, através do tipo ref, a uma instância de objeto. Tabelas criadas sem o ref implica em redundância. Se um professor lecionasse 5 (cinco) disciplinas implicaria na repetição de seus dados 5 (cinco) vezes. Tabelas de objetos criadas através do tipo referência permite que um atributo seja referência a objeto do tipo especificado. create or replace type disciplina T as object ( A inclusão dos dados é dada pelo comando a seguir. insert into disciplina Para listar o nome da disciplina e o professor que a ministra, uma comparação deve ser feita entre o código do professor da disciplina e a referência ao objeto professor. select d.nome, p.nome from disciplina d, professor p Para criar a tabela representando o relacionamento N:N, a primeira alternativa é criar o tipo aluno_T. Em seguida, criar a tabela de objetos aluno. create or replace type aluno T as object ( create table aluno disciplina ano number, / A tabela aluno_disciplina foi criada da mesma forma que no modelo relacional. O tratamento de tabela de objetos é o mesmo que tabelas no relacional. Cria-se a restrição de integridade chave primária e chaves estrangeiras. Outra alternativa seria criar um tipo aluno_disciplina_T usando o tipo ref, onde fará referência às instâncias de objeto aluno_T e professor_T. create or replace type aluno disciplina T as Vale ressaltar que uma vez criada uma tabela de objetos, seus campos são instâncias dos objetos. A inclusão dos objetos é dada pelo comando a seguir. insert into aluno values (aluno T(1, 'Juliano')); insert into Aluno Disciplina Para listar o nome da disciplina e os alunos que estão participando da mesma, uma comparação deve ser feita entre o código da disciplina e a referência a instância de objeto aluno. select d.nome, a.nome from disciplina d, aluno a, aluno_disciplina ad O comando anterior listará o nome de da disciplina e todos os alunos matriculados na referida disciplina, no ano de 2005. Conclusões Com a tecnologia objeto relacional é possível usar tipos dentro de tipos. Neste artigo foi apresentada a implementação de um exemplo, a partir do seu projeto, na forma relacional e objeto-relacional. Num próximo artigo iremos mostrar implementações utilizando outros conceitos da tecnologia objeto-relacional, tais como vetores variáveis. Um grande abraço, Salete. E-mail: salete@uepg.br
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Todos
os direitos reservados: DevMedia Group |