【问题标题】:How to create relation table with one table to one column relation如何创建具有一表一列关系的关系表
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多