Как да си структорирам DB-то?

FestarBG

Registered
Правя си онлайн игра и искам да може да се учат нови магии.Доста дълго мислих и искам да е например от списък с например 20 магии да натискаш Научи и вече да можеш да я ползваш.Но немога да измисля структурата на датабазата.Как да направя db-ро в която да има user|magiqta|ataka na magiqta|za6tita но същевременно да може да се update-ва и да се добавят нови магии.И после незнам как да select например всички магии които има `user`...

Дано съм се изразил както трябва.. :?:
 
Примерно правиш си таблица "magii".
Ето как ще изглежда:

Код:
CREATE TABLE `magii` (
`id` int(10) NOT NULL auto_increment,
`user` varchar(250) COLLATE utf8_general_ci NOT NULL default '',
`magiq1` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
`magiq2` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
`magiq3` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
`magiq4` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
`magiq5` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
...
PRIMARY KEY (`id`)
);
Така до 20 магий.
След регистрация записваш в полето user името на потребителя.
После като вече трябва да извеждаш магийте просто проверяваш името и готово.
Примерно ако магията ти е обучена да е с число 1, ако не е да с 0.
Дано си ме разбрал :P
 
HunteR каза:
Примерно правиш си таблица "magii".
Ето как ще изглежда:

Код:
CREATE TABLE `magii` (
`id` int(10) NOT NULL auto_increment,
`user` varchar(250) COLLATE utf8_general_ci NOT NULL default '',
`magiq1` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
`magiq2` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
`magiq3` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
`magiq4` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
`magiq5` varchar(250) COLLATE utf8_general_ci NOT NULL default '0',
...
PRIMARY KEY (`id`)
);
Така до 20 магий.
След регистрация записваш в полето user името на потребителя.
После като вече трябва да извеждаш магийте просто проверяваш името и готово.
Примерно ако магията ти е обучена да е с число 1, ако не е да с 0.
Дано си ме разбрал :P

На такава структура как да направя select-a за да видя кои магии има определен човек?А и искам всяка магия да си има определена атака или защита която се добася към тази на героя.. :?:
 
Таблица magics
id-номера,
magic-името на магиятар
attack-атака
def-защита

Таблица user_magics
id-номер на реда,
uid-номер на потребителя от users,
mid-номер на магията от magics
:?:
 
FestarBG каза:
И в mid ще мога да сложе 1 магия,а ако са 20? :idea:
В user_magics ще записваш магиите които може да прави потребителя.Демек за всяка магия отделен ред.И после селектираш магиите, които отговарят на номера на потребителя
 
SQL
Код:
CREATE TABLE users (
id int(15) NOT NULL auto_increment,
name varchar(50) NOT NULL,
attack varchar(10)  NOT NULL default '0',
defense varchar(10)  NOT NULL default '0',
magick1 char(1) NOT NULL default '0',
...
magick20 char(1) NOT NULL default '0',
PRIMARY KEY (id)
);

CREATE TABLE magicks (
id int(15) NOT NULL auto_increment,
magickname varchar(50)  NOT NULL default '0',
attack varchar(10)  NOT NULL default '0',
defense varchar(10)  NOT NULL default '0',
PRIMARY KEY (id)
);

Tакам, 1вия sql ти прави таблица с потребителите и тяхните магии. 0 е че няма тази магия 1 е че я има. attack и defense за атаката и защитата по дифолт на потребителя. Където е ... трябва да си напишеш от 2 до 19 там за магиите. 2рия sql ти прави таблица с магиите. name е името на магията, attack е колко атака добавя defense е колко защита добавя.
 
прави се по на @miro_94 начина т.е

примерни таблици:

таблица users

user_id
user_name

таблица magics

magic_id
magic_name
magic_effect
....

таблица user_magic

user_id
magic_id

1 ivan
2 stoqn
3 petkan

1 ogan 20
2 led 21
3 proklqtie 17

връзката:

1 1
1 2
2 1
2 3

user_id 1 има magic_id 1
user_id 1 има magic_id 2
user_id 2 има magic_id 1
user_id 2 има magic_id 2

и после казваш изведи ми всички магии на user_id 1

ще изведе magic_id 1 и magic_id 2
 

Back
Горе