我正在研究一个学习数据库和客户端设计的项目,而且我有点陷入困境。我的订单表包括:
- order_id(int(11)) - This is the primary key and is auto incrementing.
- customer_id(int(11)) - A foreign key to the customer table
- bike_id(int(11)) - A foreign key to the bikes table
- equipment_id(int(11)) - A foreign key to the equipment table.
- date_from(datetime)
- date_to(datetime)
我想要做的是允许客户在order_id中有多个bike_id,用逗号分隔,如此#6; 6,8,10和#34; - 同样适用于equipment_ids
我怀疑它可能是bike_id的数据类型,它是一个int,除了一个整数之外它不允许任何其他内容。
我开始觉得这可能是糟糕的数据库设计,但我目前还没有看到任何其他方法。这也将是该系统的主要功能之一 - 所以我想要做对。我在阅读文档方面没有问题,所以也许有人可以给我一些关于如何解决这类问题的指示?
答案 0 :(得分:2)
正如 Yngve Molnes 在评论中提到的那样,我会为你解释。
存储数据数据逗号分隔是不好的做法。你应该存储bike_id
:
order_id customer_id bike_id equipment_id date_from date_to
1 1 1 1 2015 2016
1 1 2 1 2015 2016
1 1 3 1 2015 2016
2 1 7 1 2014 2015
2 1 4 1 2014 2015
您可以阅读有关数据库规范化的documentation。
以逗号分隔的列表存在很多实际问题: