Cardinalidade, em banco de dados, está ligado as relações entre suas tabelas e quantos dados de uma entidade (tabela) estão presentes na outra entidade.
Da matemática o conceito de cardinalidade, de modo simples, vem de elementos de um determinado conjunto que estão em outro conjunto.
Exemplo:
Dados os conjuntos A = {1,2,3,4,5} e B = {1,3,5}
Podemos afirmar que o conjunto de B é um subconjunto de A. Podemos afirmar também que B está contido em A ou que A contém B. Podemos assim concluir que A e B tem uma relação.
Se você entendeu esse conceito, imagine agora um banco de dados com esses conjuntos A e B, sendo eles entidades (tabelas) do banco de dados e seus números A = {1,2,3,4,5} e B = {1,3,5} são considerados como os atributos do banco de dados.
Simplificando ainda mais:
Ao invés de A vamos substituir por um conjunto chamado Clientes e ao invés de {1,2,3,4,5} vamos usar os atributos {Código,Nome,Sobrenome,Idade,CPF}.
Agora da mesma forma substituiremos B pela entidade Identificação_Clientes e seus atributos serão derivados de Clientes, sendo: {Código,Sobrenome,CPF}
Nesse exemplo temos a entidade Identificação_Clientes sendo derivada de atributos da entidade Clientes.
Na matemática esses conjuntos A = {1,2,3,4,5} e B = {1,3,5} são considerados como uma Função Injetora, pois todos os elementos de B (domínio) se relacionam com um elemento de A (contra domínio).
Na matemática temos 3 tipos de função:
Função Injetora: todos os elementos do domínio se relacionam com apenas um elemento do contra domínio, podendo sobrar elementos no domínio.
Função Sobrejetora: todos os elementos do contra domínio se relacionam a um elemento do domínio.
Função Bijetora: a função é ao mesmo tempo injetora e sobrejetora. Ou seja, tem a quantidade de elementos iguais e todos se relacionam.
Tipos de relacionamento
Ao criar um relacionamento entre tabelas de um banco de dados podemos utilizar das cardinalidades:
1:1: um-para-um; o mais simples do relacionamentos o relacionamento de A para B permite apenas 1 valor de A para 1 de B.
1:N: um-para-muitos; 1 valor de A se relaciona com muitos de B.
N:1: muitos-para-um; muitos valores de A se relacionam com 1 de B. Observe que apenas mudamos o ponto de vista. a relação é a mesma da anterior.
Obs.: na cardinalidade 1:N e N:1 a chave primária (Primary Key) da entidade é levada do UM para o N. Observe as setas. (Se você não sabe oque é uma chave primária, entre aqui).
N:N: muitos-para-muitos; muitos valores de A se relacionam com muitos de B. Neste caso há a necessidade do uso de outra entidade (tabela), chamamos isso de entidade associativa.
terça-feira, 2 de abril de 2013
SQL - DML, DDL, DCL e TCL
SQL (Structured Query Language) é a uma linguagem utilizada em Sistemas Gerenciadores de Banco de Dados (SGBD). E, diferente de linguagens de programação, nos SGBDs sempre usamos a linguagem SQL, tendo pouquíssimas diferenças entre eles.
O SQL pode ser dividido em três categorias diferentes:
DML (Data Manipulation Language)
Linguagem de Manipulação de Dados: o significado do seu acrônimo é auto explicativo. São os comandos usados com as instâncias do banco de dados. Aqui vão alguns exemplos de comandos DML do SQL:
O SQL pode ser dividido em três categorias diferentes:
DML (Data Manipulation Language)
Linguagem de Manipulação de Dados: o significado do seu acrônimo é auto explicativo. São os comandos usados com as instâncias do banco de dados. Aqui vão alguns exemplos de comandos DML do SQL:
- SELECT
- INSERT
- DELETE
- UPDATE
DDL (Data Definition Language)
Linguagem de Definição de Dados: são os comandos usados para definir o esquema (Estrutura) de um bando de dados. Exemplo de comandos DDL do SQL:
Linguagem de Controle de Dados: são comandos que sedem ou retiram privilégios de acesso a dados. Exemplos de comandos DCL do SQL:
- GRANT
- REVOKE
TCL (Transaction Controle Language)
Linguagem de Controle de Transações: são usadas para controlar mudanças feitas pelos comandos DML, podendo, por exemplo, voltar as instâncias ao modo que eram antes de um comando DML. Exemplo de comandos TCL do SQL:
- COMMIT
- SAVEPOINT
- ROLLBACK
Instâncias: são os dados de um banco de dados em um determinados momentos (registros). As instâncias são modificadas com frequência.
Esquema: é a estrutura de um banco de dados. Exemplo: qual é a chave primária de uma tabela, quantos atributos uma determinada tabela tem, se é permitido valores nulos em um determinado atributo, etc.
terça-feira, 26 de março de 2013
Estrutura condicional if, else, else if (Linguagem C)
A estrutura condicional if é conhecida em todas as linguagens de programação. Sua estrutura muda pouco de uma linguagem para outra, e, desde que você tenha uma boa lógica, é fácil usa-lá.
A estrutura condicional está no seu dia-a-dia. Antes de sair de casa, por exemplo, podemos olhar pela janela verificar como está o tempo: se o tempo estiver nublado e com nuvens carregadas, levarei o guarda-chuva.
É exatamente dessa mesma forma que funciona a estrutura condicional de uma linguagem de programação. Posso através dele verificar se um determinado valor é igual (==) ao valor de outra variável, se é maior (>), se é menor, maior igual (>=) ou menor igual (<=). A verificação que farei vai depender do valor que eu desejo que seja retornado.
Antes de usar a estrutura condicional if é importante que você entenda os operadores relacionais e os operadores lógicos.
A estrutura simples contém apenas uma condição. Se está condição for verdadeira (1) o programa executa sua(s) instrução(ões).
Exemplos:
if(condição)
{
instrução1;
instrução2;
...;
instruçãoN;
}
Obs.: se a estrutura condicional possuir apenas uma instrução também é permitido o uso da chave.
Exemplo:
Exemplo:
No código acima é feita a primeira condição if(cor == '0'), se esta não for verdadeira então é passada para a segunda condição else if(cor == '1'), se esta não for verdadeira é passado para a terceira else if(cor == '2') e por fim colocamos apenas um else que indica que se não for nenhuma da alternativas anteriores será dada a mensagem "Invalido".
Apenas UMA das condições pode ser executada, e assim que uma delas for executada o programa é jogado para fora da estrutura condicional. Observe que toda a estrutura condicional do código acima faz parte de uma unica estrutura, outra seria aberta se iniciássemos outro if.
Exemplo:
Os operadores lógicos podem ser usados para simplificar seu código fonte, não havendo necessidade de criar estruturas condicionais aninhadas tão complexas.
É importante você testar todos os possíveis fluxos do seus dados, evitando erro de lógica. Para isso podemos usar a depuração (Debugging).
Há ainda a estrutura switch / case, que faz uma função parecida com a da estrutura if, mais em alguns casos pode ser mais adequada e mais legível.
A estrutura condicional está no seu dia-a-dia. Antes de sair de casa, por exemplo, podemos olhar pela janela verificar como está o tempo: se o tempo estiver nublado e com nuvens carregadas, levarei o guarda-chuva.
É exatamente dessa mesma forma que funciona a estrutura condicional de uma linguagem de programação. Posso através dele verificar se um determinado valor é igual (==) ao valor de outra variável, se é maior (>), se é menor, maior igual (>=) ou menor igual (<=). A verificação que farei vai depender do valor que eu desejo que seja retornado.
Antes de usar a estrutura condicional if é importante que você entenda os operadores relacionais e os operadores lógicos.
if - Estrutura simples:
A estrutura simples contém apenas uma condição. Se está condição for verdadeira (1) o programa executa sua(s) instrução(ões).
Exemplos:
main()
{
int a, b;
printf("Informe 2 valores inteiros: ");
scanf("%d %d", &a, &b);
if(a>b)
printf("A variavel a eh maior que b\n");
system("pause");
}
Nesse código o usuário entra com os valores da variável a e da variável b e dentro da estrutura condicional é comparado se a é maior que b. Se verdadeiro o programa retorna a mensagem: "A variável a eh maior que b", ou continua em system("pause");. Se houvesse mais linhas abaixo da estrutura condicional o programa continuaria a execução. Exemplo:main()
{
int a, b;
printf("Informe 2 valores inteiros: ");
scanf("%d %d", &a, &b);
if(a>b)
printf("A variavel a eh maior que b\n");
printf("Nesta estapa o programa ja esta fora da estrutura condicional.\n");
printf("Pressione uma tecla...\n\n");
getch();
printf("O programa encerrara.\n");
system("pause");
}
Nesse exemplo a estrutura condicional executa uma única instrução. Quando há mais de uma instrução a ser executada devemos fazer uso das chaves:if(condição)
{
instrução1;
instrução2;
...;
instruçãoN;
}
Obs.: se a estrutura condicional possuir apenas uma instrução também é permitido o uso da chave.
Exemplo:
main()
{
int a, b, aux;
printf("Informe 2 valores inteiros: ");
scanf("%d %d", &a, &b);
if(a>b)
{
aux = a;
a = b;
b = aux;
}
printf("Os números foram ordenados: %d, %d\n\n", a, b);
printf("O programa encerrara.\n");
system("pause");
}
No código acima se a primeira variável (a) for maior que a segunda (b) o programa inverte seus valores para imprimi-las na ordem.if, else - Composta:
A estrutura composta faz uso do else (senão), indicando outra(s) condição(ões) caso a primeira não seja executada.Exemplo:
main()
{
char cor;
printf("Escolha uma cor: \n0: Preto\n1: Azul\n2: Verde\n");
scanf("%c", &cor);
if(cor == '0')
{
system("color 0");
printf("Voce escolheu a cor preta.\n");
}
else if(cor == '1')
{
system("color 1");
printf("Voce escolheu a cor azul.\n");
}
else if(cor == '2')
{
system("color 2");
printf("Voce escolheu a cor verde.\n");
}
else
printf("Invalido.\n");
printf("\nO programa sera encerrado.\n");
system("pause");
}
No código acima é feita a primeira condição if(cor == '0'), se esta não for verdadeira então é passada para a segunda condição else if(cor == '1'), se esta não for verdadeira é passado para a terceira else if(cor == '2') e por fim colocamos apenas um else que indica que se não for nenhuma da alternativas anteriores será dada a mensagem "Invalido".
Apenas UMA das condições pode ser executada, e assim que uma delas for executada o programa é jogado para fora da estrutura condicional. Observe que toda a estrutura condicional do código acima faz parte de uma unica estrutura, outra seria aberta se iniciássemos outro if.
if, else - Estrutura aninhada:
A estrutura aninhada é, basicamente, um if dentro de outro. Ou seja, se a primeira condição for verdadeira (1) poderei ter uma segunda condição, terceira, quarta, etc.Exemplo:
main()
{
int a = 0, b = 2, c = 0, d = 10, e = -8;
if((a == 0) && (b == 2))
{
if(c > 0)
printf("Comando 1\n");
else if(d >= 10)
{
if(e < 0)
printf("Comando 2\n");
else
printf("Comando 3\n");
}
}
printf("O programa sera encerrado.\n");
system("pause");
}
main()
{
int a = 0, b = 2, c = 0, d = 10, e = -8;
if((a == 0) && (b == 2))
{
if(c > 0)
printf("Comando 1\n");
else if(d >= 10)
{
if(e < 0)
printf("Comando 2\n");
else
printf("Comando 3\n");
}
}
printf("O programa sera encerrado.\n");
system("pause");
}
Observe que neste código a 3 estruturas condicionais uma dentro da outra. A estrutura azul está dentro da estrutura verde que está dentro da estrutura vermelha. Sendo assim a estrutura na cor verde só é executa se a estrutura vermelha for verdadeira e a estrutura azul só é executada se a primeira condição da estrutura verde (if(c > 0)) for falsa e a segunda (else if(d >= 10)) verdadeira.Os operadores lógicos podem ser usados para simplificar seu código fonte, não havendo necessidade de criar estruturas condicionais aninhadas tão complexas.
É importante você testar todos os possíveis fluxos do seus dados, evitando erro de lógica. Para isso podemos usar a depuração (Debugging).
Há ainda a estrutura switch / case, que faz uma função parecida com a da estrutura if, mais em alguns casos pode ser mais adequada e mais legível.
Assinar:
Postagens (Atom)


