当前位置: 首页 > 面试题库 >

如何在mysql中存储顺序数据

苏宏逸
2023-03-14
问题内容

我得到了一些“ 锻炼程序” 内容,这些内容将按顺序显示给用户。下面显示了最简单形式的示例。

ID名称持续时间已完成
----------------------------------------
1跳10 1
2运行15 0
3骑行12 0
4个俯卧撑30 1

通常,这些表至少要包含100行/练习,并且大约有300个表(针对不同标准的不同练习)。我们没有任何前端,可以直接使用 _dbForge Studio_数据库编辑器更新数据库。

以前的开发人员已经设计了表格,以便唯一ID列也可用作序列号。它也构成url的一部分。例如xxx / exercise / 12专门在数据库中查找id =12的实际第12行(他假设所有id均以1递增并且按顺序排列),而不是在数据库中查找id=12

显而易见的问题是,当我们要在表 5中 添加一个练习时,比如说在 练习5 之后,然后在 5
之后手动添加它,然后必须手动更新以下所有练习的ID,以使它们按顺序排列。理想情况下,我们应该在表中添加一行,并 以某种方式
解释php代码,知道该练习应在 练习5 之后出现。

同样,例如,如果我们删除编号为17的练习,则xxx/exercise/17不会提供url中的内容。理想情况下,id =
18现在按顺序位于第17个位置,因此必须向其提供该内容。

尝试

我已经考虑过添加另一个列序列,该列序列将指示要使用的序列。但是,我又回到平方1了,因为我必须在添加/删除时更新序列号。

我还考虑过要创建另一个表并以我们想要提供内容的任何顺序存储ID号。-但是我不确定这是否是个好主意。

有人可以指导我解决这个问题的合适数据库/表设计吗?

编辑

我想我的问题还不清楚。
我不想重新填充/重新排序键。我知道那不是数据库的设计方式。
但是问题是,如果我在表的末尾添加内容,那么我如何告诉表/ php我想 在id = 15之后 提供新添加的内容(ID为127)
而不是最后一次提供。


问题答案:

关于“我还考虑过创建另一个表并以我们想要提供内容的任何顺序存储ID号。-但我不确定这是否是一个好主意。”

这不是一个好主意,这是一个绝妙的主意。这是一个斯凯尔顿设计。它不是完美的,但是它会让您入门。

表格练习-
ExerciseID,NameOfExercise,MeasuredIn,您可能需要的其他字段。NameOfExercise的样本值是上推式的(以重复测量),而RunningOnTheSpot的值(以秒为单位)。

表例程-RoutineId,NameOfRoutine和其他可能需要的字段。样本值包括Jane Fonda的例行程序,Navy Seal例行程序和Old
Fart的例行程序。

最后,表ExerciseRoutine。这是许多可能的关系。一项运动不仅可以进行例行活动,而且一项例行活动可以进行多项运动。字段可以是ExerciseID,RoutineID,Sequence,MeasuredInMultipler和其他可能需要的字段。

这是一些示例数据。

ExerciseId, NameOfExercise,       MeasuredIn
1           Push Ups              repetitions
2           Running on the Spot   seconds
3           Jumping Jacks         repetitions

RoutineId, NameOfRoutine
1          Jane Fonda
2          Navy Seal

最后

 RoutineID, ExerciseID, Sequence, MeasuredInMultipler
 1          2           1         60
 1          3           2         10
 2          1           1         500
 2          3           2         100

因此,Jane Fonda例程在现场运行60秒,然后运行10个Jumping
Jacks。同时,海军海豹突击队的常规训练是500俯卧撑,其次是100跳千斤顶。

这种方法使您可以拥有许多彼此独立的例程。



 类似资料:
  • 问题内容: 我尝试将DECIMAL与(2,2)一起使用,但不允许我使用。 我只想存储一个数字,例如7.50或10.50。我需要将两个数字都保留在小数点后,但是当我刷新数据库时,它将值重置为0.99。有什么建议么? 问题答案: 声明的第一位数字是 总数 。您可能想要使用。这允许小数点前最多两位数,小数点后两位数。 文档:https : //dev.mysql.com/doc/refman/5.7/e

  • 问题内容: 我在MySQL中有两个表。表人具有以下列: 该列可以包含null或字符串数​​组,例如(’apple’,’orange’,’banana’)或(’strawberry’)等。第二个表是Table Fruit,具有以下三列: 那么,我应该如何设计第一个表中的列,以便它可以容纳从第二个表中的列获取值的字符串数组?由于MySQL中没有数组数据类型,该怎么办? 问题答案: 正确的方法是在查询中

  • 我在MySQL中有两个表。Table Person具有以下列: 水果列可以包含null或字符串数组,如('apple','orange','banana')或('草莓')等。第二个表是水果表,有以下三列: 那么,我应该如何设计第一个表中的水果列,以便它可以容纳从第二个表中的水果名称列获取值的字符串数组?既然MySQL中没有数组数据类型,我应该怎么做?

  • 问题内容: 这星期我们在办公室进行了一场健康的辩论。我们正在创建一个Db来存储代理信息,在大多数情况下,除了应该如何存储IP之外,我们还制定了模式。一个阵营想要使用4个smallint,每个八位位组一个,另一个希望使用1个大int INET_ATON。 这些表将非常庞大,因此性能至关重要。我处于中间位置,因为我通常在世界中使用MS SQL和4个小整数。我对这种类型的IP存储量没有足够的经验。 我们

  • 问题内容: 我有一个具有数据类型joda.money属性的类。如何将这个属性映射到mysql中。 我的课是: @Table(name =“ products”)公共类Product(){@Column(name =“ name”)字符串名称;@Column(name =“ money”)金钱金钱;} 我正在使用Spring Hibernate 谁能说出如何将此模型存储到mysql中? 问题答案:

  • 问题内容: 如何在免费版本的MySQL中存储Unicode? 在SQL Server中似乎没有类型。MySQL不支持Unicode吗?我尝试使用,但是那也不起作用。 问题答案: 您需要为表选择一个 字符集。然后,文本和备注字段将自动存储在UTF-8中。MySQL 6中提供了对UTF-16的支持。