Я собираюсь создать простую игру, чтобы помочь задуматься над дизайном базы данных и CakePHP. Причина в том, что игра должна в конечном счете быть расширяемой, что должно быть предоставлено MVC.
Я изо всех сил пытаюсь задуматься над правильным дизайном базы данных, например:
У меня есть таблица для пользователей, просто содержащая обычные данные и т.д.
Каждый пользователь в игре будет иметь оружие (хранение оружия), и поэтому я понимаю, что таблицы "Пользователь" и "Оружейная палата" разделяют отношения "есть".
Мой вопрос: где должен быть размещен внешний ключ? Если вообще? Должен ли я иметь внешний ключ Оружейной в таблице пользователя или внешний ключ пользователя в таблице Оружейной палаты. Или я должен иметь совершенно другую таблицу для отношений между этими двумя?
Кроме того, независимо от подхода, как мне затем связать структуру базы данных внутри CakePHP?
Прежде всего, вы должны иметь в виду cakePHP cookbook, это поможет вам, прежде всего, если вы начнете, так что вы "Вступают в контакт с соглашениями, MVC...
Я начинаю с конца, в CakePHP отношения между таблицами связаны с моделями (да, ModelViewController, первый).
Если у арсенала достаточно логики, чтобы быть самой моделью, тогда связь между Пользователем и Оружейной палатой была бы Пользователем. Но если, например, у Пользователя может быть более одного, это будет User hasMany Armories. Я не знаю вашего дела, просто догадываясь.
О внешних ключах, очень важно, потому что, как только у вас есть база данных, вы можете "испечь" (торт генерирует для вас код) ваши модели, представления и контроллеры. И вы делаете это с информацией из базы данных.
Итак, я бы сказал, что если у пользователя есть Оружейная Оружейная палата, вы должны поместить поле user_id в свою Оружейную таблицу, чтобы посмотреть, кому принадлежит этот арсенал.
Надеюсь, что это поможет, я не испытываю в cakePHP, но это основы. Я настоятельно рекомендую вам прочитать хотя бы самые важные части поваренной книги.
Альф.