1. 程式人生 > >MySQL資料庫通過navicat建立多對多關係

MySQL資料庫通過navicat建立多對多關係

**

目的:

**
構建兩張表的多對多關係:清洗資料表(clean_data表)與使用者表(user表)建立多對多的關係。如下圖圖0所示
這裡寫圖片描述

圖0 多對多之間關係

1 建立表

.開啟navicat,建立三張表,clean_data表與user表,以及兩個表之間的關係表(clean_data_user表)。
表結構分別如下:
這裡寫圖片描述

圖1 clean_data設計表

這裡寫圖片描述
圖2 user設計表

這裡寫圖片描述
圖3 clean_data_user設計表

2.建立外來鍵
2.1首先設定clean_data_user表中將要關聯的cln_dt_iduser_id兩個欄位為主鍵。如下圖圖4所示。
這裡寫圖片描述


圖4 設定兩欄位cln_td_iduser_id為主鍵

2.2點選外來鍵按鈕,建立外來鍵關係。根據欄位的命名可想而知,cln_dt_id將與clean_data表中的id建立關聯,user_iduser表中的id關聯。如下圖圖5所示。
這裡寫圖片描述

圖5 建立外來鍵關係

注意事項:
1.資料庫表多對多建立關係時,一定要首先建立主鍵。如果不首先建立外來鍵,會出現1215的錯誤,如下圖圖6所示。在這個問題上浪費了近兩個小時。實在不該啊。
**
後面才發現,沒必要建主鍵啊,給cln_td_iduser_id建立索引即可!
**

這裡寫圖片描述

圖6 1215錯誤

那麼,我們來整理出現1215錯誤的原因:

MySQL中建立外來鍵的錯誤:1215 Cannot add the foreign key constraint

  • 1.兩個欄位的型別或者大小不嚴格匹配。 其中,兩個字短分別是int(6)int(7)也算不匹配。一個是unsigned(無符號),一個是signed也是不匹配的。

  • 2.試圖設定外來鍵的欄位沒有建立起索引,或者不是一個primary key(主鍵)。如果其中一個不是primary key的話,你必須先為它建立一個索引。

  • 3.其中一個或者兩個表是MyISAM引擎的表。若想要使用外來鍵約束,表必須是InnoDB引擎(實際上,如果兩個表都是MyISAM 引擎的,這個錯誤根本不會發生,但也不會產生外來鍵,只會建立索引)你需要檢查表的引擎型別

  • 4.外來鍵的名字不能重複。

  • 5.你可能設定了ON DELETE SET NULL

    ,但是相關的鍵的欄位又設定成了NOTS NULL值。你可能通過修改cascade的屬性值或者把欄位屬性設定成allow null來解決。

  • 6.請確定你的CharsetCollate選項在表級和欄位級上的一致。

  • 7.你可能設定為外來鍵設定了一個預設值,如default=0。

  • 8.ALTER宣告中有語法錯誤.

2017年05月12日夜1點半,第一篇認真的部落格。耗時1.5小時。以後都是認真的乾貨。開始一場認真的讀博之路。對待技術部落格,我是認真的。

相關推薦

MySQL資料庫通過navicat建立關係

** 目的: ** 構建兩張表的多對多關係:清洗資料表(clean_data表)與使用者表(user表)建立多對多的關係。如下圖圖0所示 圖0 多對多之間關係 1 建立表 .開啟

django連線mysql資料庫的一對一,一對關係模型的建立

Y19   介紹如何建立各種關係的資料模型,具體實現各種功能 先配置settings.py中連線mysql資料庫:(Y12有介紹) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.m

使用GreenDao建立表、關聯表(一對一,一對)、CURD、升級資料庫等操作

        應用場景:從照片中找出包含有使用者人臉的照片,並儲存該照片中的人臉特徵、使用該特徵和使用者人臉特徵對比,滿足條件,照片就儲存到該使用者表裡 一、建立表 GreenDao託管地址:https://github.com/greenrobot

flask連線mysql資料庫的一對一,一對的處理關係

Y18    以學生表與班級表為例,進行一對一,與一對多操作說明。 簡單部署: 1、建立flask資料夾,在資料夾中建立python檔案,命名為app,其中程式碼: from flask import Flask app = Flask(__name__) 2

建立MySQL典型表:一對一,一對

建立Mysql表:User使用者表,Order訂單表,Orderdetail訂單詳情,item商品表 一個使用者對應多個訂單,一個訂單隻能對應一個使用者;一個訂單對應多個訂單詳情,一個訂單詳情只對應一個訂單;一個訂單詳情只對應一個商品,一個商品可以包括在多個訂單詳情中;所以,使用者和商品之間是多

