2015-08-02 3 views
0

Я всего лишь неделю изучаю Rails (4) и создаю простое приложение. У меня четыре таблицы.Какой лучший дизайн базы данных?

1) Львов 2) PANTHERS 3) Тренеры 4) Игрушки

  • Игрушка может принадлежать либо лев или пантера. Игрушка будет принадлежать только одному коту за раз (так что лучше всего сделать это полиморфным. Следующая часть - это то, где я становлюсь неуверенным).

  • Тренер может тренировать льва, пантеры или и то, и другое.

  • Лев или пантера могут иметь более одного тренера.

Я сделал таблицу полиморфных тренеров, но при посеве каждого тренера с первым львом затем пантерой, я увидел, что пантеры отменяют лев. Кажется, мне нужно будет создать еще один экземпляр каждого тренера, чтобы дать им вторую кошку, которая также даст тому же тренеру второй идентификатор, которого я не хочу. Может быть, дизайн many_to_many между Lions/Trainers и Panthers/Trainers будет лучше? Мои вопросы об этом, как только я создаю таблицу соединений для каждого many_to_many, когда я хочу перечислить кошек, которые тренируют каждый тренер, потребуются ли две петли, одна через lions_trainers, а также panthers_trainers? И это даже лучший подход? По общему признанию, это было бы легче, если бы Львы и Пантеры были в одной таблице, но это не в назначении. Предложения/ввод оценены :)

+2

Почему у вас есть отдельные столы для пантеры против львов? Подумайте об этом внимательно: эти типы кошек могут быть разными в реальности, но для целей вашего приложения, разве они оба не просто обучают предметы? Как только вы разрешите этот вопрос, много умственной гимнастики, которую вы делаете, выходит прямо из окна. – MarsAtomic

+0

lol, я полностью согласен, что они должны быть в одном столе! но это задание на домашнее задание, а задание указано, что они находятся в двух разных таблицах (с целью использования полиморфизма для игрушки). Я тот, кто решил выйти за борт и решил, что у каждой кошки может быть более одного тренера. вещи были сложными с тех пор :( – HolyMoly

+0

, может быть, я просто откинусь назад и придерживаюсь заданий, но все равно буду интересоваться любыми предложениями о том, как получить то, что я изначально планировал выполнить. :) – HolyMoly

ответ

1

Мне кажется, что вам нужно создать «абстрактный» стол для кошек, , который будет иметь соотношение 1: 1 как с таблицей львов, так и с таблицей panthers, и иметь много для многих таблиц отношений между таблицей кошек и таблицей тренеров.

Смежные вопросы