Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

Quay lại: Hướng dẫn của MySQL cho người mới bắt đầu và các chuyên gia

Mối quan hệ cơ sở dữ liệu trong MySQL với các ví dụ

Trong bài viết này, tôi sẽ thảo luận về các 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 tiêm trong MySQL. Vào 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 người nhiều trong MYSQL với các ví dụ.Database Relationships in MySQL with Examples. Please read our previous article where we discussed SQL Injection in MySQL. At the end of this article, you will understand everything about the One-to-One, One-to-Many, and Many-to-Many Database relationships in MySQL with Examples.

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

Mối quan hệ cơ sở dữ liệu có nghĩa là cách dữ liệu trong một bảng có liên quan đến dữ liệu trong một bảng khác. Trong RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ). Thuật ngữ quan hệ trực tuyến đề cập đến các bảng có quan hệ. Mối quan hệ giữa hai bảng được tạo bằng các khóa. Một khóa trong một bảng thường sẽ liên quan đến một khóa trong một bảng khác. Hai bảng trong cơ sở dữ liệu cũng có thể không liên quan. Chủ yếu có 3 loại mối quan hệ cơ sở dữ liệu:There are mainly 3 types of database relationships:

  1. Mối quan hệ một-một (1: 1): Nếu chỉ có một dữ liệu trong một bảng liên quan đến một dữ liệu duy nhất trong bảng khác, nó được gọi là mối quan hệ một-một (1: 1). If only one data in one table relates to the only one data in another table it is known as one-to-one (1:1) relationship.
  2. Mối quan hệ một-nhiều (1: m): Nếu chỉ có 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, nó được gọi là mối quan hệ một-nhiều (1: m). If only one data in one table relates to the multiple data in another table it is known as the one-to-many (1:M) relationship.
  3. Mối quan hệ nhiều đến nhiều (M: M): 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, nó được gọi là mối quan hệ nhiều-nhiều (M: M). And if multiple data in one table relates to the multiple data in another table it is known as many-to-many (M:M) relationship.
Mối quan hệ cơ sở dữ liệu một-một (1: 1) trong MySQL

Trong mối quan hệ một-một (1: 1), 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ức là khách hàng và địa chỉ. Bảng đầu tiên lưu trữ khách hàng, tên tùy chỉnh và địa chỉ. Bảng thứ hai lưu trữ các giá trị cột địa chỉ và địa chỉ được hiển thị trong hình ảnh dưới đây.

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

Trong bảng khách hàng, mỗi địa chỉ trong một hàng dữ liệu đại diện cho địa chỉ thực tế 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 người địa chỉ chỉ có một khách hàng. Điều này thể hiện mối quan hệ một-một giữa hai bảng.

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

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

Hãy để hiểu về 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 tôi sẽ tạo trường cơ sở dữ liệu và trong cơ sở dữ liệu của trường, chúng tôi sẽ tạo hai bảng, tức là học sinh và địa chỉ như trong hình ảnh dưới đây. Sau đó, chúng ta sẽ thấy mối quan hệ một-một giữa sinh viên và bảng địa chỉ.

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

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

Vui lòng sử dụng tập lệnh SQL dưới đây để tạo cơ sở dữ liệu của trường và tạo các bảng học sinh và địa chỉ với dữ liệu mẫu cần thiết.

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ối quan hệ cơ sở dữ liệu One-A-A-Ra (1: M)

Trong mối quan hệ một-nhiều (1: m), 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ối quan hệ một-nhiều (1: m) là mối quan hệ được sử dụng phổ biến nhất trong các hệ thống quản lý 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ức là khách hàng và đơn đặt hàng. Bảng khách hàng lưu trữ khách hàng và tên tùy chỉnh. Bảng đơn đặt hàng lưu trữ các giá trị cột OrderID, customerID, orderDate và số lượng như trong hình ảnh dưới đây.

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

Trong bảng đơn đặt hàng, hàng dữ liệu khách hàng đại diện cho khách hàng của 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 hàng nhiều mặt hàng. Do đó, bảng đơn đặt hàng có thể chứa nhiều hơn một khách hàng của cùng một khách hàng trong cột customerID. Nhưng chỉ có thể có một khách hàng trong cột ’khách hàng 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 ảnh dưới đây.

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

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

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

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các 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ị ‘nhân viên 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 ‘Nhân viên 1002, 1003 và 1007 trong bảng‘ Dự án. Các khách hàng đã đăng 2 dự án tương ứng cho ba 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 đại diện cho mối quan hệ một-nhiều giữa hai bảng.

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

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));
Mối quan hệ cơ sở dữ liệu nhiều-to-nhiều (M: M)

Trong mối quan hệ cơ sở dữ liệu nhiều đến nhiều (M: M), nhiều bản ghi trong một bảng liên quan đến nhiều bản ghi trong 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ó tên ‘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 ‘Các mục, Stores ItemID và item_Details và bảng thứ ba có tên‘ Store order_history, StoresId, OrderDate và ItemID như trong hình ảnh dưới đây.

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

