我有两张表restaurants
和meals
。餐馆
`id`
`name`
`menu`
`image`
`text`
`address`
用餐
`meal_id`
`meal_name`
`meal_image`
`meal_weight`
`meal_price`
`meal_menu`
我认为连接他们meal.restaurant.id
。这是一个好方法还是更好地制作另一个(第三个)表并将它们连接到那里。
您能否向我询问当ID = 1的餐厅被选中时,该餐厅仅显示餐点。现在我想在meal_menu
行中保留餐馆ID。
答案 0 :(得分:2)
如果您认为一家餐馆有很多餐,一餐只有一家餐厅
然后你应该尝试餐馆餐桌
`id`
`name`
`menu`
`image`
`text`
`address`
用餐表
`meal_id`
`meal_name`
`meal_image`
`meal_weight`
`meal_price`
`meal_menu
`restaurant_id`
或者如果您认为一家餐馆有很多餐,一餐有很多餐厅
然后你应该尝试餐馆餐桌
`id`
`name`
`menu`
`image`
`text`
`address`
用餐表
`meal_id`
`meal_name`
`meal_image`
`meal_weight`
`meal_price`
`meal_menu
和restaurant_meal
`restaurant_id`
`meal_id`
restaurant_meal表只包含外键引用餐厅表和餐桌
取决于你使用哪一个......你可以使用任何一个。它只是依赖于要求
答案 1 :(得分:1)
根据我对您的问题的理解,您应该将id
restaurants
字段作为主键,将meal_id
字段meal
字段作为引用该密钥的外键id
字段。
答案 2 :(得分:1)
创建一个数据透视表,例如
CREATE TABLE meal_restaurant
(
meal_id int not null,
restaurant_id int not null,
primary key (meal_id, restaurant_id),
foreign key (meal_id) references meals (meal_id),
foreign key (restaurant_id) references restaurants (id)
);
现在选择您所做的特定餐厅的所有餐点
SELECT m.meal_id, meal_name, meal_image, meal_weight, meal_price
FROM meals m JOIN meal_restaurant mr
ON m.meal_id = mr.meal_id
WHERE restaurant_id = 1
这是 SQLFiddle 演示