我有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.clients
和orders.client_id
,orders.room_id
和orders.card_id
作为其他表的外键。
我的问题:这种方式是否正确可靠?我以前从未需要使用外键,这是我的第一次尝试。所有外键也是索引。
此外,检索db.orders
所需的所有信息的最简单方法是什么?
我需要一个查询输出:谁是客户,他的卡详细信息是什么,他订购了什么房间,以及他签到的时间是什么。
我可以根据我创建的结构完成此查询吗?
答案 0 :(得分:0)
您必须在与其他表相关的所有列中创建FK。在您的情况下,请创建: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更快。