保存用户的身高和体重

2024-06-26

我应该如何将用户的身高和体重存储在MySQL数据库中,以便我可以使用这些信息来查找特定身高或体重内的用户?另外,我需要能够以英制或公制显示此信息。

我的想法是存储以厘米为单位的身高和以公斤为单位的体重信息(我更喜欢公制而不是英制)。我什至可以让用户输入他们的信息和英文系统,但在保存之前转换为公制。我认为在 SQL 中将千克转换为磅可能很容易,但我不确定转换有多容易178厘米到5'10"(稍微向下舍入)。

我是否应该在数据库中保存英制和公制值,以便在执行查询时不需要进行转换?存储派生/计算值听起来是个坏主意。


有几种方法......一种是只有两个数字列,一列用于高度,一列用于重量,然后在显示时进行转换(如果需要)。另一种方法是创建一个“身高”表和一个“体重”表,每个表都有一个从另一个表链接的主键。然后,您可以在这些表中存储英制和公制值(以及您想要的任何其他元信息):

CREATE TABLE height (
    id          SERIAL PRIMARY KEY,
    english     VARCHAR,
    inches      INT,
    cm          INT,
    hands       INT  // As in, the height of a horse
);

INSERT INTO height VALUES
    (1,'4 feet',           48, 122, 12),
    (2,'4 feet, 1 inch',   49, 124, 12),
    (3,'4 feet, 2 inches', 50, 127, 12),
    (3,'4 feet, 3 inches', 51, 130, 12),
    ....

你明白了...

然后你的用户表将引用height and weight表——可能还有许多其他维度表——星座、婚姻状况等。

CREATE TABLE users (
    uid         SERIAL PRIMARY KEY,
    height      INT REFERENCES height(id),
    weight      INT references weight(id),
    sign        INT references sign(id),
    ...
);

然后搜索 4 到 5 英尺之间的用户:

SELECT *
FROM users
JOIN height ON users.height = height.id
WHERE height.inches >= 48 AND height.inches <= 60;

