MySQL多表关系(代码意见)

时间:2013-07-10 09:55:56

标签: mysql foreign-keys multiple-tables

我有4个表:rooms(id, name, description)clients(id, name, email)cards(id, card_number, exp_date, client_id)orders(id, client_id, room_id, card_id, start_date, end_date)

这些表都是InnoDB,非常简单。我需要的是在它们之间添加关系。我所做的是将cards.client_id作为外键指定给db.clientsorders.client_idorders.room_idorders.card_id作为其他表的外键。

我的问题:这种方式是否正确可靠?我以前从未需要使用外键,这是我的第一次尝试。所有外键也是索引。

此外,检索db.orders所需的所有信息的最简单方法是什么? 我需要一个查询输出:谁是客户,他的卡详细信息是什么,他订购了什么房间,以及他签到的时间是什么。

我可以根据我创建的结构完成此查询吗?

1 个答案:

答案 0 :(得分:0)

您必须在与其他表相关的所有列中创建FK。在您的情况下,请创建:cards.client_idorders.client_idorders.room_id, orders.card_id 在MySQL的情况下,它会自动为这些FK创建索引。

在您的选择中,我相信它可以是以下内容:

SELECT * FROM orders
INNER JOIN client on client.id = orders.client_id
INNER JOIN cards on cards.client_id = client.id
INNER JOIN rooms on rooms.id = orders.room_id

我不知道你需要哪些列,只有你用你需要的列替换*,所以SQL更快。