我以前做过很多关系数据库设计,并且认为我在某些设计模式中很有经验...但是,我想不出从哪里开始解决这个问题。
我正在创建一个健身房数据库,该数据库将在“健身房”表中包含基本的健身房信息。
然后,我将有另一个名为“设备”的表,该表列出了任何健身房可以使用的可能设备,例如“长凳”,“盒子”,“重量盘”等。
然后我有一张GymsEquipment的表,其中有以下列表:GymId,EquipmentId,Available。
task.FireAndForget();
这都是很基本的...但是现在这是我遇到的困难部分。我还想记录每个体育馆对每种设备的可用重量。
例如,我要记录健身馆A的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
中的weight plates
....而健身馆B也有2.5lbs, 5lbs, 10lbs, 25lbs, 35lbs, 45lbs and 100lbs
,但是它们有以下内容:{{1} }。
为了使事情变得更复杂...健身房也被标记为英制或公制...因此,健身房C具有weight plates
,但它们是5lbs, 25lbs, 45lbs
。
我考虑了一个选项,我只是简单地列出用户拥有的所有可能选项(并且会根据健身房表知道其单位),如下所示:
weight plates
我真的不确定如何从这类信息开始。如果这会更理想,我也会对No-SQL解决方案持开放态度...但是我对此不太熟悉,并且无论如何,都无法提出可扩展的想法。
有人有任何反馈或更好的主意吗?谢谢
答案 0 :(得分:2)
如果我没看错-那么我认为您最初的3张桌子没有足够的信息来处理权重问题?
我认为有两种简便的方法可以解决此问题
选项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
然后,您将可以确定Gym 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-((非常)英制重量的近似值!)