Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Normalização em MYSQL


Eu tento explicar a normalização em termos leigos aqui. Primeiramente, é algo que se aplica ao banco de dados relacional (Oracle, Access, MySQL), então não é apenas para o MySQL.

A normalização é garantir que cada tabela tenha os únicos campos mínimos e se livrar das dependências. Imagine que você tenha um registro de funcionário e cada funcionário pertence a um departamento. Se você armazenar o departamento como um campo junto com os outros dados do funcionário, terá um problema - o que acontece se um departamento for removido? Você precisa atualizar todos os campos do departamento e há oportunidade de erro. E se alguns funcionários não tiverem um departamento (recém-atribuído, talvez?). Agora haverá valores nulos.

Portanto, a normalização, em resumo, é evitar ter campos que seriam nulos e garantir que todos os campos da tabela pertençam apenas a um domínio de dados que está sendo descrito. Por exemplo, na tabela de funcionários, os campos podem ser id, nome, CPF, mas esses três campos não têm nada a ver com o departamento. Apenas o ID do funcionário descreve a qual departamento o funcionário pertence. Portanto, isso implica que o departamento em que um funcionário está deve estar em outra tabela.

Aqui está um processo de normalização simples.
EMPLOYEE ( < employee_id >, name, social_security, department_name)

Isso não é normalizado, conforme explicado. Um formulário normalizado pode parecer
EMPLOYEE ( < employee_id >, name, social_security)

Aqui, a tabela Employee é responsável apenas por um conjunto de dados. Então, onde armazenamos a qual departamento o funcionário pertence? Em outra mesa
EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )

Isso não é o ideal. E se o nome do departamento mudar? (isso acontece no governo dos EUA o tempo todo). Por isso é melhor fazer isso
EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )

Existem a primeira forma normal, a segunda forma normal e a terceira forma normal. Mas, a menos que você esteja estudando um curso de DB, geralmente sigo a forma mais normalizada que posso entender.

Espero que isto ajude.