0

我有 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.clientsand orders.client_idorders.room_id并将orders.card_id外键分配给其他表。

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

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

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

4

1 回答 1

0

您必须在与其他表相关的所有列中创建 FK。在您的情况下,create on: cards.client_id, orders.client_id,orders.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 更快。

于 2013-07-12T03:25:38.480 回答