MySQL数据库设计

3
我正在使用MySQL作为数据库,有一些关于设计的问题:

我有一个名为“locations”的表格,其中包含某个位置的locIDlatlong值以及名称数值。

我还有一个名为“categories”的表格,其中包含ID和类别名称&locID

现在我要确保类别可以分配给多个位置。如何正确地做到这一点?将相同的类别针对每个locID存储多次并不太合理,对吗?在这里该怎么处理呢?

谢谢! Ron
1个回答

2
您可以使用连接表来建模多对多关系。
location_category
location_id   category_id
1             1
1             2
2             1
2             3
3             4

在表中添加外键约束,以防止输入无效值:
  • location_category.location_idlocations.locID
  • location_category.category_idcategories.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 ....

哎呀,我真的不太明白,我需要创建哪些字段才能将类别与位置链接起来? - stdcerr
啊,明白了,太棒了,我只需要一个表(外键)将一个键与另一个键关联起来,太棒了!谢谢! - stdcerr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接