Cidade + Estado único na Table (MySQL)

MySQL

11/11/2014

Ola, estou com um pequeno problema em uma table: Nao quero que uma cidade seja duplicada no mesmo estado, la vai as tables do MySQL:

CREATE TABLE IF NOT EXISTS `Estados`
(
	`id` INT AUTO_INCREMENT,
	`nome` VARCHAR(32) NOT NULL,
	`uf` VARCHAR(2) NOT NULL,
	PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS `Cidades`
(
	`id` INT AUTO_INCREMENT,
	`nome` VARCHAR(64) NOT NULL,
	`idEstado` INT NOT NULL,
	PRIMARY KEY (id),
	FOREIGN KEY (idEstado) REFERENCES `Estados` (id)
);


O problema e que não posso usar UNIQUE no campo `nome` da tabela `Cidades` pois ha mais de uma cidade com o mesmo nome, porem o estado diferente.

Seria o caso de usar uma chave composta??
Cleverson

Cleverson

Curtidas 0

Melhor post

Soeuseijothaz

Soeuseijothaz

11/11/2014

Olha uma abordagem para resolver isto seria.

Retire o campo idEstado da tabela Cidades.

E crie uma tabela intermediária Estados_Cidades com chave composta ou onde a mesma seja primarykey:

CREATE TABLE IF NOT EXISTS `Estados_Cidades`
(
    id_estado ......
    id_cidade`.......

);


O diagrama da modelagem ficaria assim:

[img]http://arquivo.devmedia.com.br/forum/imagem/238223-20141111-104729.png[/img]
GOSTEI 1

Mais Respostas

Alex Lekao

Alex Lekao

11/11/2014

Ola, bom dia!!!

Eu acredito que sim, visto que o que vai determinar se a duplicidade existe ou nao eh o estado + cidade, entao acho que eh esse o caminho.

Nao tenho o costume de fazer modelagem etc, lido mais com scripts, mas se nao me engano eh isso mesmo. rsrsr

Abraco.
GOSTEI 0
Cleverson

Cleverson

11/11/2014

Oh grato, vou corrigir :)
GOSTEI 0
POSTAR