資料庫中表與表之間建立關係(一對

一、一對多的關係 例:公司與員工的關係,公司為一,公司員工為多,需要在多方建立外來鍵指向一方的主鍵。 一對多讓兩個實體類之間相互表示 (1)一個公司裡面有多個員工。 private Set<yuangong> yuangongSet=new HashSet

請教資料庫如何建立關係

請問資料庫怎麼建立多對多關係(最好以mysql為例) 我建立了兩張表: create table custom( #顧客表 id int(10) primary key auto_increment, name varchar(20) ); create table shop( #商品表 id int(10

flask中資料庫表的模型的建立

多對多關係描述有一個唯一的點就是:需要新增一張單獨的表去記錄兩張表之間的對應關係 ,然後在任意一個模型中增加關係引用即可。 聯合主鍵:多個欄位合在一起當主鍵以下是程式碼部分:from flask import Flask from flask_sqlalchemy impo

django mysql 表的一對一 一對

另一個 設置 char field 所有 一次循環 mode sele clas 表結構的設計   一對一   多對一 將key寫在多   多對多 外鍵:   描述 多對一的關系   寫在多的一方   class Book(models.Model)     title

用SQLAlchemy建立一對關係

多對多關係表的建立: 如果建立好多對多關係後,我們就可以通過關係名進行迴圈查詢,比如laowang = Teacher.query.filter(Teacher.name=='laowang').first().classes[0].teachers, 表示查詢老師表中名為老王的所有教的班級中教第一個班級

Hibernate_day03---表與表關係建立、一對配置及操作、配置及操作

一、表與表關係建立思路 一對多關係 關係舉例: (1)分類和商品關係。 一個分類裡面有多個商品,一個商品只能屬於一個分類 (2)公司和員工關係 一個公司有多個員工,每個員工屬於一個公司 一對多建表:通過外來鍵建立關係 圖示: 多對多關係 關係舉例

【轉】資料庫一對一、一對關係

轉自:https://blog.csdn.net/u013144287/article/details/79024130  本來資料庫一對一、一對多、多對多關係並不複雜,但是最近在理解的時候感覺又感覺多了寫新意,所以現在在來總結一下吧 一、首先給出三種關係的例項 1、一對一關係例項 &

django一對模型的建立

# 轉載請留言聯絡 一對多模型 一對多的關係,例如員工跟部門。一個部門有多個員工。那麼在django怎麼建立這種表關係呢? 其實就是利用外來鍵,在多的一方,欄位指定外來鍵即可。例如員工和部門,員工是多,所以在員工表直接部門即可。 示例(見19行): 1 class Depart

JDBC上關於資料庫表操作一對關係關係的實現方法--轉

  原文地址---- https://www.cnblogs.com/pangguoming/p/7028322.html 黑馬程式設計師 我們知道,在設計一個Java bean的時候,要把這些BEAN 的資料存放在資料庫中的表結構,然而這些資料庫中的表直接又有些特殊

MySql關係中外來鍵的應用

業務需求:使用者表r_user儲存使用者名稱等資訊。現需要給每個使用者設定工作基地,一個使用者可以有多個工作基地,多個使用者也可以有一個工作基地,即多對多關係。(外來鍵,若有兩個表A,B,C是A的主鍵,而B中也有C欄位,則C就是表B的外來鍵,外來鍵約束主要用來維護兩個表之間資料的一致性) 設計方

Django - ORM 關係 - 中間關係表的建立方式探討

目錄 多對多關係 - 三種中間表的建立方式 - 優劣總結 方式一、手動建立第三張表 方式二、自動建立第三張表 - MandyToManyField 方式三、半自動建立第三張表 -- 手動建立第三張表+ManyToMany建立關係(推薦使用) 多對多關係 - 三種中間表

通過Navicat建立MySql定時任務

需求: 定時刪除資料庫A表中10分鐘之前的資料。 1.建立儲存過程 CREATE DEFINER=`root`@`%` PROCEDURE `del_hrt`() BEGIN SET @time = date_sub(now(), interval '10' MIN

Django框架(十二)—— 補充:inclusion_tag、defer、only、choice、事務、建立的第三張表

補充:inclusion_tag、defer、only、choice、事務、建立多對多的第三張表 一、inclusion_tag 1、作用 用於生成HTML片段,是資料由引數傳入而變成動態 2、使用 # 1.app下新建一個模組,templatetags # 2.建立一個py檔案(mytag.py)

Django中資料庫的資料關係:一對一,一對

一對一: 一對一的關係極為一個數據僅對應一個數據,用下圖的結構圖可以幫助理解: 下面用程式碼實現一下,首先要建立工程專案如下: 接著,我們定義模型: 來到models.py檔案,建立兩個模型: from django.db import models #

mysql之其他約束與關係

一約束(需要先建立庫) 1,非空約束,資料不能為空 not null  create table student (id int,name char(10) not null); 2,預設值約束,可以指定欄位的預設值 default  預設值 create ta