Como usar regras de integridade referencial eo SQL JOGO predicado
regras de integridade referencial requer que os valores de uma coluna ou colunas em uma tabela SQL correspondem aos valores de uma coluna ou colunas de outra tabela. Você se refere às colunas na primeira tabela como a chave estrangeira e as colunas na segunda tabela como a chave primária ou chave única.
Por exemplo, você pode declarar a coluna EmpDeptNo em uma tabela EMPREGADO como uma chave estrangeira que faz referência a DEPTNO coluna de uma tabela DEPT. Este confronto garante que se você gravar um empregado na tabela EMPREGADOS como trabalhar no departamento de 123, uma linha aparece na tabela DEPT onde DEPTNO é 123.
Se os membros do par de chaves / chave primária estrangeira ambos consistem em uma única coluna, a situação é bastante simples. No entanto, as duas chaves pode consistir em várias colunas. o DEPTNO valor, por exemplo, podem ser únicos dentro de uma única Localização- portanto, para o identificar um DEPT fileira, você deve especificar um Localização e um DEPTNO.
Se ambos os escritórios de Boston e Tampa têm um departamento de 123, você precisa identificar os departamentos, ( 'Boston', '123') e ( 'Tampa', '123'). Neste caso, a tabela de funcionário precisa duas colunas para identificar um DEPT. Chamar essas colunas EmpLoc e EmpDeptNo. Se um empregado trabalha no departamento 123 em Boston, o EmpLoc e EmpDeptNo Os valores são 'Boston' e '123'. E a declaração de chave estrangeira na tabela EMPREGADOS se parece com:
FOREIGN KEY (EmpLoc, EmpDeptNo) REFERÊNCIAS DEPT (Location, NUM_DEP)
Extrair conclusões válidas a partir dos dados torna-se imensamente complicado se os dados contêm valores nulos. Isso é porque às vezes você quer tratar esses dados de uma maneira, e às vezes você quer tratá-lo de outra maneira. o UNIQUE, SIMPLES, PARCIAL, e CHEIO palavras-chave especificam diferentes formas de tratamento de dados que contém valores nulos.
Se os seus dados faz conter valores nulos, sai do modo de velocidade de leitura agora e ler a seguinte lista devagar e com cuidado. Cada entrada na lista dada aqui apresenta uma situação diferente em relação aos valores nulos - e conta como a PARTIDA predicado manipula-lo.
Aqui estão cenários que ilustram as regras para lidar com valores nulos e o PARTIDA predicado:
Os valores são ambos uma forma ou de outra. Se nenhum dos valores de EmpLoc e EmpDeptNo são nulos (ou ambos são nulos), então as regras de integridade referencial são as mesmas que para as chaves de coluna única com valores que são nulo ou não nulo.
Um valor é nulo e um não é. Se, por exemplo, EmpLoc é nulo e EmpDeptNo não é nulo - ou EmpLoc não é nulo e EmpDeptNo é nulo - você precisa de novas regras. Ao implementar regras, se você inserir ou atualizar a tabela EMPREGADOS com EmpLoc e EmpDeptNo valores de (NULL, '123') ou ( 'Boston', NULL), você tem seis alternativas principais: SIMPLES, PARCIAL, e CHEIO, cada uma com ou sem a UNIQUE palavra-chave.
o UNIQUE palavra-chave está presente. A linha correspondente na tabela resultado da subconsulta deve ser exclusivo para que o predicado avaliar para um valor True.
Ambos os componentes da expressão valor de linha R são nulos. o PARTIDA predicado retorna um valor verdadeiro, independentemente do conteúdo da tabela de resultados subconsulta que estão sendo comparados.
Nem componente da expressão valor de linha R é nulo, SIMPLES é especificado, UNIQUE não é especificado, e pelo menos uma linha na tabela de resultado da subconsulta corresponde R. o PARTIDA predicado retorna um valor True. Caso contrário, ele retorna um valor False.
Nem componente da linha de valores de expressão de R é nulo, SIMPLES é especificado, UNIQUE é especificado, e pelo menos uma linha na tabela de resultado da subconsulta é único e corresponde R. o PARTIDA predicado retorna um valor True. Caso contrário, ele retorna um valor False.
Qualquer componente da expressão valor de linha R é nulo e SIMPLES é especificado. o PARTIDA predicado retorna um valor True.
Qualquer componente do valor de linha expressão R não é nulo, PARCIAL é especificado, UNIQUE não é especificado, ea parte não-nula de pelo menos uma linha na tabela de resultados subconsulta corresponde R. o PARTIDA predicado retorna um valor True. Caso contrário, ele retorna um valor False.
Qualquer componente da linha valor da expressão R não é nulo, PARCIAL é especificado, UNIQUE é especificado, e as partes não nulos de R combinar as peças não nulos de pelo menos uma linha única na tabela resultado da subconsulta. o PARTIDA predicado retorna um valor True. Caso contrário, ele retorna um valor False.
Nem componente da linha de valores de expressão de R é nulo, CHEIO é especificado, UNIQUE não é especificado, e pelo menos uma linha na tabela de resultado da subconsulta corresponde R. o PARTIDA predicado retorna um valor True. Caso contrário, ele retorna um valor False.
Nem componente da linha de valores de expressão de R é nulo, CHEIO é especificado, UNIQUE é especificado, e pelo menos uma linha na tabela de resultado da subconsulta é único e corresponde R. o PARTIDA predicado retorna um valor True. Caso contrário, ele retorna um valor False.
Qualquer componente da expressão valor de linha R é nulo, e CHEIO é especificado. o PARTIDA predicado devolve um valor falso.