Pergunta

Eu estou pouco confuso sobre como fazer um bom banco de dados relacional.Eu estou usando o phpmyAdmin para criar um banco de dados.Eu tenho quatro tabelas a seguir.Não se preocupe com o fato de lugar e preço são opcionais, eles apenas são.

  1. Pessoa (Obrigatório)
  2. Item (Obrigatório)
  3. Lugar (Opcional)
  4. Preço (Opcional)

Item é a tabela principal.Ele sempre vai ter uma pessoa vinculada.* Eu sei que você não se junta no mysql para as tabelas.Se eu quiser ligar as tabelas juntos eu poderia usar chaves compostas (usando o id de cada tabela), no entanto, é este o caminho mais correto para ligar as tabelas?Significa, também, o item será de 5 identificações, incluindo o seu próprio.Tudo isso causa valores nulos (aparentemente um grande não, não, o que eu posso entender) porque se o lugar e preço são opcionais e não são usados em uma entrada para a tabela de itens de eu ter um valor nulo lá.Por favor, ajuda!

Obrigado antecipadamente.Espero que isso faz sentido.

Foi útil?

Solução

Valores NULL

Significa, também, o item será de 5 identificações, incluindo o seu próprio.Tudo isso causa valores nulos (aparentemente um grande não, não, o que eu posso entender) porque se o lugar e preço são opcionais e não são usados em uma entrada para a tabela de itens de eu ter um valor nulo não

Pessoalmente, eu acho que isso é uma situação em que NULL os valores são perfeitos, e eu certamente não teria dúvidas sobre como colocar isso em meu design de banco de dados.

Uma maneira que eu já vi outros atingir a mesma coisa sem NULL valores é criar um registro na opção de tabelas (local e preço no seu exemplo) com um ID de 0 que significa que não há nenhum registro relacionado - mas isso só faz 10 vezes mais trabalho para o desenvolvedor do aplicativo para filtrar esses registros de fora é MUITO mais fácil para fazer uma associação e se você não obter todos os registros de volta, não há registros relacionados na mesa opcional.

Apenas lembre-se de fazer um LEFT ou RIGHT OUTER junte-se você quiser voltar Items, independentemente de eles terem um Place ou Price associado (você vai chegar NULL valores opcionais colunas da tabela para Items que não têm registros associados) e um INNER junte-se apenas quer a Items que fazer um argumento opcional registro.

Chaves Compostas

Um composto é uma chave em uma tabela que é composta de mais de uma coluna.Se cada um de seus Person, Item, Place e Price todos têm um ID (mesmo se é apenas um número de incrementação automática), você não precisa de uma chave composta - apenas uma coluna de chave primária de cada tabela, e uma coluna de chave estrangeira na Item tabela para cada tabela relacionados - por exemplo, item_id, person_id, place_id, price_id.Você afirmar que Item tem seu próprio ID, de modo que você não precisa de uma chave composta - apenas uma chave primária na item_id coluna.

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