[MySQL] Resumo do conhecimento básico de banco de dados

Olá a todos, eu sou Ah Q, hoje vamos resumir os pontos de conhecimento necessários para começar a usar [MySQL]~

Conceitos Básicos de Banco de Dados

  • Banco de dados : DataBase, referido como DB, é uma coleção de informações ou um banco de dados é uma coleção de dados gerenciados por um sistema de gerenciamento de banco de dados.
  • Sistema de gerenciamento de banco de dados : o DataBase Management System, conhecido como DBMS, é um software de grande escala para manipular e gerenciar bancos de dados e geralmente é usado para estabelecer, usar e manter bancos de dados.
  • Administrador de banco de dados : Administrador de banco de dados, conhecido como DBA, é responsável pelo gerenciamento e controle geral do sistema de banco de dados.

O que é tupla, chave, chave candidata, chave primária, chave estrangeira, atributo primário, atributo não primário?

  • Tupla: Uma tupla é um conceito básico em um banco de dados relacional. Uma relação é uma tabela. Cada linha da tabela (ou seja, cada registro no banco de dados) é uma tupla e cada coluna é um atributo. Em tabelas bidimensionais, as tuplas também são chamadas de linhas.
  • Código: O código é o atributo que pode identificar de forma única a entidade, correspondente à coluna da tabela;
  • Chave candidata: Se o valor de um determinado atributo ou grupo de atributos no relacionamento puder identificar exclusivamente uma tupla e qualquer subconjunto dela não puder mais ser identificado, o grupo de atributos será chamado de chave candidata. O que entendo é que um campo ou vários campos formam um índice único. Por exemplo: na entidade aluno, "número do aluno" pode distinguir exclusivamente a entidade aluno e, assumindo que a combinação de atributos de "nome" e "turma" é suficiente para distinguir a entidade aluno, então {número do aluno} e {nome, class} são ambos é o código candidato.
  • Código primário: O código primário também é chamado de chave primária. A chave primária é selecionada entre as chaves candidatas. Só pode haver uma chave primária em um conjunto de entidades, mas pode haver várias chaves candidatas.
  • Chave estrangeira: A chave estrangeira também é chamada de chave estrangeira. Se um atributo em uma relação for a chave primária em outra relação, então o atributo é uma chave estrangeira.
  • Atributo principal: O atributo que aparece no código candidato é chamado de atributo principal. Por exemplo, trabalhadores relacionados (número do trabalho, número do ID, nome, gênero, departamento) Obviamente, tanto o número do trabalho quanto o número do ID podem marcar exclusivamente esse relacionamento, portanto, todos são códigos de candidato. Os dois atributos de número de trabalho e número de ID são os atributos principais. Se a chave primária for um grupo de atributos, os atributos no grupo de atributos serão todos atributos primários.
  • Atributos não-chave: atributos que não estão incluídos em nenhum código candidato são chamados de atributos não-chave. Por exemplo, no relacionamento - aluno (número do aluno, nome, idade, sexo, turma), a chave primária é "número do aluno", então outras "nome", "idade", "sexo" e "turma" podem ser chamado é um atributo não primário.

Qual é a diferença entre chave primária e chave estrangeira?

  • Primary key (chave primária): A chave primária é usada para identificar exclusivamente uma tupla, que não pode ser repetida e não pode ficar vazia. Uma tabela pode ter apenas uma chave primária.
  • Chave estrangeira (código estrangeiro): A chave estrangeira é usada para estabelecer relacionamentos com outras tabelas. A chave estrangeira é a chave primária de outra tabela. A chave estrangeira pode ter duplicatas e pode ser nula. Uma tabela pode ter várias chaves estrangeiras.

Por que chaves estrangeiras e cascata são obsoletas?

Para chaves estrangeiras e cascata, o manual de desenvolvimento do Alibaba diz:

[Obrigatório] Chaves estrangeiras e cascata não são permitidas, e todos os conceitos de chave estrangeira devem ser resolvidos na camada de aplicação .
Explicação: Tomando como exemplo a relação entre alunos e notas, o student_id na tabela do aluno é a chave primária e o aluno_id na tabela de notas é a chave estrangeira. Se o Student_id na tabela do aluno for atualizado e a atualização do Student_id na tabela de notas for acionada ao mesmo tempo, será uma atualização em cascata. As chaves estrangeiras e as atualizações em cascata são adequadas para máquinas únicas com baixa simultaneidade, mas não para clusters distribuídos e de alta simultaneidade; as atualizações em cascata são fortemente bloqueadas e há risco de tempestades de atualização do banco de dados; as chaves estrangeiras afetam a velocidade de inserção do banco de dados.

