我以前做过很多关系数据库设计,我认为我对其中一些设计模式有经验......但是,我想不出从哪里开始解决这个问题。
我正在创建一个健身房数据库,它将在“健身房”表中包含基本的健身房信息。
然后我将有另一个名为“设备”的表格,其中列出了任何健身房可能拥有的设备,例如“长凳”、“盒子”、“举重板”等。
然后我有一个 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 的重量板
2.5lbs、5lbs、10lbs、25lbs、35lbs、45lbs 和 100lbs
....而健身房 B 也有举重板
,但它们有这些:5lbs、25lbs、45lbs
。
为了让事情变得更复杂一些...健身房也被标记为英制或公制...所以健身房 C 有配重板
,但他们的是1.25kg,2.5kg , 5kg, 10kg等
.
我考虑过一个选项,我只是简单地列出用户拥有的所有可能选项(并且会根据健身房表知道它是什么单位),如下所示:
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
.......
我真的不确定如何从这类信息入手。如果 No-SQL 解决方案更理想的话,我也会对它持开放态度……但我对此不太熟悉,无论如何,我都无法提出可扩展的想法。
有没有人有任何反馈,或者更好的想法?谢谢
最佳答案
如果我没看错 - 那么我认为您最初的 3 个表没有足够的信息来处理权重问题?
我认为有两种简单的方法可以处理这个问题
- 将重量列添加到设备表(非重量默认为 0)
- 具有从设备到举重板表的(可选)一对多链接。
选项 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
然后你就可以计算出健身房 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
你的健身器材 table 是这样的:
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 x 2.5、4 * 5、4 * 10 和 4*20 的重量板。 (总共 10 x 2.5、10 * 5、4 * 10 和 4*20)
对于英制到公制 - 我会将其视为完全独立的项目(例如 2.5KG 的盘子不是 5LB 的盘子) - 或者作为显示问题并在之后用公式转换细节事实。 例如:
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 -((非常)粗略估计英制重量!)
关于数据库设计思路/反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52031229/