19.10.2015, 17:20
Quote:
Фракция
|
Фракция
|
Всем привет!
Имеются 2 таблицы: Accounts: id | name | pass | chars Characters: id | from | name | level Вопрос: Как лучше привязать к аккаунту персонаж? Путём имя аккаунта с полей "from"? String Или путём id аккаунта с полей "from"? Int И на последок, как привязать эти поля к друг другу? На примере пожалуйста. |
Всем привет!
Имеются 2 таблицы: Accounts: id | name | pass | chars Characters: id | from | name | level Вопрос: Как лучше привязать к аккаунту персонаж? Путём имя аккаунта с полей "from"? String Или путём id аккаунта с полей "from"? Int И на последок, как привязать эти поля к друг другу? На примере пожалуйста. |
ALTER TABLE `Characters` # Изменить таблицу Characters
ADD COLUMN `account` INT(11) NULL, # Добавить поле 'account' (должно иметь тот же тип данных, что и Accounts.id), NULL значит "разрешить использовать пустое значение" (в вашем случае это значит "персонажам могут быть не назначены аккаунты" - полезно, например, при передаче аккаунта, но если вы это делать не планируете, напишите NOT NULL)
ADD UNIQUE INDEX `account` (`account`), # Добавить уникальный индекс 'account' на одноименное поле. Это не позволит добавить в таблицу две записи с одинаковой ссылкой на аккаунт (акканут не сможет иметь больше 1 персонажа). Если вы хотите дать возможность игрокам создавать несколько персонажей на один аккаунт, не пишите эту строку
ADD CONSTRAINT `fk_account_character` FOREIGN KEY (`account`) REFERENCES `Accounts` (`id`) ON UPDATE CASCADE ON DELETE CASCADE; # Добавить внешний ключ Character.account к Accounts.id, при изменении ID аккаунта - изменять соответственно Character.account, при удалении аккаунта соответственно удалять персонажей аккаунта
SELECT Characters .*
FROM Characters, Accounts
WHERE Accounts.name = "Davidoff"
AND Characters.account = Accounts.id
SELECT t.* FROM table t
SELECT COALESCE(t.field,0) FROM table t
SELECT IFNULL(t.field, 0) FROM table t
SELECT `data` FROM `users`WHERE `user_id` = '1'