【发布时间】:2016-05-06 09:48:13
【问题描述】:
各位专业人士,
我有一个关于为我的数据库创建表的问题,该表的主要目的是连接其他两个表,我需要有关如何设计此连接表的帮助。
我的数据库设计如下:
TABLE countries COLUMNS country_id, country_name,
TABLE vehicles COLUMNS vehicle_id, vehicle_category
目前,在 TABLE 国家/地区中我有 2 个国家,在 TABLE 车辆中我有 9 辆汽车,未来可能这两个表格将包含更多国家和更多车辆。
现在我需要连接这两个表,所以我将创建另一个表,第三个表将包含 country_id 和 vehicle_id,但这是我的问题开始的地方。
每个国家都应该包含所有车辆,但只能包含一次,我的意思是一个国家不会包含 2 辆具有相同车辆 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 辆车,我将不得不向表中添加新行,再次没有任何重复。
非常感谢您的回答!
【问题讨论】:
标签: mysql database database-design relational-database