phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Relacionamentos de banco de dados usando phpmyAdmin (chaves compostas)


valores NULOS

Isso também significa que o item terá 5 ids, incluindo o seu próprio. Isso tudo causa valores nulos (aparentemente um grande não, não, o que eu posso entender) porque se o lugar e o preço forem opcionais e não forem usados ​​em uma entrada da tabela de itens, terei um valor nulo lá

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

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

Apenas lembre-se de fazer um LEFT ou RIGHT OUTER junte-se se você quiser retornar Item s independentemente de terem um Place ou Price associado (você obterá NULL valores nas colunas opcionais da tabela para Item s que não possuem registros associados) e um INNER participe se você somente quer o Item s que faz tem um registro opcional associado.

Chaves compostas

Uma chave composta é uma chave em uma tabela composta por mais de uma coluna. Se cada um de seus Person , Item , Place e Price todos têm um ID (mesmo que seja apenas um número de incremento automático), você não precisará de uma chave composta - apenas uma coluna de chave primária em cada tabela e uma coluna de chave estrangeira no Item tabela para cada tabela relacionada - por exemplo item_id , person_id , place_id , price_id . Você afirma que Item tem seu próprio ID, então você não precisa de uma chave composta - apenas uma chave primária no item_id coluna.