Simples - Dificuldades para criar 2 tabela

5 respostas
A

Olá gente, bom dia.

Por favor, está dando pau na hora de criar a tabela tarefa. Pensei da seguinte forma: pra se ter uma tarefa dependo de um usuario, logo
vou passar como chave estrangeira o id (pk) do usuario...

Alguém pode dizer algo?

create table usuario(
id bigint not null auto_increment,
login varchar(10),
senha varchar (10),
primary key (id)
);



create table tarefa(
id bigint not null auto_increment,
descricao varchar(200),
finalizado varchar (100),
dataFinalizacao date,
primary key (id),
foreign key (id) references usuario
);

5 Respostas

romarcio
create table tarefa(
id bigint not null auto_increment,
id_usuario bigint not null,
descricao varchar(200),
finalizado varchar (100),
dataFinalizacao date,
primary key (id),
foreign key (id_usuario) references usuario(id)
)
Felagund
andredecotia:
Olá gente, bom dia.

Por favor, está dando pau na hora de criar a tabela tarefa. Pensei da seguinte forma: pra se ter uma tarefa dependo de um usuario, logo
vou passar como chave estrangeira o id (pk) do usuario...

Alguém pode dizer algo?

create table usuario(
id bigint not null auto_increment,
login varchar(10),
senha varchar (10),
primary key (id)
);



create table tarefa(
id bigint not null auto_increment,
descricao varchar(200),
finalizado varchar (100),
dataFinalizacao date,
primary key (id),
foreign key (id) references usuario
);

Acho que talvez vc tenha que aprender mais sobre banco de dados, um FK não pode ser auto_increment, e acredito que é melhor separar isso como um usuario_id, e fazer a FK nessa chave
sem falar que vc tem que referenciar o campo para a FKcomo por exemplo?

foreign key(usuario_id) references usuario(id)
ps.vale

create table tarefa( id bigint not null auto_increment, descricao varchar(200), finalizado varchar (100), dataFinalizacao date, primary key (id), id_usuario bigint foreign key references usuario not null );

Tenta assim ^^

F

Creio que poderia dar uma melhorada nesta modelagem, principalmente quanto a nomenclatura dos atributos.

CREATE TABLE Usuario (
  UsuID BIGINT NOT NULL AUTO_INCREMENT,
  UsuLogin VARCHAR(20) NULL,
  UsuSenha VARCHAR(20) NULL,
  PRIMARY KEY(UsuID)
);

CREATE TABLE Tarefa (
  TarID BIGINT NOT NULL AUTO_INCREMENT,
  UsuID BIGINT NOT NULL,
  TarDescr VARCHAR(200) NULL,
  TarFinalizado VARCHAR(100) NULL,
  PRIMARY KEY(TarID),
  INDEX Tarefa_FK1(UsuID)
);

Desta forma a tabela usuario seria referenciada pela chave estrangeira UsuID, pois afinal “ID” pode haver em qualquer tabela do seu banco concorda? Imagine um sistema com 200 tabelas, todas com campos de nome ID. Dificuldade imensa na hora de idealizar o sql.

Só uma dica!

Abraço!

Marco A.

A

Puxa adorei cada dica… Realmente vou dar uma estudada mais em Modelagem de Dados / SQL e dar uma refatorada nos atributos…

Obrigado mesmo…
André AS

Criado 12 de agosto de 2010
Ultima resposta 12 de ago. de 2010
Respostas 5
Participantes 5