首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库设计思想/反馈

数据库设计思想/反馈
EN

Stack Overflow用户
提问于 2018-08-27 00:24:49
回答 1查看 82关注 0票数 1

我以前做过很多关系数据库设计,并且认为我在其中一些设计patterns...however方面有经验,我想不出从哪里开始解决这个问题。

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

然后我会有另一张桌子,叫做“设备”,这是任何健身房都可以拥有的设备清单,比如“长凳”、“盒子”、“体重板”等等。

然后我有一个用于GymsEquipment的表,这是一个可用的列表: GymId,EquipmentId。

代码语言:javascript
运行
复制
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

这是相当basic...but,现在是困难的部分,我有困难。我也想记录每一个健身房的每一个设备的可用重量。

例如,我想记录一下,健身房A有weight plates of 2.5lbs, 5lbs, 10lbs, 25lbs, 35lbs, 45lbs and 100lbs....while健身房B也有weight plates,但是他们有:5lbs, 25lbs, 45lbs

为了使事情变得更多,complicated...gyms也被标记为帝国或Metric...so健身房有weight plates,但他们的是1.25kg, 2.5kg, 5kg, 10kg, etc

我已经考虑了一个选项,我只是简单地列出了用户拥有的所有可能的选项(并且知道它是基于健身房表的哪一个单元)如下:

代码语言:javascript
运行
复制
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
.......

我真的不知道如何从这类信息开始。如果这是我不太熟悉的ideal...but,那么我也愿意使用No-SQL解决方案,而且不管怎么说,我还没有想出一个可伸缩的想法。

有没有人有任何反馈,或者更好的,更好的想法?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 01:19:51

如果我正确地阅读了这篇文章,那么我不认为你最初的3个表包含了足够的信息来处理权重问题。

我认为有两种简单的方法来处理这件事。

  1. 将权重列添加到设备表中(对于非权重,默认为0)
  2. 有一个(可选的)一对多的连接从设备到一个重量板表。

选项A-您的表可能如下所示:

代码语言:javascript
运行
复制
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×2.5,10 * 5,4* 10和4*20的重量板。

选项B-您的表可能如下所示:

代码语言:javascript
运行
复制
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

你的健身器材桌是这样的:

代码语言:javascript
运行
复制
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有4x2.5,4* 5,4* 10和4*20的重量盘。(共10 x 2.5、10 * 5、4* 10及4*20)

对于帝国到米制-我会把它看作是完全独立的物品(例如,2.5公斤的盘子不是5磅的盘子)-或者作为一个展示问题,并在事实发生后用公式转换细节。例如:

代码语言:javascript
运行
复制
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 -((非常))帝国重量的粗略近似!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52031229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档