【发布时间】:2015-01-16 17:02:52
【问题描述】:
假设我们有一个名为Workorders 的表和另一个名为Parts 的表。我想在Workorders 中有一个名为parts_required 的专栏。此列将包含一个项目,告诉我该工作订单需要哪些部件。理想情况下,这也将包含数量,但如果需要,第二列可以包含数量信息。
Workorders 看起来像
WorkorderID date parts_required
1 2/24 ?
2 2/25 ?
3 3/16 ?
4 4/20 ?
5 5/13 ?
6 5/14 ?
7 7/8 ?
Parts 看起来像
PartID name cost
1 engine 100
2 belt 5
3 big bolt 1
4 little bolt 0.5
5 quart oil 8
6 Band-aid 0.1
想法 1:创建一个类似 '1-1:2-3:4-5:5-4' 的字符串。我的应用程序将解析此字符串并显示我需要 --> 1 engine、3 belts、5 little bolts 和 4 quarts of oil。
优点 - 足够简单,易于创建和理解。
缺点 - 会使深入反省我们的数据变得更加困难。 (时间成本等)
想法 2:使用二进制数。例如,使用 8 位整数引用上述列表(engine、belt、little bolts、oil)将是 54,因为二进制表示中的 54 是110110。
优点 - 数据类型在大小方面是最佳的。另外,我猜我可以在查询中使用一些棘手的数学技巧来搜索使用的部件(不知道那些是什么,如果我在这里的云端,请纠正我)。
缺点 - 我不知道如何使用这种方法处理数量。此外,即使使用 64 位 BIGINT 仍然只能给我 64 个可以在我的表中的部分。我预计会有数百个。
有什么想法吗?我正在使用MySQL。我也许可以使用PostgreSQL,而且我知道他们有更灵活的datatypes,比如JSON 和数组,但我不熟悉查询它们的执行方式。此外,留在MySQL 会更容易
【问题讨论】:
标签: mysql database database-design relational-database database-schema