我很难试图形成我的实际问题,所以希望我可以通过视觉辅助获得重要的一点。MySQL - 优化列引用?
我想知道的是我目前的数据库设计是否存在可怕的缺陷,效率稍低或者......是否正确。
问:除了仅保存该列名称的字符串外,是否有更好的方式让行单元引用另一个表中的列?
例如: 有两个表。
table01:有3列 - C_ID,客户层(层保持层的在TABLE02列名)
TABLE02:具有5列 - i_id,项,等级1,层2,的Tier3
table01 +------+----------+------+
|'c_id'|'customer'|'tier'|
+------+----------+------+
| 1 | John | tier1|
| 2 | Lisa | tier2|
| 3 | Mike | tier1|
| 4 | Tom | tier3|
+------+----------+------+
table02 +------+------+-------+-------+-------+
|'i_id'|'item'|'tier1'|'tier2'|'tier3'|
+------+------+-------+-------+-------+
| 1 | apple| $1.99 | $2.99 | $3.99 |
| 2 | chalk| $2.99 | $3.99 | $4.99 |
| 3 | pens | $3.99 | $4.99 | $5.99 |
| 4 | shirt| $4.99 | $5.99 | $6.99 |
+------+------+-------+-------+-------+
结果:
John +------+-------+
| apple| $1.99 |
| chalk| $2.99 |
| pens | $3.99 |
| shirt| $4.99 |
+------+-------+
选择约翰的行会产生等级1,这然后用于查询table02.tier1,并获取该列的内容。 (以第一级客户的折扣价格)。然后,tier1项目将以正确的价格显示。
是否有一种更有效的方式来引用外部表的列名称,比如......以外键风格?如果列名更改,那么该信息会跳转到其他链接的数据单元?我的方法是否正确,还是应该重组我如何做事?
“table02”中的'i_id'是否与'table01'中的'c_id'结合?如果不是的话,你如何确定'table02'中的哪一行属于'table01'中的行? –