这种方法有几个优点:

  • 您不必重复“努力”(就好像它是任何实际工作一样)来进行显示转换 - 只需选择您想要显示的格式!
  • 它使得在 HTML 选择中填充下拉框变得超级简单——只需SELECT english FROM height ORDER BY inches, 例如。
  • 它使您的各种维度的逻辑 - 包括非数字的逻辑(如占星术符号)明显相似 - 您不需要为每种数据类型到处都有特殊情况代码。
  • 它的扩展性非常好
  • 它可以轻松添加新的数据表示形式(例如,将“手”列添加到高度表中)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保存用户的身高和体重 的相关文章

  • SQLite数据库分区

    我想创建 sqlite 分区结构 我创建了3个数据库 我将这 3 个数据库附加到另一个数据库 该数据库将成为父数据库 ATTACH DATABASE 1 db as 1 ATTACH DATABASE 2 db as 2 ATTACH DA
  • 如何连接W10通用App和MySQL数据库

    我正在编写第一个在 MySql 数据库上运行的 Windows 10 通用应用程序 我使用了本指南中的代码 适用于 Windows 8 商店应用程序 https blogs oracle com MySqlOnWindows entry h
  • SSD 上的 MySQL 基准测试:工具和策略

    我目前正在将我的服务器从在硬盘驱动器上运行 MyISAM 切换到在 SSD 上运行 InnoDB 我有一个3 800 000 行 16GB 表作为基准表 我的服务器设置 Ubuntu 64 Nginx MySQL 5 5 我心里有两件事我想
  • 将数据从 CSV 文件导入 MySQL,科学记数法

    我正在使用 LOAD DATA INFILE 从 CSV 读取数据并将其插入到 MySQL 表中 问题在于 CSV 中的一列采用科学记数法 当读取该列并将其加载到表中时 它不会进入 DOUBLE FLOAT 或 REAL 类型的列 有针对这
  • 将多个表中的数据获取到单行中,同时连接一些值

    我正在尝试从表中检索数据并将多行合并为一列 而不重复任何信息 我有以下表格 简介 资格 项目 Profile pro id surname firstname 1 John James 2 King Fred 3 Luxury Yachts
  • 如何在 MariaDB 或 MySQL 中创建文本类型的外键?

    我有两张桌子 CREATE TABLE first table my id TEXT 6 NOT NULL content VARCHAR 30 NOT NULL PRIMARY KEY my id 6 Engine InnoDB char
  • mysql字符串转换返回0

    why select aaa 0返回 1 真 如果我有一张像这样的桌子 userid pass user1 pas1 如果我查询 select from table where userid 0 and pass 0 它给了我所有的行 My
  • MySQL 在 Windows 上将数据库文件存储在哪里以及文件的名称是什么?

    我不小心格式化了硬盘并重新安装了 Windows 却忘记备份 MySQL 服务器中的重要数据库 我现在正在尝试使用某些软件来挽救文件 但我不知道要寻找什么 文件存储的路径是什么 文件的名称是什么 我应该查找什么命名约定或文件扩展名 我相信我
  • 使用 Laravel Eloquent 关系构建三元关系

    拥有三个实体 Project Employee 就业 问题描述 员工可以从事多个项目 每个项目都有一份工作 我想要访问所有项目以及您推荐的某个员工的就业情况 我不确定 但这种关系一定看起来像ternary 物理表尚未定义 因此 可以自由地设
  • 无法在 Windows 中安装 mysql-python(较新版本)

    I have mysql pythonv1 2 4 在我的机器 Windows 8 上安装得很好 我正在使用Python 2 7 每次尝试升级到 v1 2 5 时 我总是遇到以下错误 从 v1 3 7 开始仍然发生 C Users User
  • 如何用PHP显示分层的“NESTED SET”数据?

    我试图弄清楚如何使用 php 显示嵌套的 MySQL 数据 我已经设法搁置所有 叶节点 但后来我陷入困境 我需要显示一整棵树及其所有元素的关系 这是表格 category id name lft rgt 1 Saws 1 12 2 Chai
  • 如何在对应用程序影响最小的情况下从 MySQL“切换”到 Amazon RDS?

    Amazon 官方表示 Amazon RDS 让您能够访问熟悉的 MySQL 数据库的全部功能 这意味着您现在已经在现有 MySQL 数据库中使用的代码 应用程序和工具可以与 Amazon RDS 无缝协作 我不明白这一点 Amazon R
  • 如何查询两个日期之间的“日期”字段是字符串?

    我在 MySQL 数据库中有一个表 其中有一个名为 日期 的字段 问题是日期的格式为 DD MM YYYY 因此我无法将其作为 DATE 类型字段上传到 MySQL 相反 字段类型是字符串 考虑到这一点 我如何编写能够产生这种效果的查询 S
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • 在 Symfony2 (Doctrine) 和 MySQL 中启用微秒

    我有一个具有一列 日期时间 类型的实体来存储时间戳 ORM Column type datetime protected timestamp 我有 MySQL 5 5 40 我发现它不存储微秒 所以我切换到 5 6 21 并导入了所有表格和
  • 使用 C++ 连接器的 C++ mysql 连接 bad_alloc

    尝试建立一个简单的 mysql 连接 但得到一个bad alloc即使查看类似的帖子 我也不知道如何解决这个问题 这是我的代码 include
  • SQL LIKE 实际上是如何工作的

    例如 当我有这样的字符串时 ABBBCSLAK JDK ASAAAAFJKDSKJFSDF 当我像这样使用 SQL 时 SELECT FROM table WHERE column LIKE JDK 当服务器访问 JDK 时到底会发生什么
  • MySQL 错误:1395 无法从连接视图中删除

    我正在尝试从通过连接多个表生成的视图中删除一条记录 我有一个新用户要在此特定视图上删除和插入 我可以将记录插入视图 但无法从视图中删除 您能指出下面这段 SQL 语句中的错误吗 create view v1 as select a from
  • 如何在数据库中存储世界各地的所有地理位置?

    我在一家旅游网站工作 我需要存储游客去过的旅游景点 我需要位置表中的地点是唯一的 以便我可以知道特定地点的受欢迎程度等 我还需要存储在我身边的所有国家 州 城市 因为我不能依赖用户输入 数据库是MySQL 看到这些位置的可用数据集 我发现存
  • 不允许在 MS Access 中创建或更改记录

    我已经阅读了有关上述问题的大量帖子 但没有一个答案能够解决问题 我的问题是两个表使用 ID 字段 也是主键 相互链接 以一对一的关系 当我尝试在主表中输入记录时 不知道 Access 是否知道这是主表 出现以下错误 You cannot a

随机推荐