Trong bảng Orderhistory, hàng dữ liệu khách hàng đại diện cho khách hàng của 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 duy nhất có thể thực hiện nhiều đơn đặt hàng. Do đó, cột khách hàng của bảng thứ tự có thể lưu trữ cùng một khách hàng nhiều lần. Tương tự, một mục từ bảng vật phẩm có thể được đặt hàng nhiều lần. Do đó, cột ItemID của bảng OrderHistory có thể lưu trữ cùng một mụcID nhiều lần. Điều này thể hiện mối quan hệ nhiều đến nhiều giữa ba bảng như trong hình ảnh dưới đây.

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

Ví dụ để hiểu mối quan hệ cơ sở dữ liệu nhiều-đến nhiều (M: M) 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 tôi sẽ tạo cơ sở dữ liệu onlineeshop và trong cơ sở dữ liệu OnLineShop, chúng tôi sẽ tạo ba bảng, tức là khách hàng, mục và Orderhistory như trong hình ảnh dưới đây. Sau đó, chúng ta sẽ thấy các mối quan hệ nhiều đến nhiều giữa ba bảng này.

Hướng dẫn how can i see the relationship between tables in mysql? - làm thế nào tôi có thể xem mối quan hệ giữa các bảng trong mysql?

Trong bảng OrderHistory, hàng dữ liệu userid đại diện cho người dùng của 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 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ục nhiều lần. Tương tự, một mục duy nhất từ ​​bảng vật phẩm có thể được đặt hàng nhiều lần. Do đó, cột ItemID của bảng OrderHistory có thể lưu trữ cùng một mụcID nhiều lần. Hãy xem bảng OrderHistory, userid ‘5, và 1 đã thực hiện 2 đơn hàng nhưng người dùng chỉ có một người dùng trong bảng khách hàng. Tương tự, ItemID ’1 và 3 được mua 2 lần nhưng mặt hàng chỉ có một itemId trong bảng mục. Điều này thể hiện mối quan hệ nhiều đến nhiều giữa các khách hàng, trật tự và các mục các mục.

Vui lòng sử dụng tập lệnh SQL dưới đây để tạo OnLineShopDatabase và tạo khách hàng, mục và bảng theo thứ tự với dữ liệu mẫu cần thiết. database, and create the Customers, Items, and OrderHistory tables with the required sample data.

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 các mối quan hệ cơ sở dữ liệu trong MySQL với các ví dụ và tôi hy vọng bạn thích các mối quan hệ cơ sở dữ liệu này trong bài viết của MySQL.Database Normalization in MySQL with Examples. Here, in this article, I try to explain Database Relationships in MySQL with Examples and I hope you enjoy this Database Relationships in MySQL article.

Làm thế nào để tôi tìm thấy mối quan hệ giữa các bảng trong MySQL?

Để xem các mối quan hệ khóa nước ngoài của một bảng: Chọn Table_Name, Cột_Name, ConferainT_NAME, tham chiếu_table_name, tham chiếu_column_name từ thông tin_schema. Key_column_usage trong đó tham chiếu_table_schema = 'db_name' và tham chiếu_table_name = 'table_name';

Làm thế nào để bạn thể hiện mối quan hệ giữa các bảng?

Xem các mối quan hệ bảng..
Nhấp vào Tệp, nhấp vào mở, sau đó chọn và mở cơ sở dữ liệu ..
Trên tab Công cụ cơ sở dữ liệu, trong nhóm Mối quan hệ, nhấp vào các mối quan hệ ..
Trên tab Thiết kế, trong nhóm các mối quan hệ, nhấp vào tất cả các mối quan hệ. Điều này hiển thị tất cả các mối quan hệ được xác định trong cơ sở dữ liệu của bạn ..

Làm thế nào chúng ta có thể kiểm tra mối quan hệ giữa các bảng trong SQL?

Sử dụng SQL Server Management Studio Mở Trình thiết kế bảng cho bảng chứa khóa nước ngoài mà bạn muốn xem, nhấp chuột phải vào trình thiết kế bảng và chọn các mối quan hệ từ menu phím tắt.Trong hộp thoại Mối quan hệ chính nước ngoài, chọn mối quan hệ với các thuộc tính bạn muốn xem.right-click in the Table Designer, and choose Relationships from the shortcut menu. In the Foreign Key Relationships dialog box, select the relationship with properties you want to view.

Làm thế nào để bạn tìm thấy một mối quan hệ trong cơ sở dữ liệu?

Có ba loại mối quan hệ giữa dữ liệu bạn có khả năng gặp phải ở giai đoạn này trong thiết kế: một-một, một-nhiều và nhiều đến nhiều.Để có thể xác định các mối quan hệ này, bạn cần kiểm tra dữ liệu và hiểu được những quy tắc kinh doanh áp dụng cho dữ liệu và bảng.examine the data and have an understanding of what business rules apply to the data and tables.