数据库设计思路/反馈

标签 database database-design nosql

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

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

然后我将有另一个名为“设备”的表格,其中列出了任何健身房可能拥有的设备,例如“长凳”、“盒子”、“举重板”等。

然后我有一个 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 个表没有足够的信息来处理权重问题?

我认为有两种简单的方法可以处理这个问题

  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

然后你就可以计算出健身房 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/

相关文章:

c# - 如何在 Asp.net MVC 中实现对象数据库

mysql - AWS Django Elastic Beanstalk 迁移错误

mysql - 哪一个是正确的?

mysql - 将单表拆分为多对多关系

sql - 如何在我的数据库中执行数据完整性规则?

mongodb - 通过 mongoose 为 mongodb 中集合文档中的每个嵌套对象创建 ID

mongodb - 排序不是 mongodb 中的函数

database - django,多个数据库,配置问题: "Error importing database router"

database - 对备份数据库使用 rpm -V

ruby-on-rails - 在 rails tinymce 中显示图像而不是显示长字符串时出现问题