我正在构建一组相互关联并包含彼此信息的数据库。例如,数据库的主要功能之一是记录路径和端点;
路径 1 穿过端点 point_1、point_2、point_3、point_4 和 point_5
路径_1
= p1-p2-p3-p4-p5
路径 2 穿过端点 point_1、point_2 和 point_5
Path_1
= p1-p2-p5
数据库结构:
path_id | start_point | point_1 | point_2 | point_3 | end_point |
--------|-------------|---------|---------|---------|-----------|
1 | p_1 | p_2 | p_3 | p_4 | p_5 |
2 | p_1 | p_2 | | | p_5 |
等等……
我的问题是我并不总是知道它会跨越多少个点。可能是 5 个,也可能超过 15 个。如何构建数据库以便分配可变数量的点? (路径顺序很重要)
除此之外,每个点对点路径还有一个与之相关联的 ID。例如 p1-p2
= 0001
和 p2-p3
= 0002
另外,我将如何构建 SQL 语句?在某些时候,我想查询所有穿过特定点的路径,如果点太多,恐怕我不知道如何创建这么长的语句。
这可能是针对此需求的错误数据库设置,欢迎任何其他建议
最佳答案
列代表元数据,而您的点实际上是数据。更好的设计可能是:
path_id | point
--------|-------------
1 | p_1
1 | p_2
1 | p_3
1 | p_4
1 | p_5
2 | p_1
2 | p_2
2 | p_5
当然,您应该考虑为附加信息添加列(即“订单”,如果相关),并为这两列合并添加一个 UK。
SELECT 语句将是 SELECT * FROM table WHERE point = 'p_1';
关于mysql - 未知列的结构数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33243372/