#14
Em um paradigma relacional, uma tabela armazena os dados em uma estrutura de duas dimensões. Uma tabela relacional possui linhas e colunas, as colunas definem o tipo de informação que será armazenada e as linhas correspondem as informações armazenadas. Na tabela todas as linhas possuem a mesma estrutura de colunas e cada coluna possuem propriedades e regras que definem os tipos de dados aceitos.
Uma observação sobre terminologia, o que definimos como Tabelas também podem ser chamados de Relacionamento ou Entidade, As Linhas podem ser chamadas de Registros ou Tuplas, as Colunas podem ser chamadas de Atributos ou Campos. E o número de linhas na tabela é chamada de cardinalidade das tuplas. Então se você ouvir alguma dessas terminologias você sabe o que significa.
Um resumo rápido da terminologia:
- Tabelas é o mesmo que: Relacionamento ou Entidade
- Linas é o mesmo que: Registros ou Tuplas
- Colunas é o mesmo que: Atributos ou Campos
- A quantidade de linhas de uma tabela é chamado de: Cardinalidade das Tuplas.
Voltando ao funcionamento das tabelas, para ficar fácil acompanhar lembre do funcionamento do Excell, como ele apresenta as informações.
Como comentado anteriormente, cada coluna possui suas propriedades e regras que a definem, agora vamos entender como uma coluna é:
- Para todas as colunas é obrigatório definir um certo tipo de dados que ela pode aceitar, existem vários tipos já pré-definidos, os principais são, Númerico, Texto, Data e Hora, somente Data, somente Hora, Boolean, o tipo Texto é o mais comum pois permite o registro de qualquer tipo de informação.
- Agora vamos para as regras da coluna, cada coluna possui regras especificas as principais são:
- Preenchimento obrigatório, isso quer dizer que a coluna não aceita ficar em branco, você deve cadastrar os dados de acordo com o seu tipo.
- Conteúdo Único, isso quer dizer que não é permitido mais de uma linha com o mesmo conteúdo naquela coluna, isso é muito usado para criar chaves primárias ou informações de uso único, exemplo, uma coluna do tipo CPF, não existe CPF igual para mais de uma pessoa, então essa regra é definida para evitar redundância de informação no cadastro de uma pessoa.
- Chave Primária, elas nunca se repetem na mesma tabela, isso quer dizer que apenas uma linha pode possuir aquela informação armazenada, chaves primárias são muito usadas como indices e desta forma são usadas como referência para criar relacionamentos com as demais tabelas do banco de dados, daí que vem o nome banco de dados relacional.
- Chave Estrangeira, essas chaves podem se repetir em várias linhas e na maioria dos casos é de uso obrigatório, essa chave faz referência ao conteúdo da chave primária de outra tabela. Mais a frente será apresentado mais informações referentes a essas ligações no relacionamento.
Agora vamos entender como é criado os relacionamentos entre as tabelas, vamos usar bastante a imaginação.
Imagine como é uma sala de aula, agora vamos transformar as informações presentes em uma sala de aula de uma escola primária em uma tabela de duas dimensões.
Vamos aos poucos tudo bem, uma sala de aula tem alunos e cada aluno tem um nome, uma data de nascimento, um identificador único, nome do pai, nome da mãe, ou nome do responsável, identificador da sala, vamos nós limitar a essas informações, agora vamos criar a tabela.
Uma observação importante, o Oracle é Case Sensitive, isso quer dizer que ele diferencia caracteres maiúsculos de minúsculos, por padrão o Oracle cria a tabela e colunas em maiúsculo, mas se você criar uma tabela "Aluno" e outro como "ALUNO" o Oracle vai reconhecer as duas como tabelas diferentes, não é recomendado de forma alguma criar tabelas dessa forma porque isso pode atrapalhar no uso dos comandos SQL, pois você pode se enganar e acessar a tabela errada.
Vamos para a criação de nossa tabela:
Observação para criação de tabelas: Sempre crie as colunas com os nomes de acordo com o conteúdo que será usado, desta forma fica mais fácil entender que tipo de informação possui em cada coluna, isso vai facilitar na criação das instruções SQL, você pode abreviar o nome das colunas, exemplo, em vez de usar DATA_NASCIMENTO você pode usar DT_NASC, não é permitido o uso de acentuaçao no nome das colunas e também não podem iniciar os nomes da coluna com numeral ou "_" (underline).
Nome Tabela: ALUNO
Coluna Identificador Único: ID_ALUNO (tipo númerico, auto-incremento, chave primária, não vazio)
Coluna DATA_NASCIMENTO: (tipo data, não vazio)
Coluna NOME: (tipo caracter, não vazio)
Coluna NOME_PAI: (tipo caracter, vazio opcional)
Coluna NOME_MAE: (tipo caracter, vazio opcional)
Coluna NOME_RESPONSAVEL: (tipo caracter, não vazio)
Coluna FK_ID_SALA: (tipo númerico, não vazio, chave estrangeira tabela SALA)
Observação sobre a tabela Aluno: Algumas informações são obrigatórias, como o identificador, o nome do aluno, data de nascimento e nome do responsável e identificador da sala, o nome do aluno não pode ser único, pois, pode ocorre de alunos com o mesmo nome, por isso é usado um identificador único para diferenciar os alunos, alguns alunos podem não ter o nome de pai ou mãe registrados, desta forma é opcional o cadastro destes nomes, mas mesmo tendo o nome dos pais é obrigatório informar o nome do responsável pelo aluno, desta forma pode se repetir o nome de um dos pais ou de um terceiro, eu gosto de iniciar as chaves estrangeiras com FK de Foreign Key, desta forma só de bater o olho consegue identificar que aquela coluna se tratá de uma chave estrangeira.
Observou que apenas uma única tabela simples deve se pensar em várias possíbilidades e devem ser definidas as regras de acordo com cada coluna, ainda vamos aumentar essa tabela aluno e criar relacionamentos, mas olha como é legal realizar a modelagem dos dados, imagina uma empresa, criar relacionamentos entre todas as tabelas que são referentes aos departamentos da empresa, o setor de vendas, clientes, entre outros. No final essa modelagem fica bonita de se observar.
Agora vamos criar a tabela da sala.
Nome Tabela: SALA
Coluna: Identificador Único: ID_SALA (tipo númerico, auto-incremento, chave primária, não vazio)
Coluna NOME: (tipo caracter, Único, não vazio)
Observação sobre a tabela Sala: Essa tabela é bem simples, ela só apresenta um identificador único que será o mesmo usado na FK_ID_SALA da tabela Aluno e o nome da sala, muitas salas possuem um nome único, exemplo, sala 210A, sala 310A.
Existem cinco níveis de normalização, que são: primeira, segunda, terceira, quarta, quinta formas normais.
As duas últimas são níveis mais altos de normalização, mas qualquer analista de dados normal não vai precisar se preocupar com essas duas últimas.
Agora vamos descrever um pouco sobre as três primeiras formas de normalização.
- Primeira forma normal, usado para remover os grupos repetidos. Lembrando da tabela ALUNO, podemos otimizar as informações criando uma nova tabela com os dados dos responsáveis pelo aluno, desta forma até se irmãos estudando na mesma escola os dados dos responsáveis seriam os mesmos e não estariam duplicados para cada aluno.
- Segunda forma normal, usado para remover da tabela as colunas que não dependem da chave primária. Imagina se na tabela ALUNO tivesse os dados de enderço, esses dados poderiam ser retirados da tabela e adicionados em uma nova tabela.
- Terceira forma normal, remove todas as colunas que são interdependentes.
As vários tipos de relacionamentos entre tabelas, mas o tipo de relacionamento que deve ser evitado é o de muitos-para-muitos, esses tipos de relacionamentos devem ser resolvidos inserindo uma nova tabela entre os dois, desta forma ele é entra na nomalização da terceira forma normal.
Por aqui já esta bom, não vamos abordar muito sobre todas as caracteristicas de normalização, repassamos mais o básico, pois o foco é a OCA.
Se tiverem dúvidas realizem um INSERT nos comentários e depois dê um COMMIT que depois respondo.
Abraço e bons estudos.
Comentários
Postar um comentário