Como usar chaves para Information Access rapidamente em um banco de dados SQL

Uma boa regra para o projeto de banco de dados SQL é certificar-se que cada linha em uma tabela de banco de dados é distinguível de todos os outros row- cada linha deve ser único. Às vezes você pode querer extrair dados de seu banco de dados para uma finalidade específica (como uma análise estatística), e ao fazê-lo, acabam por criar tabelas em que as linhas não são necessariamente exclusivos.

Para um propósito tão limitado, esse tipo de duplicação não importa. Tabelas que você pode usar em mais de uma maneira, no entanto, não devem conter linhas duplicadas.

UMA chave é um atributo (ou combinação de atributos) que identifica unicamente uma linha em uma tabela. Para acessar uma linha em um banco de dados, você deve ter alguma maneira de distinguir essa linha de todas as outras linhas. Porque as chaves devem ser exclusivos, que proporcionam um tal mecanismo de acesso.

Além disso, uma chave nunca deverá conter um valor nulo. Se você usar chaves nulas, você pode não ser capaz de distinguir entre duas linhas que contêm um campo de chave nulo.

Considere um exemplo de um veterinário-lab: você pode designar colunas apropriadas como chaves. Na tabela CLIENT, Nome do cliente é uma boa chave. Essa chave pode distinguir cada cliente individual de todos os outros clientes. Portanto inserindo um valor nesta coluna torna-se obrigatória para cada linha na tabela.

TestName e Nome do empregado fazer boas chaves para os testes e tabelas EMPREGADOS. Número do pedido e ResultNumber fazer boas chaves para as ordens e os resultados tabelas. Certifique-se de que você insira um valor único para cada linha.

Você pode ter dois tipos de chaves: chaves primárias e chaves estrangeiras.

As chaves primárias

UMA chave primária é uma coluna ou combinação de colunas em uma tabela com valores que identificam exclusivamente as linhas na tabela. Para incorporar a idéia de chaves no banco de dados VetLab, você pode especificar a chave primária de uma tabela que você criar a tabela. No exemplo a seguir, uma coluna única é suficiente (assumindo que todos os clientes de VetLab têm nomes originais):

CRIAR CLIENTE TABLE (NomeCliente CHAR (30) CHAVE PRIMÁRIA, Address1 CHAR (30), Endereço2 CHAR (30), CityCHAR (25), StateCHAR (2), PostalCode CHAR (10), PhoneCHAR (13), Fax CHAR (13) , Contactperson CHAR (30)) -

a restrição CHAVE PRIMÁRIA substitui a restrição NÃO NULO, dado na definição anterior do quadro de CLIENTE. o CHAVE PRIMÁRIA implica a restrição NÃO NULO restrição, porque uma chave primária não pode ter um valor nulo.

Embora a maioria dos SGBDs permitem que você crie uma tabela sem uma chave primária, todas as tabelas em um banco de dados deve ter um. Com isso em mente, substitua o NÃO NULO restrição em todas as suas tabelas. No exemplo, os testes, empregado, encomendas, e os resultados tabelas devem ter o CHAVE PRIMÁRIA restrição, como no exemplo a seguir:

Criar testes mesa (TestName CHAR (30) CHAVE PRIMÁRIA, StandardCharge char (30)) -

Às vezes há uma única coluna em uma tabela pode garantir a unicidade. Nesses casos, você pode usar um chave composta - uma combinação de colunas que garantir a unicidade quando utilizados em conjunto. Imagine que alguns dos clientes da VetLab são cadeias que têm escritórios em várias cidades. Nome do cliente não é suficiente para distinguir entre duas filiais do mesmo cliente. Para lidar com essa situação, você pode definir uma chave composta da seguinte forma:

CRIAR CLIENTE TABLE (NomeCliente CHAR (30) NOT NULL, Address1CHAR (30), Address2CHAR (30), Cidade CHAR (25) NOT NULL, StateCHAR (2), PostalCode CHAR (10), PhoneCHAR (13), Fax CHAR (13 ), Contactperson CHAR (30), CONSTRAINT BranchPK PRIMARY KEY (NomeCliente, Cidade)) -

Como uma alternativa ao uso de uma chave composta para identificar exclusivamente um registro, você pode deixar seus DBMS atribuir um automaticamente, como acesso faz em sugerindo que o primeiro campo em uma nova tabela de ser nomeado ID e ser do tipo Autonumber. Essa chave não tem nenhum significado em si. Seu único propósito é ser um identificador exclusivo.

chaves estrangeiras

UMA chave estrangeira é uma coluna ou grupo de colunas em uma tabela que corresponde ou faz referência a uma chave primária em outra tabela no banco de dados. Uma chave estrangeira não tem de ser único, mas deve identificar de forma exclusiva a coluna (s) na tabela particular, que as referências de chave.

Se o Nome do cliente coluna é a chave primária na tabela de cliente (por exemplo), cada linha na tabela de cliente deve ter um valor único no Nome do cliente coluna. Nome do cliente é uma chave estrangeira na tabela Pedidos. Esta chave estrangeira corresponde à chave primária da tabela do cliente, mas a chave não tem de ser único na tabela Pedidos.

Na verdade, você espera a chave estrangeira não é singularidade, se cada um de seus clientes que você deu apenas uma ordem e depois nunca pedidos novamente, você iria sair do negócio rapidamente. Você espera que o número de linhas na tabela Pedidos corresponder com cada linha na tabela do CLIENTE, indicando que quase todos os seus clientes são clientes habituais.

A seguinte definição da tabela PEDIDOS mostra como você pode adicionar o conceito de chaves estrangeiras a uma CRIO declaração:

Criar ordens de mesa (OrderNumber INTEIRO Chave primária, NomeCliente CHAR (30), TestOrdered CHAR (30), Vendedor de CHAR (30), OrderDate DATA, CONSTRAINT NameFK FOREIGN KEY (CLIENTNAME) referências de clientes (NomeCliente), CONSTRAINT TestFK FOREIGN KEY (TestOrdered) Referências testes (TestName), CONSTRAINT SalesFK FOREIGN KEY (vendedor) REFERÊNCIAS DOS TRABALHADORES (EmployeeName)) -

Neste exemplo, as chaves estrangeiras na tabela Pedidos vincular essa tabela para as chaves primárias das tabelas CLIENT, testes e funcionário.

menu