Home  Fórum  Sobre  Contato 

Informações

Você está vendo Integridade referencial no mysql. Você pode deixar um comentário ou um trackback esse post
Há 1 comentário.

October 2007
M T W T F S S
    Nov »
1234567
891011121314
15161718192021
22232425262728
293031  

Páginas

  • Contato
  • sitemap
  • Sobre

Categorias

  • ClubePC (13)
  • Desenvolvimento (37)
    • AJAX (2)
    • HTML-CSS (15)
    • Javascript (5)
    • Jquery (1)
    • MySQL (7)
    • PHP (18)
      • Aprendendo PHP (6)
    • Scripts (4)
  • Designer (42)
    • CG (12)
      • 3ds Max (6)
    • Photoshop (20)
  • Diversos (26)
  • Download (55)
  • Games (20)
  • Guia de Compra (2)
  • Hardware (7)
  • Humor (11)
  • Internet (31)
    • Blogs (3)
    • Firefox (8)
  • Notícias (33)
  • Rapidinha (6)
  • Softwares (45)
  • Windows (32)
  • Links

    • Contato
    • Download de filmes
    • Efeito Azaron
    • MeioBit
    • Site da Morróida

Site Meta

Syndicate this site using RSS 2.0The latest comments to all posts in RSS 2.0
  • Register
  • Log in
Oct-07 30

Integridade referencial no mysql

Enviado por: Thales RB. .     1 comentário.     Categorias: Desenvolvimento, MySQL

Integridade referencial é uma tecnica usada para que as tabelas sejam ligadas ou seja se um campo ou uma tabela não pode ser deletada sem que outra seja deletada antes, ou que ao deletar, algum item ele delete de outra tabela também.
Para trabalharmos com integridade referencial, isto é, para adicionarmos restrições de integridade (constraints) às chaves estrangeiras, é necessário criar as tabelas como InnoDB. Este recurso está disponível somente para este tipo de tabela, embora seja possível definir chaves estrangeiras e restrições outros tipos de tabelas por razões de compatibilidade. O detalhe é que neste caso, estas definições terão o efeito apenas de documentação, ou seja, o MySQL não respeitará os constraints definidos.

O InnoDB implementa as restrições de integridade CASCADE, RESTRICT, SET NULL e SET DEFAULT.No primeiro caso, ao se remover um registro da tabela referenciada pela chave estrangeira os registros relacionados àquele removido serão eliminados em todas as tabelas relacionadas. O RESTRICT não permite a remoção de registros que possuam relacionamentos em outras tabelas. Os dois últimos atribuem os valores DEFAULT ou NULL para as chaves estrangeiras cujos registros relacionados foram excluídos. O exemplo abaixo ilustra algumas tabelas que utilizam regras de integridade:

CREATE TABLE aluno (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome CHAR(30) NOT NULL
) TYPE=InnoDB;

CREATE TABLE cursos (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome CHAR(30) NOT NULL
) TYPE=InnoDB;

CREATE TABLE notas (
aluno_id INT NOT NULL,
cursos_id INT NOT NULL,
date DATE NOT NULL,
nota DOUBLE NOT NULL,
PRIMARY KEY(aluno_id, cursos_id, date),
INDEX i2 (cursos_id),
FOREIGN KEY (aluno_id) REFERENCES aluno(id) ON DELETE CASCADE,
FOREIGN KEY (cursos_id) REFERENCES cursos(id) ON DELETE RESTRICT
) TYPE=InnoDB;

No exemplo existem 3 tabelas: aluno, que armazena os alunos de uma faculdade; a tabela cursos que contém as disciplinas ministradas e a tabela notas com os pontos dos alunos em todos os cursos freqüentados por eles. No modelo é possível que um curso possua várias avaliações em datas distintas. Neste caso, foram criadas as tabelas como tipo InnoDB (TYPE=InnoDB), para que as regras de integridade sejam respeitadas. As regras definidas foram: um CASCADE para aluno, isto é, se for removido um registro da tabela de aluno, todas as suas notas serão removidas automaticamente. No caso da tabela de cursos, não será possível remover um curso que possua notas cadastradas para ele. Além da restrição ON DELETE, o InnoDB permite também o ON UPDATE, que aplica as restrições no caso de atualizações dos campos ralacionados entre as tabelas.

É importante ressaltar que o FOREIGN KEY não cria automaticamente um índice na(s) coluna(s) referenciada(s). Assim, é necessário criar explicitamente um índice nas colunas que serão chaves estrangeiras. No exemplo, a coluna aluno_id já é um índice, visto que esta é o primeiro campo da chave primária da tabela. Como cursos_id não é o primeiro campo de nenhuma chave, foi adicionado o índice i2 para esta chave estrangeira. Caso não seja criado o índice nas chaves estrangeiras, o MySQL exibirá o erro “ERROR 1005: Can’t create table ‘./test/notas.frm’ (errno: 150)”, onde o erro significa que há uma definição incorreta das chaves estrangeiras.

   3,979 visualizações

Tags: MySQL, mysql-basico

Leia também

  • Instalando o Apache, PHP, Mysql no Windows
  • Comandos basicos do Mysql no PHP
  • Exportar dados do MS SQL Server para Mysql
  • Adicionar dias a uma data em Mysql ou PHP
  • Textos/Numeros aleatórios em PHP/Mysql

Fluxograma universal para resolver problemas »« Corel X Freehand X Illustrator

Amigo de Deus
Comment on April 22nd, 2011.

Jesus te ama ele tem um grande plano na sua vida!!!!!!!!!!!!!!!

Deixe um comentário

Os campos nome e e-mail são obrigatorios(o e-mail não será exibido), a URL é opcional.

Os comentários podem ter os seguintes comandos:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>







Posts mais vistos

  • Download Vray 1.5 para 3ds Max
  • Emulador Nintendo DS – No$GBA
  • Como fazer formulários em HTML/PHP
  • Pacote de fontes Graffiti
  • Detonado – Castlevania: Portrait of Ruin – NDS
  • Detonado – Castlevania Order of Ecclesia – NDS
  • Tutorial Básico PHP (Aprenda PHP)
  • Instalar o Windows XP em Hds SATA
  • Download Photoshop CS3
  • Digimon World Dawn/Dusk – Lista de digimons

Comentarios recentes

  • jorge on Digimon World Dawn/Dusk – Quests
  • jorge on Digimon World Dawn/Dusk – Quests
  • Samuel on Warriors Orochi – Dicas
  • Yugioh Nightmare Troubadour – ForoGeek on Dicas – Yu-Gi-Oh! Nightmare Troubadour – NDS
  • João Paulo Franco on Tabela de acentos e caracteres especiais do HTML

Tags

3ds Max 3ds Max Basico Aprendendo PHP Brushes ClubePC Computação Grafica CSS CSS-Hacks Designer Detonados Diversos Download Downloads Firefox Fontes Games Google Hardware HTML Básico Humor Icones Internet Internet Explorer Javascript Jogos-PC Microsoft MySQL mysql-basico NDS Notícias Office Photoshop PHP PHP Basico Portable Rapidinha Script Sobre Softwares tags-HTML Wallpapers Windows Windows-Vista Windows-XP WordPress
eXTReMe Tracker