如何在MySql中处理一个类别下的唯一项目,其中项目在不同类别下可能不是唯一的?

时间:2018-02-16 09:09:13

标签: mysql sql database database-design

示例:

<h5>Select category</h5>
<div class="input-field col s12">
    <select id="select_categories">
      <option *ngFor="let category of categories" value="{{category}}">
        {{category.name}}
      </option>
    </select>
    <label>Category</label>
  </div>

类别下的项目:

category : food, bike, car

这里,&#39; bike&#39;和&#39; car&#39;不同的类别可以容纳相同的项目,例如本田&#39;。但这两个类别都不能容纳相同的项目。

表名(列名):

food = {rice, fish, beef};
bike = {Honda, Suzuki};
car = {Honda, Toyota, BMW};

其中1. category -> id (primary, auto increment) -> category_name (char, unique) 2. items -> id (primary, auto increment) -> item_name (char) 3. category_item_relation (many to many relation between table 1 and 2) -> category_id (foreign key) -> item_id (foreign key) 在同一item_id下是唯一的,需要知道MySql中的过程。

2 个答案:

答案 0 :(得分:3)

您需要在category_id和item_id的组合上使用唯一键(或主键):

ALTER TABLE category_item_relation
ADD CONSTRAINT item_category_relation_pk
PRIMARY KEY (category_id, item_id)

答案 1 :(得分:2)

在这种情况下,您必须使用候选密钥。因此,您必须在category_iditem_id

的组合上创建唯一键