MYSQL é relacional?

1. MYSQL é relacional?

Paulo Rodrigo
paulopugin

(usa Debian)

Enviado em 17/03/2008 - 11:53h

Sempre trabalhei com mysql, e relacionei as tabelas manualmente, ma está semana descobri que outros bancos de dados tem funções que relacionam as tabelas de outras formas, facilitando as buscas no banco de dados, então.
MYSQL tem essas mesma funções e eu ainda não aprendi, ou não tem e a unica forma de relacionar as tabelas é manualmente mesmo, assim como o era nos antigos DBF's?


  


2. Re: MYSQL é relacional?

Jeffeson Luiz Oliveira de Campos
foguinho.peruca

(usa Ubuntu)

Enviado em 17/03/2008 - 12:05h

Acredito que sim. Que outra "forma" de relacional saum esses outros bancos? O.o


3. POr exemplo Access

Paulo Rodrigo
paulopugin

(usa Debian)

Enviado em 17/03/2008 - 13:11h

no access pode-se dizer para o banco que uma tabela é relacionada com a outra, e usar-se comandos que buscam dados em uma tabela que está relacionada com outra de acordo com o relacionemento delas.


4. Re: MYSQL é relacional?

Daniel Augusto de Oliveira
spychaser

(usa Debian)

Enviado em 18/03/2008 - 12:21h

Sim meu amigo, mysql é relacional, pois se não fosse você não conseguiria realizar as suas consultas relacionadas do tipo SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a=t2.a

Pelo o que eu entendi você gostaria de uma ferramenta grafica como o access tem para fazer o relacionamento visual ( que se diga de passagem ser uma boa ferramenta para aprendizagem). Neste caso eu recomendaria vc utilizar o DBDesign que faz isso para você no mysql e outros bancos. Infelizmente nativo do mysql não tem uma ferramenta para fazer o mesmo.

Abraços


5. Obrigado spychaser

Paulo Rodrigo
paulopugin

(usa Debian)

Enviado em 20/03/2008 - 15:20h

spychaser,
Na verdade o que queria fazer era exatemente o comando que você passou, mas como não sabia a sintaxe do comando não conseguia fazer.
Muito Obrigado


6. Re: MYSQL é relacional?

Luis Carlos de Brito
luiscarlos

(usa Fedora)

Enviado em 20/03/2008 - 23:12h

Uma forma de relacionar tabelas é através de chaves estrangeiras - foreign key (fk) - assim garante integridade das informações no banco de dados.
Imagine 2 tabelas
fornecedor
produtos
na para que se tenha uma relação produto-fornecedor é necessária uma terceira tabela, agora imagine que nesta terceira tabela o usuario consiga gravar no ID de um produto, um ID que não se refere a nenhum produto, seria uma inconsistencia, com FK vc consegue especificar que um campo da tabela X é chave primaria na tabela Y,isso permite uma maior integridade dos dados.
Desculpe-me pelo exemplo mal feito, mas a idéia é essa.


7. Estas coisas que eu não sei

Paulo Rodrigo
paulopugin

(usa Debian)

Enviado em 21/03/2008 - 09:20h

Luis0101 poderia me ajudar a entender melhor como se faz este relacionamento no MySQL?
Eu uso phpmyadmin, posso fazer isso lá?
como?
Se só modo texto, como?
Tipo um passo a passo básico.
VAleuu


8. Re: MYSQL é relacional?

Luis Carlos de Brito
luiscarlos

(usa Fedora)

Enviado em 21/03/2008 - 12:43h

Vamos utilizar 2 tabelas, usuarios e grupo

CREATE TABLE `usuarios` (
`id` int(3) NOT NULL auto_increment primary key,
`nome` varchar(50) NOT NULL default '',
`login` varchar(12) NOT NULL default '',
`senha` varchar(10) NOT NULL default '',
`grupo` int(11) default NULL,
) engine=innodb;

CREATE TABLE `grupo` (
`id` int(11) NOT NULL auto_increment,
`nome` varchar(50) default NULL,
`descricao` text
)engine=innodb;

a tabela usuario tem uma relação com a tabela grupo através do campo "grupo", este campo poderia ter outro nome qualquer, eu utilizo o nome da tabela no campo para ficar mais facil a compreensao, o importante é seguir um padrão.

após criar as tabelas vamos relaciona-las

alter table usuarios add foreign key (grupo) references grupo(id)

na sql acima criamos um relacionamento do campo grupo na tabela usuarios com o campo id da tabela grupo, este campo id na tabela grupo deve ser chave primaria ou fazer parte de uma chave composta.

uma chave composta é uma chave primaria composta de dois ou mais campos

no mysql para que as tabelas possam ter relacionamentos, estas devem ser do tipo innodb, por padrão elas são do tipo myisam, entao ao criar a tabela vc adiciona a clausula
engine=innodb

você ainda pode criar um relacionamento que na exclusão de um campo de uma tabela, os campos relacionados com ele sejam excluidos também, assim vc nao precisa criar essa situação na sua aplicação, é bem mais confortável para programar, é a clausula "on delete cascade".

estas SQLs vc pode copiar e colar numa interface de acesso ao banco como o phpmyadmin que vc possui, tem um link chamado "SQL", clica nele e entao vc cola estas sql e manda executar.

este é um basico de como funciona os relacionamentos no mysql, no site mysql.com tem a documentação do banco em português, muito fáci de entender.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts