MySQL - colunas -
EditPawn - 26.12.2015
Olб, estou aprendendo mysql no momento e preciso salvar os itens da conta do jogador. Nгo sei qual a melhor forma para fazer isso, mas pensei em salvar cada item em uma coluna. Sу nгo sei como irei fazer para criar as colunas referente a quantidade de itens que o jogador possui.
Esta seria a tabela com apenas um item.
PHP код:
CREATE TABLE `itens_conta` (
`idconta` int(5) NOT NULL AUTO_INCREMENT,
`item1` int(3) NOT NULL,
PRIMARY KEY (`idconta`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Esta seria a tabela com 2 itens.
PHP код:
CREATE TABLE `itens_conta` (
`idconta` int(5) NOT NULL AUTO_INCREMENT,
`item1` int(3) NOT NULL,
`item2` int(3) NOT NULL,
PRIMARY KEY (`idconta`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Alguйm poderia me explicar como eu poderia fazer isso da melhor forma.
Outra dъvida, com essa tabela jб seriam 2 no total para o jogador, й melhor criar tabelas diferenciadas para cada tipo de salvamento ou salvar todos os dados em uma tabela somente?
Obrigado
Re: MySQL - colunas -
zPain - 26.12.2015
Jб que o relacionamento entre jogadores e itens й 1-n, o ideal й criar uma tabela com o id do item e o id do jogador, sendo este ъltimo uma chave estrangeira (foreign key).
http://www.devmedia.com.br/modelo-en...ento-der/14332
Estude o link e vocк entenderб o modo ideal de criar as tabelas e estabelecer os relacionamentos.
Re: MySQL - colunas -
EditPawn - 26.12.2015
Quote:
Originally Posted by zPain
Jб que o relacionamento entre jogadores e itens й 1-n, o ideal й criar uma tabela com o id do item e o id do jogador, sendo este ъltimo uma chave estrangeira (foreign key).
http://www.devmedia.com.br/modelo-en...ento-der/14332
Estude o link e vocк entenderб o modo ideal de criar as tabelas e estabelecer os relacionamentos.
|
Obrigado,
Vou dar uma estudada. +rep
Re: MySQL - colunas -
EditPawn - 26.12.2015
Desculpe o double.
Consegui fazer minhas tabelas e jб aproveitei organizar melhor a database. Fiz as relaзхes das tabelas, mas nгo sei se fiz da forma correta, se caso eu tenha feito a relaзгo errada por favor se puder me dizer, ficou dessa forma.
contas 1:1 stats
contas 1:1 skills
contas 1:n itens
Clique caso nгo carregue a imagem
Como eu faria para fazer uma consulta, remover ou inserir algum item na minha tabela? Ou mesmo os stats e skills do jogador.
Re: MySQL - colunas -
WLSF - 26.12.2015
Me responde uma coisa, 1 jogador vai ter mais de 1 stats? E skills?
Re: MySQL - colunas -
EditPawn - 26.12.2015
Quote:
Originally Posted by ipsNan
Me responde uma coisa, 1 jogador vai ter mais de 1 stats? E skills?
|
Nгo. Mas fiz a separaзгo das tabelas dos stats e skills para talvez ficar mais organizado, mas provavelmente serб mais complicado de carregar e salvar os dados ?
Re: MySQL - colunas -
WLSF - 26.12.2015
Se stats nгo й uma tabela pra formar relacionamento 1..n, entгo й melhor que vocк deixe lvl e xp dentro da tabela de contas...
Essa questгo de organizaзгo й o de menos, assim vocк ganha em desempenho.
O mesmo para skills...
Quanto menos joins vocк tiver que fazer para buscar informaзхes completas sobre um dado, melhor serб o desempenho do seu banco.
Sobre os itens, quando trabalhamos com tabelas para relacionamentos, usamos o seguinte:
Criamos tabelas para os dois dados que vгo ter um relacionamento, ou seja, uma tabela para jogador (conta) e outra tabela para item, na tabela jogador vai conter o ID e oque mais vocк quiser.
E na tabela item vocк vai ter o ID do item, nome do item e oque mais vocк quiser para descrever o item.
E ai vamos ter uma terceira tabela que irб dizer que esses dois se relacionam, aonde a tabela terб o ID dela de registro primary key autoincrement, e terб o id do jogador como foreign key e o id do item como foreign key.
Essa й a forma mais utilizada, ai quando vocк quer pegar todos os itens de um determinado jogador, vocк vai e procura nessa tabela todos os itens que contйm o player_id x, e depois vocк procura na tabela de itens todos os nomes de itens que contenham os id que vocк pegou na tabela de relacionamento.
Re: MySQL - colunas -
EditPawn - 26.12.2015
Quote:
Originally Posted by ipsNan
Se stats nгo й uma tabela pra formar relacionamento 1..n, entгo й melhor que vocк deixe lvl e xp dentro da tabela de contas...
Essa questгo de organizaзгo й o de menos, assim vocк ganha em desempenho.
O mesmo para skills...
Quanto menos joins vocк tiver que fazer para buscar informaзхes completas sobre um dado, melhor serб o desempenho do seu banco.
Sobre os itens, quando trabalhamos com tabelas para relacionamentos, usamos o seguinte:
Criamos tabelas para os dois dados que vгo ter um relacionamento, ou seja, uma tabela para jogador (conta) e outra tabela para item, na tabela jogador vai conter o ID e oque mais vocк quiser.
E na tabela item vocк vai ter o ID do item, nome do item e oque mais vocк quiser para descrever o item.
E ai vamos ter uma terceira tabela que irб dizer que esses dois se relacionam, aonde a tabela terб o ID dela de registro primary key autoincrement, e terб o id do jogador como foreign key e o id do item como foreign key.
Essa й a forma mais utilizada, ai quando vocк quer pegar todos os itens de um determinado jogador, vocк vai e procura nessa tabela todos os itens que contйm o player_id x, e depois vocк procura na tabela de itens todos os nomes de itens que contenham os id que vocк pegou na tabela de relacionamento.
|
Eu acho que entendi, mas nгo sei como criar a relaзгo, o cуdigo em si.
No caso eu poderia utilizar a primary key da tabela contas na tabela itens jб que sempre serб diferente de um jogador para outro, correto ?
Procurei no fуrum e encontrei alguns tutoriais:
https://sampforum.blast.hk/showthread.php?tid=552693,
http://forum.sa-mp.com/showthread.ph...ht=foreign+key
Tentei fazer conforme o tutorial do Vince, mas nгo sei se estou fazendo certo, pois a tabela nгo foi criada e no tutorial ele nгo explicou muito detalhadamente em questгo do cуdigo.
Estou tentando fazer dessa forma :
(...) - continuaзгo das colunas
PHP код:
"CREATE TABLE IF NOT EXISTS `contas` (
`idconta` INT NOT NULL AUTO_INCREMENT,
(...),
PRIMARY KEY (`idconta`) )"
"CREATE TABLE IF NOT EXISTS `itens` (
`id` INT NOT NULL AUTO_INCREMENT,
`contas_idconta` INT NOT NULL,
`iditem` INT NOT NULL,
PRIMARY KEY (`id`),
ADD FOREIGN KEY (`contas_idconta`)
REFERENCES `contas` (`idconta`)
ON UPDATE CASCADE
ON DELETE CASCADE )"
Re: MySQL - colunas -
WLSF - 26.12.2015
1 tabela para conta, 1 tabela para item, 1 tabela para o relacionamento
Код:
CREATE TABLE conta (
id INT NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE item (
id INT NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE itens_por_conta (
id INT NOT NULL,
id_conta INT,
id_item INT,
PRIMARY KEY (id),
FOREIGN KEY (id_conta), REFERENCES conta(id),
FOREIGN KEY (id_item), REFERENCES item(id)
)
Se vocк for fazer a leitura, sai o seguinte:
1 conta tem 1 identificador, 1 item tem 1 identificador.
e existe um relacionamento de itens por conta, aonde 1 conta pode ter vбrios itens, e 1 item pode pertencer a vбrias contas nesse relacionamento. (conhecimento n..n)
OBS: Nгo sei se a sintaxe estб correta, procurei no ****** um exemplo e ai montei esse.
Fonte de pesquisa:
http://www.w3schools.com/sql/sql_foreignkey.asp