数据库设计思路/反馈

时间:2018-08-27 00:24:49

标签: database database-design nosql

我以前做过很多关系数据库设计,并且认为我在某些设计模式中很有经验...但是,我想不出从哪里开始解决这个问题。

我正在创建一个健身房数据库,该数据库将在“健身房”表中包含基本的健身房信息。

然后,我将有另一个名为“设备”的表,该表列出了任何健身房可以使用的可能设备,例如“长凳”,“盒子”,“重量盘”等。

然后我有一张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解决方案持开放态度...但是我对此不太熟悉,并且无论如何,都无法提出可扩展的想法。

有人有任何反馈或更好的主意吗?谢谢

1 个答案:

答案 0 :(得分:2)

如果我没看错-那么我认为您最初的3张桌子没有足够的信息来处理权重问题?

我认为有两种简便的方法可以解决此问题

  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

然后,您将可以确定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-((非常)英制重量的近似值!)

相关问题