Php 使用数字值存储在数据库描述中
我将这种文本作为“描述”,但有些值是数字,必须根据比率进行更改。我想知道如何正确地将其存储在数据库中 “-在我的7个包中添加49件物品” 我最初的想法是这样做:Php 使用数字值存储在数据库描述中,php,mysql,database,reactjs,Php,Mysql,Database,Reactjs,我将这种文本作为“描述”,但有些值是数字,必须根据比率进行更改。我想知道如何正确地将其存储在数据库中 “-在我的7个包中添加49件物品” 我最初的想法是这样做: +-------+------+---------------+------+---------+------------+-----------+ | part1 | num1 | part2 | num2 | part3 | rationum1 | rationum2 | +-------+------+---
+-------+------+---------------+------+---------+------------+-----------+
| 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
- 目标描述:行李
如果是这样的话,您可能需要一套更精细的表格布局,其中考虑了短语的各个部分。然后您的查询可以使用适当的联接操作。建议的表布局没有问题。它也不是低效的。MySql就是为此而构建的。它可以毫不费力地处理数百万行这样的事情 在每一行中添加一个自动递增的
id
值,用作主键。您可能也想考虑添加一个时间戳列。
将num1和num2列定义为int
,如果需要小数,则定义为double
。(Javascript将所有数字视为双精度)
将分数列定义为double
将文本列定义为varchar(250)
或类似的内容,并为工具提示的文本添加文本列
而且,你完成了
但是当我看你的例子时,在我的7个包中添加49件东西我看到的不仅仅是一个短语
- 动词:添加
- 来源计数:49
- 来源描述:事物
- 介词:in
- 所有格:my
- 目标计数:7
- 目标描述:行李
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)进行显示。感谢您的回答。你有一个很好的直觉,因为我会有其他的句子没有真正联系到这一个,有点不同,但仍然重复至少这个模式:“文本”数字“文本”…谢谢你的回答。你有一个很好的直觉,因为我会有其他的句子没有真正的联系到这一个,有点不同,但仍然重复至少这个模式:“文本”数字“文本”。。。