Pergunta

O que é um KISS (Keep it Simple, Stupid) maneira de lembrar o que forma normal Boyce-Codd é e como tomar uma mesa unnormalized e BCNF-lo?

Wikipedia 's informações:. Não muito útil para mim

Foi útil?

Solução

A definição de Chris Date é realmente muito bom, desde que você entender o que ele significa:

Cada atributo

Seus dados devem ser divididos em, diferentes atributos / colunas / valores distintos, que não dependem de quaisquer outros atributos. Seu nome completo é um atributo. Sua data de nascimento é um atributo. Sua idade não é um atributo, que depende da data atual, que não faz parte da sua data de nascimento.

deve representar um fato

Cada atributo é um fato único, não uma coleção de fatos. Mudando um pouco em um atributo muda todo o significado. Sua data de nascimento é um fato. É o seu nome completo de um fato? Bem, em alguns casos é, porque se você mudar seu sobrenome seu nome completo é diferente, certo? Mas, para um genealogista você tem um sobrenome e um nome de família, e se você mudar seu sobrenome seu nome de família não mudar, então eles são fatos separados.

sobre a chave,

Um atributo é especial, é uma chave. A chave é um atributo que deve ser único para todas as informações em seus dados e nunca deve mudar. O seu nome completo não é uma chave porque pode mudar. Seu Número de Seguro Social não é uma chave porque eles são reutilizados. Seu SSN além de data de nascimento não é uma chave, mesmo que a combinação nunca pode ser reutilizado, porque um atributo não pode ser uma combinação de dois fatos. Um GUID é uma chave. Um número que incrementar e nunca reutilização é uma chave.

toda a chave,

A chave só deve ser suficiente [ e necessário !] Para identificar seus valores; você não pode ter os mesmos dados representados por chaves diferentes, nem pode um subconjunto das colunas de chave ser suficientes para identificar o fato. Suponha que você tenha um livro de endereços com uma chave GUID, nome e valores de endereço. É OK para ter o mesmo nome que aparece duas vezes com chaves diferentes se eles representam pessoas diferentes e não são a "mesma data". Se Mary Jones em contabilidade muda seu nome para Mary Smith, Mary Jones em Vendas não muda o seu nome também. Por outro lado, se Mary Smith e John Smith têm o mesmo endereço e é realmente o mesmo lugar, isso não é permitido. Você tem que criar um novo par chave / valor com o endereço de rua e uma nova chave.

Você também não estão autorizados a utilizar a chave para este novo endereço único como um valor no livro de endereços já que agora a mesma chave de endereço seria representado duas vezes. Em vez disso, você tem que fazer um par terceira chave / valor com os valores da chave de livro de endereços e a chave de endereço; você encontrar endereço de uma pessoa, combinando sua chave livro e chave de endereço neste grupo de valores.

e nada mais que a tecla

Não deve haver nada que não seja a chave que identifica seus valores. Por exemplo, se você está autorizado um endereço de "The Taj Mahal" (assumindo que há apenas um) não lhe é permitido um valor cidade no mesmo registro, pois se você souber o endereço você também conhecer a cidade. Isso também abre a possibilidade de haver mais de um Taj Mahal em uma cidade diferente. Em vez disso, você tem que criar novamente uma chave local secundário com os valores originais como o Taj, a Casa Branca em Washington DC, e assim por diante, e às suas cidades. Ou proibir "endereços" que são únicas para a cidade.

Então me ajude, Codd.

Outras dicas

Aqui estão algumas votos trechos da página da Wikipedia sobre Terceira Forma Normal :

Bill Kent define Terceira forma normal desta maneira:

Cada atributo não-chave "deve fornecer um fato sobre a chave, toda a chave, e nada mais que a chave ".

A exigência de que os atributos não-chave ser dependente garante "toda a chave" que é uma tabela em 2NF; mais distante exigindo que os atributos não-chave ser dependente "nada além da tecla" garante que a tabela está na 3NF.

Chris Data adapta de Kent mnemônico para definir Boyce-Codd Normal forma:

"Cada atributo deve representar um fato sobre a chave, toda a chave, e nada, mas a chave." Aqui, a exigência está preocupado com cada atributo na tabela, não apenas atributos não-chave.

