Php 使用数字值存储在数据库描述中

Php 使用数字值存储在数据库描述中,php,mysql,database,reactjs,Php,Mysql,Database,Reactjs,我将这种文本作为“描述”,但有些值是数字,必须根据比率进行更改。我想知道如何正确地将其存储在数据库中 “-在我的7个包中添加49件物品” 我最初的想法是这样做: +-------+------+---------------+------+---------+------------+-----------+ | part1 | num1 | part2 | num2 | part3 | rationum1 | rationum2 | +-------+------+---

我将这种文本作为“描述”,但有些值是数字,必须根据比率进行更改。我想知道如何正确地将其存储在数据库中

“-在我的7个包中添加49件物品”

我最初的想法是这样做:

+-------+------+---------------+------+---------+------------+-----------+
| part1 | num1 |     part2     | num2 |  part3  |  rationum1 | rationum2 |
+-------+------+---------------+------+---------+------------+-----------+
| - Add |   49 | things  in my |    7 |    bags |        1.3 |       1.2 |
+-------+------+---------------+------+---------+------------+-----------+
然而,它似乎效率很低。另外,我想添加一些东西的工具提示。例如,“-Add”必须链接工具提示,但我不知道如何仅在表的一部分应用属性

欢迎提供任何建议


编辑:我使用PHP获取JSON格式的数据,然后使用JavaScript(React)进行显示。

建议的表布局没有问题。它也不是低效的。MySql就是为此而构建的。它可以毫不费力地处理数百万行这样的事情

在每一行中添加一个自动递增的
id
值,用作主键。您可能也想考虑添加一个时间戳列。

将num1和num2列定义为
int
,如果需要小数,则定义为
double
。(Javascript将所有数字视为双精度)

将分数列定义为
double

将文本列定义为
varchar(250)
或类似的内容,并为工具提示的文本添加文本列

而且,你完成了

但是当我看你的例子时,在我的7个包中添加49件东西我看到的不仅仅是一个短语

  • 动词:添加
  • 来源计数:49
  • 来源描述:事物
  • 介词:in
  • 所有格:my
  • 目标计数:7
  • 目标描述:行李
你的系统是否也需要说从乔的2个弹药箱中偷5枚手榴弹或诸如此类的东西(我假设你正在做某种游戏)


如果是这样的话,您可能需要一套更精细的表格布局,其中考虑了短语的各个部分。然后您的查询可以使用适当的联接操作。

建议的表布局没有问题。它也不是低效的。MySql就是为此而构建的。它可以毫不费力地处理数百万行这样的事情

在每一行中添加一个自动递增的
id
值,用作主键。您可能也想考虑添加一个时间戳列。

将num1和num2列定义为
int
,如果需要小数,则定义为
double
。(Javascript将所有数字视为双精度)

将分数列定义为
double

将文本列定义为
varchar(250)
或类似的内容,并为工具提示的文本添加文本列

而且,你完成了

但是当我看你的例子时,在我的7个包中添加49件东西我看到的不仅仅是一个短语

  • 动词:添加
  • 来源计数:49
  • 来源描述:事物
  • 介词:in
  • 所有格:my
  • 目标计数:7
  • 目标描述:行李
你的系统是否也需要说从乔的2个弹药箱中偷5枚手榴弹或诸如此类的东西(我假设你正在做某种游戏)

如果是这样的话,您可能需要一套更精细的表格布局,其中考虑了短语的各个部分。然后您的查询可以使用适当的联接操作。

也许可以将其规范化

F.e.将带有占位符的说明与工具提示一起放在另一个表中

然后将一个外键与项一起放入表中

示例代码:

DROP TABLE IF EXISTS tst_stuff;
DROP TABLE IF EXISTS tst_stufftodo;

CREATE TABLE tst_stufftodo (id int primary key auto_increment, description varchar(100), tooltip varchar(1000));

CREATE TABLE tst_stuff (id int primary key auto_increment, name varchar(100), num1 int not null default 0, num2 int not null default 0, rationum1 decimal(4,1) not null default 0, rationum2 decimal(4,1) not null default 0, 
std_id int,
FOREIGN KEY (std_id) REFERENCES stufftodo(id)
);

INSERT INTO tst_stufftodo (description, tooltip)
VALUES 
('Add &num1& things in my &num2& &name&', 'Add the stuff');

INSERT INTO tst_stuff (name, num1, num2, rationum1, rationum2, std_id) VALUES
('bags', 49, 7, 1.2, 1.3, 1),
('socks', 1000000, 2, 0.5, 0.6, 1);

select s.id, replace(replace(replace(std.description,'&name&',s.name), '&num1&',s.num1), '&num2&',s.num2) as description
from tst_stuff s
join tst_stufftodo std on std.id = s.std_id;
结果:

id  description
1   Add 49 things in my 7 bags
2   Add 1000000 things in my 2 socks
但是,替换PHP表示层中的占位符可能更好

也许可以将其正常化

F.e.将带有占位符的说明与工具提示一起放在另一个表中

然后将一个外键与项一起放入表中

示例代码:

DROP TABLE IF EXISTS tst_stuff;
DROP TABLE IF EXISTS tst_stufftodo;

CREATE TABLE tst_stufftodo (id int primary key auto_increment, description varchar(100), tooltip varchar(1000));

CREATE TABLE tst_stuff (id int primary key auto_increment, name varchar(100), num1 int not null default 0, num2 int not null default 0, rationum1 decimal(4,1) not null default 0, rationum2 decimal(4,1) not null default 0, 
std_id int,
FOREIGN KEY (std_id) REFERENCES stufftodo(id)
);

INSERT INTO tst_stufftodo (description, tooltip)
VALUES 
('Add &num1& things in my &num2& &name&', 'Add the stuff');

INSERT INTO tst_stuff (name, num1, num2, rationum1, rationum2, std_id) VALUES
('bags', 49, 7, 1.2, 1.3, 1),
('socks', 1000000, 2, 0.5, 0.6, 1);

select s.id, replace(replace(replace(std.description,'&name&',s.name), '&num1&',s.num1), '&num2&',s.num2) as description
from tst_stuff s
join tst_stufftodo std on std.id = s.std_id;
结果:

id  description
1   Add 49 things in my 7 bags
2   Add 1000000 things in my 2 socks

但是,替换PHP表示层中的占位符可能更好

为什么不使用
VARCHAR
作为数据类型?请看这个“另外,我想添加一些东西的工具提示。”然后请务必提及您的服务器端语言以及如何获取和显示数据。我使用PHP获取JSON格式的数据,然后使用JavaScript(React)进行显示。为什么不使用
VARCHAR
作为数据类型?请参阅“另外,我想添加一些东西的工具提示。”然后请务必提及您的服务器端语言以及如何获取数据并显示数据。我使用PHP将数据获取为JSON,然后使用JavaScript(React)进行显示。感谢您的回答。你有一个很好的直觉,因为我会有其他的句子没有真正联系到这一个,有点不同,但仍然重复至少这个模式:“文本”数字“文本”…谢谢你的回答。你有一个很好的直觉,因为我会有其他的句子没有真正的联系到这一个,有点不同,但仍然重复至少这个模式:“文本”数字“文本”。。。