Desvantagens das chaves estrangeiras

  1. Complexidade aumentada: a. Restrições de chave estrangeira devem ser consideradas toda vez que você fizer DELETE ou UPDATE, o que causará dor no desenvolvimento e extremamente inconveniente para testar dados; b. A relação mestre-escravo de chaves estrangeiras é corrigida, se você precisar Se houver é uma mudança, este campo no banco de dados não precisa estar associado a outras tabelas, o que adicionará muitos problemas.
  2. Adicionado trabalho adicional: o banco de dados precisa aumentar o trabalho de manutenção de chaves estrangeiras. Por exemplo, quando fazemos algumas operações de adição, exclusão e atualização envolvendo campos de chave estrangeira, precisamos acionar operações relacionadas para verificar a consistência e correção de os dados. Dessa forma terá que consumir recursos; (Pessoalmente, não acho que seja esse o motivo de não usar chaves estrangeiras, pois mesmo que você não use chaves estrangeiras, ainda assim terá que garanti-las no nível de aplicativo. Portanto, acho que esse impacto é insignificante.)
  3. Não é amigável para sub-bancos de dados e sub-tabelas: porque as chaves estrangeiras em sub-bancos de dados e sub-tabelas não podem ter efeito.

Vantagens das chaves estrangeiras

  1. Garantir a consistência e integridade dos dados do banco de dados;
  2. A operação em cascata é conveniente, reduzindo a quantidade de código do programa;

Resumir

Se não envolver sub-bancos de dados e sub-tabelas, as chaves estrangeiras podem ser consideradas se a simultaneidade não for muito alta.

Figura IS

Os diagramas ER, também conhecidos como diagramas entidade-relacionamento (Diagrama Entidade Relacionamento), fornecem métodos para representar tipos de entidades, atributos e conexões, e são usados ​​para descrever o modelo conceitual do mundo real. É uma maneira eficaz de descrever o modelo conceitual do relacionamento no mundo real e é uma maneira de representar o modelo conceitual de relacionamento.

A figura abaixo é um diagrama ER da seleção de curso de um aluno, cada aluno pode escolher vários cursos, e um mesmo curso também pode ser selecionado por várias pessoas, então a relação entre eles é muitos-para-muitos (M:N). Além disso, existem duas outras relações: 1 para 1 (1:1), 1 para muitos (1:N).

Diagrama ER da conexão entre alunos e cursos

Tentamos converter o diagrama ER acima no modelo relacional real do banco de dados (no design real, geralmente tratamos o professor como uma entidade)

insira a descrição da imagem aqui

paradigma de banco de dados

1NF (primeira forma normal)

Os atributos (correspondentes aos campos da tabela) não podem mais ser divididos, ou seja, este campo pode ser apenas um valor, não podendo ser dividido em vários outros campos . 1NF é o requisito mais básico de todos os bancos de dados relacionais, ou seja, tabelas criadas em bancos de dados relacionais devem satisfazer a primeira forma normal.

2NF (Segunda Forma Normal)

Com base em 1NF, 2NF elimina a dependência funcional parcial de atributos não-chave em códigos .

Exemplo 1: Por exemplo, existem campos de número do aluno, nome, nome do departamento, nome da turma e pontuação na tabela do aluno, entre os quais (número do aluno, nome da turma) podem determinar exclusivamente um dado, portanto (número do aluno, nome) é chamado de código, o número do aluno e o nome da turma são chamados, respectivamente, de atributos principais e os outros campos são atributos não principais. Neste momento (número do aluno, nome da turma) pode determinar o único nome do aluno, mas o número do aluno também pode ser determinado, que é a dependência funcional parcial do atributo não primário (nome) no código (número do aluno, nome da turma ).

Exemplo 2: Por exemplo, se houver campos de número do aluno, nome, nome do departamento, nome da turma e pontuação na tabela do aluno, dividimos em número do aluno, nome da turma, tabela de pontuação (Tabela 1) e número do aluno, nome, tabela de nomes de departamentos (Tabela 2 ).

  • Na Tabela 1 (número do aluno, nome da turma) ainda há um código, neste momento (número do aluno, nome da turma) pode determinar a única pontuação, mas o número do aluno e o nome da turma não podem ser determinados separadamente, portanto, não há pontuação de atributo para as dependências funcionais parciais do código (número do aluno, nome da turma), portanto, esta tabela atende aos requisitos da 2NF.
  • Na Tabela 2, o número da escola é o código e os atributos não primários são o nome e o nome do departamento. Como o código possui apenas um atributo, é impossível ter uma dependência funcional parcial do atributo não primário no código, que também atende aos requisitos de 2NF.

