Идеи дизайна базы данных / Обратная связь - PullRequest
0 голосов
/ 27 августа 2018

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

Я создаюбаза данных спортивных залов, которая будет иметь основную информацию о тренажерном зале в таблице «Тренажерный зал».

Затем у меня будет еще одна таблица под названием «Оборудование», которая представляет собой список возможного оборудования, которое может иметь любой тренажерный зал, например «Скамья»."," Box "," Weight Plate "и т. Д.

Затем у меня есть таблица для GymsEquipment, которая представляет собой список: GymId, EquipmentId, Available.

GYMS
-----------------
id   Name    Units
1    Gym A   Imperial
2    Gym B   Imperial
3    Gym C   Metric

EQUIPMENT
-----------------
id   Name
1    Bench
2    Box
3    Weight Plate
4    Dumbbells

GYM EQUIPMENT
-----------------
id   GymId    EquipmentId    Available
1    1        1              1
2    1        2              0
3    1        3              1
4    2        1              0
5    2        2              1
6    2        3              1

Вот и вседовольно простой ... но теперь вот трудная часть, с которой у меня возникают проблемы.Я также хочу записать доступный вес, который каждый тренажерный зал имеет для каждого оборудования.

Например, я хочу записать, что тренажерный зал A имеет weight plates из 2.5lbs, 5lbs, 10lbs, 25lbs, 35lbs, 45lbs and 100lbs .... в то время как тренажерный зал B также имеет weight plates, но у них есть такие: 5lbs, 25lbs, 45lbs.

Чтобы сделать вещи немного более сложными ... тренажерные залы также помечены как имперские или метрические ... поэтому в тренажерном зале C есть weight plates, но их1.25kg, 2.5kg, 5kg, 10kg, etc.

Я рассмотрел вариант, в котором я просто просто перечисляю все возможные варианты, которые есть у пользователя (и узнает, в какой единице он основан на таблице спортивных залов), например:

GYM EQUIPMENT WEIGHT
----------------------
id   GymId    EquipmentId    Weight
1    1        3              2.5
2    1        3              5
3    1        3              10
4    1        3              25
5    1        3              35
6    1        3              45
7    2        3              5
8    2        3              25
9    2        3              45
.......

Я действительно не уверен, как начать с такого рода информации.Я также был бы открыт для решения без SQL, если бы оно было более идеальным ... но я менее знаком с этим и, тем не менее, не смог придумать масштабируемую идею.

Кто-нибудьесть отзывы, или еще лучше, лучшие идеи?Спасибо

1 Ответ

0 голосов
/ 27 августа 2018

Если я правильно читаю - тогда я не думаю, что ваши первые 3 таблицы содержат достаточно информации, чтобы справиться с проблемой Весов?

Я думаю, что есть 2 простых способа справиться с этимлибо

  1. Добавление столбца «Вес» в таблицу «Оборудование» (по умолчанию 0 для не гирь)
  2. Наличие (необязательно) ссылки «Один ко многим» из таблицы «Оборудование» в таблицу «Плиты веса».

Вариант A - ваши таблицы могут выглядеть следующим образом:

EQUIPMENT
-----------------
id   Name          Weight
1    Bench         0
2    Box           0
3    Weight Plate  2.5
4    Dumbbells     0
5    Weight Plate  5
6    Weight Plate  10
7    Weight Plate  20

GYM EQUIPMENT
-----------------
id   GymId    EquipmentId    Available
1    1        3              10
2    1        5              10
3    1        6              4
4    1        7              4

Тогда вы сможете понять, что у Gym 1 есть 10 x 2,5, 10 * 5, 4 * 10 &4 * 20 весовых табличек.

Вариант B - ваши столы могут выглядеть следующим образом:

EQUIPMENT
-----------------
id   Name          
1    Bench         
2    Box           
3    Weight Plate  
4    Dumbbells     

WEIGHT PLATES
-----------------
id   Weight
1    2.5
2    5        
3    10
4    20

EQUIPMENT TO PLATES
-----------------
id equipment_id   Weight_id  Available
1  3              1          10
2  3              2          10
3  3              3          4
4  3              4          4

А ваш стол с тренажерами выглядит так:

GYM EQUIPMENT
-----------------
id   GymId    EquipmentId    WeightId   Available
1    1        3              1          4
2    1        3              2          4
3    1        3              3          4
4    1        3              4          4

Тогда выможно было бы понять, что тренажерный зал 1 имеет 4 х 2,5, 4 * 5, 4 * 10 и 4 * 20 весовых плит.(Из 10 x 2,5, 10 * 5, 4 * 10 и 4 * 20)

Для Imperial to Metric - я бы отнесся к этому как к совершенно отдельным предметам (например, тарелка 2,5 кг , а не табличка 5 фунтов) - или как проблема отображения и преобразовать детали с формулой после факта.Например:

WEIGHT PLATES
-----------------
id   Weight  Metric?
1    2.5     true
2    5       true
3    10      true
4    20      true
5    5       false
6    10      false
7    20      false
8    40      false

PS - ((очень) грубое приближение имперских весов!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...