Cách tạo mối quan hệ giữa 2 bảng trong mysql

Trong bài viết này, tôi sẽ thảo luận về Mối quan hệ cơ sở dữ liệu trong MySQL với các ví dụ. Vui lòng đọc bài viết trước của chúng tôi, nơi chúng tôi đã thảo luận về SQL Injection trong MySQL. Ở cuối bài viết này, bạn sẽ hiểu mọi thứ về mối quan hệ Cơ sở dữ liệu Một-một, Một-nhiều và Nhiều-nhiều trong MySQL với các ví dụ

Mối quan hệ cơ sở dữ liệu trong MySQL

Mối quan hệ cơ sở dữ liệu có nghĩa là dữ liệu trong một bảng có liên quan như thế nào với dữ liệu trong bảng khác. Trong RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ). Thuật ngữ “Relational” dùng để chỉ các bảng có Quan hệ. Mối quan hệ giữa hai bảng được tạo bằng các phím. Một khóa trong một bảng thường sẽ liên quan đến một khóa trong bảng khác. Hai bảng trong cơ sở dữ liệu cũng có thể không liên quan. Có 3 loại quan hệ cơ sở dữ liệu chủ yếu.

  1. Một đối một (1. 1) Mối quan hệ. Nếu chỉ một dữ liệu trong một bảng liên quan đến một dữ liệu duy nhất trong một bảng khác thì nó được gọi là một đối một (1. 1) mối quan hệ
  2. Một-nhiều (1. M) Mối quan hệ. Nếu chỉ một dữ liệu trong một bảng liên quan đến nhiều dữ liệu trong một bảng khác thì nó được gọi là quan hệ một đối nhiều (1. M) mối quan hệ
  3. Nhiều-nhiều (M. M) Mối quan hệ. Và nếu nhiều dữ liệu trong một bảng liên quan đến nhiều dữ liệu trong một bảng khác thì nó được gọi là nhiều-nhiều (M. M) mối quan hệ
Một đối một (1. 1) Mối quan hệ cơ sở dữ liệu trong MySQL

Trong một đối một (1. 1) Mối quan hệ chỉ có một dữ liệu trong một bảng chỉ liên quan đến một dữ liệu trong bảng khác. Hãy xem các bảng ví dụ. Chúng tôi có hai bảng cơ sở dữ liệu tôi. e. khách hàng và địa chỉ. Bảng đầu tiên lưu trữ customerid, customername và addressid. Bảng thứ hai lưu trữ các giá trị cột addressid và address được hiển thị trong hình ảnh bên dưới

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Trong bảng khách hàng, mỗi addressid trong một hàng dữ liệu đại diện cho địa chỉ thực của khách hàng trong bảng địa chỉ. Mỗi khách hàng chỉ có thể có một địa chỉ và mọi địa chỉ chỉ có thể có một khách hàng. Điều này thể hiện mối quan hệ một đối một giữa hai bảng

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Các ví dụ để hiểu mối quan hệ một đối một trong MySQL

Hãy hiểu Mối quan hệ cơ sở dữ liệu một-một trong MySQL với các ví dụ. Bây giờ chúng ta sẽ tạo cơ sở dữ liệu trường học và trong cơ sở dữ liệu trường học, chúng ta sẽ tạo hai bảng i. e. Sinh viên và Địa chỉ như trong hình bên dưới. Sau đó, chúng ta sẽ thấy bảng Mối quan hệ một đối một giữa Sinh viên và Địa chỉ

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Trong bảng Địa chỉ, giá trị cột AddressId 1001, 1002, 1003 và 1004 được gán cho các giá trị StudentId 1, 2, 3 và 4 tương ứng. Các thông tin chi tiết của mỗi sinh viên được lưu trữ trong bảng Sinh viên. Trong trường hợp 2 bảng này, mỗi sinh viên chỉ có 1 Địa chỉ trong khi mỗi AddressId chỉ có thể được gán cho duy nhất 1 sinh viên. Loại mối quan hệ giữa 2 bảng này được gọi là Mối quan hệ một đối một

Vui lòng sử dụng Tập lệnh SQL bên dưới để tạo cơ sở dữ liệu SCHOOL và tạo các bảng Sinh viên và Địa chỉ với dữ liệu mẫu được yêu cầu

CREATE DATABASE SCHOOL;
USE SCHOOL;

-- Create Students Table
CREATE TABLE Students (
     Id INT PRIMARY KEY,
     Name VARCHAR(40) NOT NULL,
     Class VARCHAR(20),
     Age INT
);

-- Populate the Students Table with test data
INSERT INTO Students VALUES (1,'John', 'First', 5);
INSERT INTO Students VALUES (2, 'Mary', 'Third', 7);
INSERT INTO Students VALUES (3, 'Mike', 'Second', 6);
INSERT INTO Students VALUES (4, 'Linda', 'Third', 7);

-- Create Addresses Table
CREATE TABLE Addresses (
     AddressId INT PRIMARY KEY, 
     Address VARCHAR(100) NOT NULL,
     StudentId INT NOT NULL UNIQUE
);

-- Populate the Addresses Table with test data
INSERT INTO Addresses VALUES(1001, 'Mumbai', 1);
INSERT INTO Addresses VALUES(1002, 'Delhi', 2);
INSERT INTO Addresses VALUES(1003, 'BBSR', 3);
INSERT INTO Addresses VALUES(1004, 'Hyderabad', 4);
Một-Nhiều (1. M) Mối quan hệ cơ sở dữ liệu

Trong Một-Nhiều (1. M) Mối quan hệ một bản ghi trong một bảng liên quan đến nhiều bản ghi trong một bảng khác. Một-Nhiều (1. M) Mối quan hệ là mối quan hệ được sử dụng phổ biến nhất trong các hệ quản trị cơ sở dữ liệu quan hệ

Hãy để chúng tôi hiểu các mối quan hệ một-nhiều với một ví dụ. Chúng tôi có hai bảng cơ sở dữ liệu tôi. e. Khách hàng và Đơn đặt hàng. Bảng khách hàng lưu trữ mã khách hàng và tên khách hàng. Bảng đơn hàng lưu trữ các giá trị cột orderid, customerid, orderdate vàmount như trong hình bên dưới

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Trong các bảng đơn đặt hàng, hàng dữ liệu id khách hàng đại diện cho id khách hàng của một khách hàng từ bảng khách hàng. Một khách hàng từ bảng khách hàng có thể đặt nhiều mặt hàng. Do đó, bảng đơn hàng có thể chứa nhiều hơn một mã khách hàng của cùng một khách hàng trong cột mã khách hàng. Nhưng chỉ có thể có một khách hàng trong cột 'customerid' trong bảng 'khách hàng'. Điều này thể hiện Mối quan hệ một-nhiều giữa các bảng Khách hàng và Đơn đặt hàng như trong hình bên dưới

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Ví dụ để hiểu một-nhiều (1. M) Mối quan hệ cơ sở dữ liệu trong MySQL

Hãy để chúng tôi hiểu Mối quan hệ 0ne-To-Many với các ví dụ trong MySQL. Bây giờ chúng ta sẽ tạo cơ sở dữ liệu Công ty và trong cơ sở dữ liệu Công ty sẽ tạo hai bảng i. e. Nhân viên và Dự án như trong hình bên dưới. Sau đó, chúng ta sẽ thấy bảng Mối quan hệ một-nhiều giữa nhân viên và dự án

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Trong bảng Dự án, một nhân viên có thể đăng nhiều dự án, do đó, bảng Dự án có thể chứa nhiều hơn một giá trị 'employeeid' cho cùng một nhân viên. Nhưng cùng một nhân viên không thể có nhiều nhân viên trong cột id. Hãy xem ‘employeeid’ 1002, 1003 và 1007 trong bảng ‘Projects’. Các khách hàng đã đăng 2 dự án tương ứng cho 3 nhân viên trên. Và nhân viên của họ được lưu hai lần trong bảng 'dự án' nhưng chỉ có một nhân viên cho mỗi nhân viên trong bảng Nhân viên. Điều này thể hiện mối quan hệ một-nhiều giữa hai bảng

Vui lòng sử dụng Tập lệnh SQL bên dưới để tạo cơ sở dữ liệu Công ty và tạo bảng Nhân viên và Dự án với dữ liệu mẫu được yêu cầu

CREATE DATABASE Company;
USE Company;

-- Create Students Table
CREATE TABLE Employee (
 Id INT PRIMARY KEY,
 Name VARCHAR(45) NOT NULL,
 Department VARCHAR(45) NOT NULL,
 Salary FLOAT NOT NULL,
 Gender VARCHAR(45) NOT NULL,
 Age INT NOT NULL,
 City VARCHAR(45) NOT NULL
);

-- Populate the Employee Table with test data
INSERT INTO Employee VALUES (1001, 'John', 'IT', 35000, 'Male', 25, 'London');
INSERT INTO Employee VALUES (1002, 'Smith', 'HR', 45000, 'Female', 27, 'London');
INSERT INTO Employee VALUES (1003, 'James', 'Finance', 50000, 'Male', 28, 'London');
INSERT INTO Employee VALUES (1004, 'Mike', 'Finance', 50000, 'Male', 28, 'London');
INSERT INTO Employee VALUES (1005, 'Linda', 'HR', 75000, 'Female', 26, 'London');
INSERT INTO Employee VALUES (1006, 'Anurag', 'IT', 35000, 'Male', 25, 'Mumbai');
INSERT INTO Employee VALUES (1007, 'Priyanla', 'HR', 45000, 'Female', 27, 'Mumbai');
INSERT INTO Employee VALUES (1008, 'Sambit', 'IT', 50000, 'Male', 28, 'Mumbai');
INSERT INTO Employee VALUES (1009, 'Pranaya', 'IT', 50000, 'Male', 28, 'Mumbai');
INSERT INTO Employee VALUES (1010, 'Hina', 'HR', 75000, 'Female', 26, 'Mumbai');

-- Create Projects Table
CREATE TABLE Projects (
 ProjectId INT PRIMARY KEY,
        Title VARCHAR(200) NOT NULL,
        ClientId INT,
        EmployeeId INT,
        StartDate DATETIME,
        EndDate DATETIME,
        FOREIGN KEY (EmployeeId) REFERENCES Employee(Id)
);

-- Populate the Projects Table with test data
INSERT INTO Projects VALUES (1, 'Develop ecommerse website from scratch', 1, 1003, NOW(), DATE_ADD(NOW(), INTERVAL 30 DAY));
INSERT INTO Projects VALUES (2, 'WordPress website for our company', 1, 1002, NOW(), DATE_ADD(NOW(), INTERVAL 45 DAY));
INSERT INTO Projects VALUES (3, 'Manage our company servers', 2, 1007, NOW(), DATE_ADD(NOW(), INTERVAL 45 DAY));
INSERT INTO Projects VALUES (4, 'Hosting account is not working', 3, 1009, NOW(), DATE_ADD(NOW(), INTERVAL 7 DAY));
INSERT INTO Projects VALUES (5, 'MySQL database from my desktop application', 4, 1010, NOW(), DATE_ADD(NOW(), INTERVAL 15 DAY));
INSERT INTO Projects VALUES (6, 'Develop new WordPress plugin for my business website', 2, 1003, NOW(), DATE_ADD(NOW(), INTERVAL 10 DAY));
INSERT INTO Projects VALUES (7, 'Migrate web application and database to new server', 2, 1002, NOW(), DATE_ADD(NOW(), INTERVAL 5 DAY));
INSERT INTO Projects VALUES (8, 'Android Application development', 4, 1004, NOW(), DATE_ADD(NOW(), INTERVAL 30 DAY));
INSERT INTO Projects VALUES (9, 'Hosting account is not working', 3, 1001, NOW(), DATE_ADD(NOW(), INTERVAL 7 DAY));
INSERT INTO Projects VALUES (10, 'MySQL database from my desktop application', 4, 1008, NOW(), DATE_ADD(NOW(), INTERVAL 15 DAY));
INSERT INTO Projects VALUES (11, 'Develop new WordPress plugin for my business website', 2, 1007, NOW(), DATE_ADD(NOW(), INTERVAL 10 DAY));
Nhiều-Nhiều (M. M) Mối quan hệ cơ sở dữ liệu