Conforme mostrado na figura abaixo, mostra a transição da primeira forma normal para a segunda forma normal. A segunda forma normal adiciona uma coluna com base na primeira forma normal.Esta coluna é chamada de chave primária, e todos os atributos não primários dependem da chave primária.

insira a descrição da imagem aqui

3NF (Terceira Forma Normal)

Com base na 2NF, a 3NF elimina a dependência da função de transferência de atributos não-chave em códigos . O design do banco de dados que atende aos requisitos do 3NF basicamente resolve os problemas de redundância excessiva de dados, inserção anormal, modificação anormal e exclusão anormal.

Por exemplo: Por exemplo, existem campos de número do aluno, nome, nome do departamento e chefe do departamento na tabela do aluno. O número do aluno é um código e os atributos não primários são nome, nome do departamento e chefe do departamento. Entre eles, o nome do departamento depende do número do aluno e o chefe do departamento depende do nome do departamento; portanto, há uma dependência transitiva do atributo não principal (chefe do departamento) do código (número do aluno), portanto, a tabela não não atendem aos requisitos do 3NF, e a tabela pode ser desmontada em (número do aluno, nome, nome do departamento) e (nome do departamento, chefe do departamento).

Suplemento de conceito

  • Dependência funcional: Se em uma tabela, quando o valor do atributo (ou grupo de atributos) X é determinado, o valor do atributo Y deve ser determinado, então pode-se dizer que Y é funcionalmente dependente de X, escrito como X → Y.
  • Dependência funcional parcial (dependência funcional parcial): Se X → Y, e existe um subconjunto próprio X0 de X tal que X0 → Y, então Y é dito ser parcialmente funcionalmente dependente de X. Consulte Segunda forma normal para obter um exemplo.
  • Dependência funcional completa (Dependência funcional completa): Em um relacionamento, se um item de dados de atributo não principal depende de todas as palavras-chave, ele é chamado de dependência funcional completa.
  • Dependência da função de transferência: No esquema relacional R(U), suponha que X, Y, Z são diferentes subconjuntos de atributos de U, se X determina Y, Y determina Z e X não contém Y, Y não determina X, ( X ∪Y)∩Z=conjunto vazio, então Z é dito ter uma dependência funcional transitiva em X. Veja Terceira Forma Normal para um exemplo. Dependências funcionais transitivas levam a redundância de dados e exceções. Os subconjuntos Y e Z dos quais a função de transferência depende geralmente pertencem à mesma coisa, portanto, podem ser combinados em uma tabela.

procedimento armazenado

Podemos considerar o procedimento armazenado como uma coleção de algumas instruções SQL, com algumas instruções de controle lógico adicionadas no meio.

Procedimentos armazenados são muito práticos quando o negócio é mais complicado. Por exemplo, podemos precisar escrever uma grande série de instruções SQL para concluir uma operação. Neste momento, podemos escrever um procedimento armazenado, o que também é conveniente para nossa próxima chamada .

Depois que o procedimento armazenado é depurado e aprovado, ele pode ser executado de forma estável. Além disso, usar o procedimento armazenado é mais rápido do que a execução de instrução SQL pura porque o procedimento armazenado é pré-compilado.

Os procedimentos armazenados não são amplamente utilizados em empresas de Internet, porque os procedimentos armazenados são difíceis de depurar e expandir, não são portáteis e consomem recursos do banco de dados.

O Alibaba Java Development Manual exige a proibição do uso de stored procedures.

Resumir

  • Compreender os conceitos básicos de base de dados;
  • Distinguir os conceitos de tuplas básicas, códigos, códigos candidatos, códigos primários, códigos externos, atributos primários e atributos não primários;
  • Preste atenção às vantagens e desvantagens de chaves estrangeiras e cenários de uso específicos;
  • O paradigma de banco de dados não precisa necessariamente ser satisfeito e precisa ser tratado em cenários específicos;
  • Os procedimentos armazenados devem ser usados ​​com cuidado na produção;

おすすめ

転載: blog.csdn.net/Qingai521/article/details/131172929