Este entra em jogo quando uma tabela tem várias chaves composto candidato, e um atributo dentro de teclas de um candidato tem uma dependência em um parte de outra chave candidata. Terceira forma normal não proíba esta, porque exclui os principais atributos. Mas BCNF se aplica a regra para os principais atributos também.

Quanto à forma de fazer uma tabela satisfazer BCNF, você precisa para representar a dependência extra, com outro atributo e, possivelmente, por atributos dividindo-se em outra tabela.

Eu pesquisei "Boyce Codd forma normal" e depois wikipedia este é o segundo resultado. Meu livro dá uma definição muito simples em termos de sistemas de gerenciamento de banco de dados relacionais:

O lado esquerdo de cada FD não trivial deve ser uma superchave.

-. "Banco de dados Sistemas de O Livro Completo", de Garcia-Molina, Ullman e Widom

A melhor resposta informal que eu li é que, na BCNF, cada "seta" em cada dependência funcional é uma "seta" fora de uma chave candidata. Não me lembro a fonte, mas era provavelmente algo que Chris Data escreveu.

Basicamente Boyce-Codd é "quinta forma normal". É visualmente reconhecíveis pela existência de "entidades atributivos" no modelo de dados, para coisas como tipos (por exemplo, papéis, status, estado do processo, a localização do tipo, telefone-tipo, etc.). As entidades atributivo (sub-subtipos) são listas de conjuntos finitos de valores que ainda categorizar uma entidade nível de classe. Assim você pode ter um tipo de telefone (, 'mesa' 'mobile', 'VOIP') tipo de conta de e-mail ( 'business', 'pessoal', 'jogos'), papel (gerente de projeto, Data Modeler, super modelo) etc . Outra pista morfológica é a existência de super-tipos, (aka. Master-classes, super-classes, meta-entidades), como Partes (subtipos sendo empresa, pessoa, etc.).

É basicamente Taxonomia selvagem ido (..no o vídeo não é tão excitante) para o nível folha atômica ou; veja o comentário de Bill Karwin acima para uma explicação mais técnica.

modelos de nível Boyce-Codd são essencialmente altamente detalhada de modelos lógicos, derivada de modelos conceituais baseados em negócios mais simplistas. ** Eles normalmente não são implementadas ver BATIM no modelo físico, porque a otimização PDM para o desempenho (ou simplicidade funcional) pode resultar em super-tipos e entidades atribuíveis a ser gerido como listas drop-down em UIs, ou por trás da lógica cenas no pedido, ou em constrangimentos e os métodos da base de dados para reforçar a integridade referencial. (Ou seja, eles podem acabar como tabelas de consulta no esquema PDM, ou eles podem ser manipulados por código e não representado no banco de dados).

Assim - por que fazê-los se eles não podem acabar no PDM? Pela mesma razão que você construir um bom modelo 3NF antes de 'otimizar', de modo que a estrutura do banco reflete o mundo real e, portanto, é mais estável do que os kludges típicos que herdamos e tem que fazer heróica atua para tornar o trabalho de nossos negócios / clientes requisitos mudança.

Muitas vezes é mais fácil de ouvir seu intestino e isso virá naturalmente. De um modo geral, se você encontrar BCNF 3NF que você conheceu. Esta não cobre análise detalhada de um ERD ou ter exemplos, mas há treze regras de acordo com Codd. Acho que é melhor seguir estas regras, mas lembre-se sempre que não há uma maneira correta de fazer as coisas de modo segui-los livremente. Assim, em relação ao RDBMS, aqui estão as regras:

http://www.87android.com / 12-regras-de-relacional-database-modelo-by-Codd /

Isto não pode responder à pergunta diretamente, mas se você está perguntando sobre como chegar a BCNF ou uma maneira fácil de lembrar, em seguida, você não entende normalização bem o suficiente. Que é de nenhum interesse embora. Bancos de dados relacionais assumir muitas formas e muito poucos são bem feito. A melhor coisa que você pode fazer é saber o que significa ser relacional, siga as regras acima, e não se preocupe com o nível de normalização. O processo de normalização elimina a duplicação de dados. Cada nível mais assim movendo em migração de dependências funcionais. Tenha isso em mente e você vai ficar bem, seu intestino e do intelecto fará o resto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top