Trong Nhiều-Nhiều (M. M) Mối quan hệ cơ sở dữ liệu, nhiều bản ghi trong một bảng liên quan đến nhiều bản ghi trong một bảng khác. Hãy xem các bảng ví dụ dưới đây. Chúng tôi có 3 bảng cơ sở dữ liệu. Bảng đầu tiên được gọi là 'khách hàng', lưu trữ tên khách hàng và số điện thoại của khách hàng. Bảng thứ hai có tên là 'items', lưu trữ itemid và item_details và bảng thứ ba có tên là 'order_history' lưu trữ, customerid, orderdate và itemid như trong hình bên dưới

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Trong bảng OrderHistory, hàng dữ liệu customerid biểu thị id khách hàng của một khách hàng từ bảng Khách hàng. Và hàng dữ liệu itemid đại diện cho itemid của một mục từ bảng mục. Một bảng khách hàng có thể thực hiện nhiều đơn đặt hàng. Do đó, cột customerid của bảng OrderHistory có thể lưu trữ cùng một customerid nhiều lần. Tương tự, một mục từ bảng Mục có thể được sắp xếp nhiều lần. Do đó, cột itemid của bảng OrderHistory có thể lưu trữ cùng một itemid nhiều lần. Điều này thể hiện mối quan hệ nhiều-nhiều giữa ba bảng như trong hình bên dưới

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Ví dụ để hiểu Many-To-Many (M. M) Mối quan hệ cơ sở dữ liệu trong MySQL

Hãy để chúng tôi hiểu Mối quan hệ cơ sở dữ liệu nhiều-nhiều với các ví dụ trong MySQL. Bây giờ chúng ta sẽ tạo cơ sở dữ liệu Cửa hàng trực tuyến và trong cơ sở dữ liệu Cửa hàng trực tuyến, chúng ta sẽ tạo ba bảng i. e. Khách hàng, Mặt hàng và Lịch sử đặt hàng như trong hình bên dưới. Sau đó, chúng ta sẽ thấy Mối quan hệ nhiều-nhiều giữa ba bảng này

Cách tạo mối quan hệ giữa 2 bảng trong mysql

Trong bảng OrderHistory, hàng dữ liệu UserId biểu thị UserId của khách hàng từ bảng Khách hàng và hàng dữ liệu ItemId biểu thị ItemId của một mục từ bảng mục. Một khách hàng từ bảng Khách hàng có thể thực hiện nhiều đơn đặt hàng. Do đó, cột UserId của bảng OrderHistory có thể lưu trữ cùng một mặt hàng nhiều lần. Tương tự, một mặt hàng từ bảng Mặt hàng có thể được sắp xếp nhiều lần. Do đó, cột ItemId của bảng OrderHistory có thể lưu trữ cùng một ItemId nhiều lần. Hãy nhìn vào bảng OrderHistory, UserId ‘5’ và 1 đã thực hiện 2 đơn đặt hàng nhưng người dùng chỉ có một UserId trong bảng Khách hàng. Tương tự, ItemId ‘1’ và 3 mua 2 lần nhưng item chỉ có 1 ItemId trong bảng item. Điều này thể hiện mối quan hệ nhiều-nhiều giữa các bảng Khách hàng, Lịch sử đặt hàng và Mặt hàng

Vui lòng sử dụng Tập lệnh SQL bên dưới để tạo cơ sở dữ liệu OnlineShop và tạo các bảng Khách hàng, Mặt hàng và Lịch sử đặt hàng với dữ liệu mẫu được yêu cầu

CREATE DATABASE OnlineShop;
USE OnlineShop;

-- Create Customers Table
CREATE TABLE Customers(
 UserId INT NOT NULL PRIMARY KEY,
 Name VARCHAR(80) NOT NULL,
 Phone VARCHAR(15),
 Address VARCHAR(150)
);

