如何构建数据库,以便我不必一直更新冗余数据?

时间:2013-02-01 08:41:06

标签: php mysql database algorithm

数据库结构

可以使用用户提交的搜索词来搜索transaction_detail表条目。关键字列包括搜索术语,例如描述和客户名称,并在添加新记录时插入。然后检查关键字列是否与搜索词匹配。

人员表

+----+------+
| ID | NAME |
+----+------+
| 12 | Mike |
+----+------+

Transaction_detail表

+----+--------------------------+-----------------+---------------------------+
| ID | DESCRIPTION              | CUSTOMER_ID(FK) | KEYWORDS                  |
+----+--------------------------+-----------------+---------------------------+
| 55 | Delivery from ABC Stores |              12 | ABC stores, delivery,mike |
+----+--------------------------+-----------------+---------------------------+

方案

更改客户名称(Mike)时,需要使用Customer_id 12更新每行中的关键字列。

但是,当Transaction_details表有几百行时,此方法变得非常低效。有人能告诉我另一种改进表中记录搜索的方法。

1 个答案:

答案 0 :(得分:2)

@Niko所述,这应该存储在另一个表(或两个)中:

关键字表

+----+------------+
| id | name       |
+----+------------+
|  1 | ABC stores |
|  2 | delivery   |
+----+------------+

人与关键字表

+-----------+------------+
| person_id | keyword_id |
+-----------+------------+
|        12 |          1 |
|        12 |          2 |
+-----------+------------+

然后,当您想知道哪个关键字发送给女巫时,只需将它们加入ID即可获得您的列表。