嗨有专业人士,
我有一个关于为我的数据库创建表的问题,该表的主要目的是连接两个其他表,我需要有关如何设计此连接表的帮助。
我的数据库设计如下:
TABLE countries COLUMNS country_id, country_name,
TABLE vehicles COLUMNS vehicle_id, vehicle_category
目前,在TABLE国家,我有2个国家,在TABLE车辆中,我有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辆车,我将不得不在桌面上添加新的行,同样没有任何重复。
非常感谢您的答案!
答案 0 :(得分:3)
在第三个表上添加UNIQUE Constraint。它会解决你的问题。
ALTER TABLE `country_vehicle_relation` ADD UNIQUE `unique_index`(`country_id`, `vehicle_id`);