gpt4 book ai didi

mysql - 如何使用一张表到一列关系创建关系表

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:24 27 4
gpt4 key购买 nike

您好专业人士,

我有一个关于为我的数据库创建表的问题,该表的主要目的是连接其他两个表,我需要有关如何设计此连接表的帮助。

我的数据库设计如下:

TABLE countries COLUMNS country_id, country_name, 
TABLE vehicles COLUMNS vehicle_id, vehicle_category

目前,在 TABLE country 中我有 2 个国家,而在 TABLE vehicle 中我有 9 辆车,可能将来两个表都会包含更多国家和更多车辆。

现在我需要连接这两个表,所以我将创建另一个表,第三个表将包含 country_id 和 vehicle_id,但这是我的问题开始的地方。

每个国家应该包含所有车辆,但只有一次,我的意思是不会出现一个国家包含 2 辆具有相同 vehicle_id 的车辆的情况!

我认为如何实现新表的结构(但重复的危险仍然存在!):

TABLE country_vehicle_relation COLUMNS id, vehicle_price, country_id, vehicle_id

现在我可以添加一些值(让我们忽略 price 和 id 列):

**country_id 1, vehicle_id 2**
country_id 1, vehicle_id 3
country_id 1, vehicle_id 4
**country_id 1, vehicle_id 2**
country_id 2, vehicle_id 2
country_id 2, vehicle_id 3
country_id 2, vehicle_id 4

到目前为止,country_id 2 不包含任何重复,但 country_id 1 有一个危险的重复,随着它的增长,它更容易出错。

所以我不知道这种情况下最好的方法是什么,目前我会用 PHP 代码阻止这种情况,但我认为这还不够,我希望 MySQL 设计得最好。

我之前在类似的表中遇到过这个问题,现在,我已经用我的容易出错的解决方案解决了它,但现在这个问题再次出现,我想在部署应用程序之前重新设计我的表。

总而言之,我需要一个表来连接两个“对象”,但是那个国家将只包含车辆表中车辆的一个副本,并且不会有两次相同的车辆,同时考虑到两个表现在都会增长明天是 9 辆车它将有 12 辆车,我将不得不向表中添加新行,同样没有任何重复。

非常感谢您的回答!

最佳答案

在第三个表上添加唯一约束。它会解决您的问题。

ALTER TABLE `country_vehicle_relation` ADD UNIQUE `unique_index`(`country_id`, `vehicle_id`);

关于mysql - 如何使用一张表到一列关系创建关系表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37069261/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com