MySql数据库设计

问题描述 投票:0回答:1

我使用 MySQL 作为数据库,我有一些设计问题:

我有一个表“

locations
”,其中包含
locID
lat
long
以及某个位置的名称值。

我还有一张桌子
categories
,上面有
ID
category-name
locID


现在我想确保可以将类别分配给多个位置。我该如何正确地做到这一点?多次存储相同的类别(每个 locID 一次)并没有多大意义,不是吗?到这里怎么走?

谢谢! 罗恩

mysql database-design
1个回答
2
投票

您可以使用连接表来建模多对多关系。

location_category
location_id   category_id
1             1
1             2
2             1
2             3
3             4

添加外键约束以防止将无效值输入到表中:

  • location_category.location_id
    locations.locID
  • location_category.category_id
    categories.ID

同时将

(location_id, category_id)
设置为表的主键,以防止多次将类别添加到同一位置。


从表中读取数据时,使用JOIN从主表中获取相关数据:

SELECT ...
FROM location_category
JOIN locations ON location_category.location_id = locations.locID
JOIN categories ON location_category.category_id = categories.ID
WHERE ....
© www.soinside.com 2019 - 2024. All rights reserved.