-- Populate the Customers Table with test data
INSERT INTO Customers VALUES (1, 'Jimmy','4567891230','Mumbai');
INSERT INTO Customers VALUES (2, 'Henry','1234567890','Delhi');
INSERT INTO Customers VALUES (3, 'Ruby','7539514682','BBSR');
INSERT INTO Customers VALUES (4, 'Julia','3571592486','Mumbai');
INSERT INTO Customers VALUES (5, 'Anna','0231456785','Delhi');

-- Create ITEMS Table
CREATE TABLE Items(
 ItemId INT NOT NULL PRIMARY KEY,
 CategoryId INT,
 Name VARCHAR(100) NOT NULL,
 Price FLOAT
);

-- Populate the Items Table with test data
INSERT INTO items VALUES (1, 1, 'Androud Mobile Phone', 250.00);
INSERT INTO items VALUES (2, 1, 'i7 processor, 8GB RAM Laptop', 1000.00);
INSERT INTO items VALUES (3, 2, 'How to train your cat', 25.00);
INSERT INTO items VALUES (4, 2, 'Healthy dog food recipes', 19.00);
INSERT INTO items VALUES (5, 2, 'Learn how to meditate for mental health', 30.00);
INSERT INTO items VALUES (6, 3, 'Beautiful Black T-Shirts', 99.00);
INSERT INTO items VALUES (7, 3, 'Blue Colored Jeans', 150.00);

-- Create OrderHistory Table
CREATE TABLE OrderHistory (
    	OrderHistoryId INT PRIMARY KEY,
   	UserId INT NOT NULL, 
   	Itemid INT NOT NULL, 
    	OrderDate DATE
);

-- Populate the OrderHistory Table with test data
INSERT INTO OrderHistory VALUES (1, 5, 1, '2016-02-14');
INSERT INTO OrderHistory VALUES (2, 1, 1, '2016-02-14');
INSERT INTO OrderHistory VALUES (3, 5, 3, '2016-02-14');
INSERT INTO OrderHistory VALUES (4, 1, 3, '2016-02-14');

Trong bài viết tiếp theo, tôi sẽ thảo luận về Chuẩn hóa cơ sở dữ liệu trong MySQL với các ví dụ. Ở đây, trong bài viết này, tôi cố gắng giải thích Mối quan hệ cơ sở dữ liệu trong MySQL bằng các ví dụ và tôi hy vọng bạn thích bài viết Mối quan hệ cơ sở dữ liệu trong MySQL này

Làm cách nào để tìm mối quan hệ giữa hai bảng trong MySQL?

Để xem các mối quan hệ khóa ngoại của một bảng. CHỌN TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME TỪ THÔNG TIN_SCHEMA. KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = 'db_name' AND REFERENCED_TABLE_NAME = 'tên_bảng';

Bạn có thể tạo mối quan hệ giữa hai bảng không?

Bạn có thể tạo mối quan hệ giữa hai bảng dữ liệu, dựa trên dữ liệu khớp trong mỗi bảng . Sau đó, bạn có thể tạo các trang tính Power View và tạo PivotTable cũng như các báo cáo khác với các trường từ mỗi bảng, ngay cả khi các bảng từ các nguồn khác nhau.

Làm cách nào để tạo mối quan hệ trong MySQL?

Cách tạo mối quan hệ trong MySQL .
TẠO tài khoản BẢNG (
account_id INT NOT NULL AUTO_INCREMENT,
customer_id INT( 4 ) KHÔNG NULL ,
account_type ENUM( 'tiết kiệm', 'tín dụng' ) NOT NULL,
cân bằng FLOAT(9) NOT NULL,
KHÓA CHÍNH ( account_id )

Làm cách nào để tạo mối quan hệ giữa hai bảng trong MySQL Workbench?

Cách tạo mối quan hệ trong MySQL Workbench .
Tạo mô hình cơ sở dữ liệu (tạo mô hình mới hoặc thiết kế ngược cơ sở dữ liệu hiện có)
Xem mô hình cơ sở dữ liệu, nhấp đúp vào bảng đầu tiên của mối quan hệ
Ngăn dưới cùng sẽ mở ra với chi tiết bảng