Hướng dẫn Thiết Kế Cơ Sở Dữ Liệu Database MYSQL Toàn Tập

Thiết kế cơ sở dữ liệu là quá trình mô hình hóa cơ sở dữ liệu hay hiểu đơn giản hơn là việc tổ chức dữ liệu theo một mô hình.  Việc này nhằm chuyển đổi các đối tượng từ thế giới thực (Real-world system) sang các bảng trong hệ thống cơ sở dữ liệu (Database system) đáp ứng các yêu cầu lưu trữ và khai thác dữ liệu.

Hầu như  mọi hệ thống đều phải sử dụng cơ sở dữ liệu, đó có thể là CSDL đã có hoặc CSDL được xây mới cũng có những hệ thống sử dụng cả cơ sở dữ liệu cũ và mới. Việc thiết kế 1 CSDL rất quan trọng trong việc đảm bảo dữ liệu phù hợp, loại bỏ dữ liệu dư thừa, hiệu quả trong việc truy vấn và đem lại hiệu suất cao đồng thời dễ khôi phục và bảo trì.

Thiết kế cơ sở dữ liệu bao gồm việc phân loại dữ liệu và xác định các mối quan hệ qua lại. Hãy cùng công ty thiết kế website chuyên nghiệp Nhật Nam Media theo dõi bài viết sau để tìm hiểu cách thiết kế database cơ bản nhất.

Contents

Nguyên tắc thiết kế CSDL

Để tránh các sai sót có thể xảy ra khiến quá trình thiết kế CSDL trở nên phức tạp và mất thời gian hơn, trước khi bắt tay vào tìm hiểu cách thiết kế database bạn cần năm vững các nguyên tắc sau:

  • Đảm bảo tính chính xác
  • Tránh mắc phải trùng lập
  • Dễ hiểu
  • Lựa chọn đúng thuộc tính và kiểu thuộc tính
  • Lựa chọn đúng mối quan hệ
thiết kế database

Các bước thiết kế Database chuẩn

Quy trình thiết kế database bao gồm các bước như sau:

  • Phân tích yêu cầu
  • Lên ý tưởng
  • Thực hiện

Phân tích yêu cầu

Đây là việc làm khá quan trọng đặc biệt đối với những lập trình viên mới và chưa có nhiều kinh nghiệm nhưng cũng thường là điều dễ bị bỏ qua. Bạn cần phải hiểu rằng khi đi làm, công việc của một lập trình viên không đơn giản chỉ là đâm đầu vào code mà bạn cũng cần phải hiểu vấn đề, hiểu về những thứ đang xảy ra xung quanh bạn.

Vì thế, khi bạn nhận một dự án nào đó thì phân tích yêu cầu là một việc làm rất cần thiết để có thể hiểu rõ về các yêu cầu từ tổng quát đến cụ thể của dự án đó, từ đó dễ dàng lên kế hoạch thực hiện và theo dõi tiến độ.

Đầu tiên, bạn cần nắm rõ các khái niệm cơ bản sau:

  • MySQL: MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database Management System, viết tắt là RDBMS) hoạt động theo mô hình client-server. RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu (Database) theo hình thức quản lý các mối liên hệ giữa chúng. MySQL là một trong số các phần mềm RDBMS. RDBMS và MySQL thường được cho là một vì độ phổ biến quá lớn của MySQL.
  • Database: Database là tập hợp dữ liệu theo cùng một cấu trúc. Cơ sở dữ liệu, hay database, là nơi chứa và sắp đặt dữ liệu. Dữ liệu được đặt trong một bộ dữ liệu chung, dataset, được tổ chức sắp xếp giống như một bảng tính vậy. Mỗi “bảng” này có liên hệ với nhau theo cách nào đó.
Xem thêm  Web Scraping là gì? Tìm hiểu tổng quát về Web Scraping

Vậy, bắt đầu với database từ MySQL, bạn có thể tùy ý sử dụng giao diện hay command line vì chúng đều sẽ cho ra các kết quả như nhau. Để dễ dàng nhận diện vấn đề hơn, bạn có thể thử phân tích yêu cầu bằng cách đặt ra các câu hỏi như:

  • CSDL sẽ được sử dụng như thế nào?
  • Những thông tin gì cần được lưu vào CSDL?

Chúng ta có thể tham khảo các hệ thống dữ liệu sẵn có. Có thể là trong hoá đơn bán hàng, tập lưu trữ hồ sơ khách hàng.. vv.v.v

Phác thảo ý tưởng

Việc tiếp theo bạn cần làm là tìm kiếm và sắp xếp những thông tin cần thiết sau đó phác thảo chúng ra bên ngoài. Bạn có thể sử dụng các cộng cụ hỗ trợ cho việc phác thảo đó hoặc đơn giản hơn là phác thảo chúng ra giấy. Hãy bắt đầu bằng những thông tin hiện có của bạn, nghĩ về việc bạn muốn đưa những thông tin nào vào trong, bạn sẽ tạo bao nhiêu bảng, bảng nào thì nên tách riêng và bảng nào nên có nhiều cột. Nếu có người khác cũng sẽ sử dụng CSDL đó, hãy hỏi cả ý kiến của họ, bạn có thể hoàn thiện nó tốt hơn.

Thực hiện

Trước khi bắt tay vào thiết kế database, bạn cần phải xác định rõ mục đích sử dụng của nó. Nếu CSDL của bạn được dùng cho nhu cầu đọc là chủ yếu, hãy thiết kế ít bảng và có nhiều cột chứa thông tin hơn. Nếu CSDL được dùng để thêm, sửa, xóa nhiều hơn, hãy xem xét thiết kế nhiều bảng với mỗi bảng mà dữ liệu trong đó được chuẩn hóa. Việc này còn phụ thuộc nhiều vào nhu cầu, khả năng và tư duy của người thiết kế.

Đầu tiên, bạn sẽ cần để tâm đến charset và collation. Một character set là một tập hợp các ký tự và các phương thức chuyển mã ký tự (encoding). Còn một collation là một tập hợp các quy tắc để so sánh hai ký tự trong một tập hợp ký tự.Trong MySQL thì ta có thể lưu trữ dữ liệu ở nhiều dạng character set khác nhau ở các mức độ khác nhau như server, database, table và column. Mỗi character set có một collation mặc định của nó.

Tên collation bắt đầu bằng tên của character set, theo sau bởi 1 hoặc nhiều hậu tố để chỉ ra các đặc điểm khác của collation. Ví dụ, utf8mb4_general_ci và latin1_swedish_ci là các collation của các character set utf8mb4 và latin1. Các hậu tố của collation chỉ định xem liệu 1 collation có phân biệt chữ hoa chữ thường, phân biệt trọng âm hay phân biệt kana hoặc là binary collation, hoặc lưu những ký tự đặc biệt ví dụ như tiếng Việt. utf8 charset với utf8_general_ci và utf8_unicode_ci collation đều làm tốt hai việc này và so sánh giữa hai loại collation này.

Tiếp theo, hãy bắt đầu với việc tạo bảng trong database. Đa phần mọi người đều sẽ thực hiện thao tác với các thiết lập mặc định mà hệ thống làm cho trong khi không hoàn toàn biết nó có ý nghĩa gì. Đây là lúc bạn nên quan tâm đến storage engine. Storage engine là một thuộc tính của table, không phải thuộc tính của database, của dòng hay cột. Tức bạn sẽ có quyền lựa chọn storage engine trong lúc tạo mới một table. Thực tế, MySQL có vài kiểu lưu trữ dữ liệu khác nhau, và người ta gọi chung các kiểu lưu trữ này là Storage engine. Trước phiên bản MySQL 5.5, MyISAM là dạng storage engine mặc định nếu trong lúc tạo table bạn không chỉ rõ. Nhưng từ phiên bản 5.5 trở đi, storage engine mặc định là InnoDB. Trong thực tế InnoDB gần như là storage engine duy nhất được sử dụng ở thời điểm hiện tại. Do nó là engine cân bằng giữa mọi yếu tố. Mặt khác, nó cũng là engine mà MySQL thể hiện tốt nhất.

Xem thêm  Javascript là gì? Tổng quan về JS cho người mới bắt đầu

Ba dạng storage engine phổ biến trong MySQL:

  • InnoDB sử dụng cơ chế row-level locking, tức là khi có hành động thêm-sửa-xóa lên một bản ghi thì chỉ có bản ghi đó bị khóa lại, các bản ghi khác vẫn thực hiện thêm-sửa-xóa bình thường. InnoDB có đặc tính gọi là Concurrency, vì các process khác không phải chờ khi dòng đó được hoàn tất.
  • MyISAM sử dụng cơ chế table-level locking, nghĩa là khi có một thao tác thêm-sửa-xóa dữ liệu thì toàn bộ table đó sẽ bị khóa lại cho tới khi thực hiện xong thì mới có thể tiếp tục thực hiện hành động thêm-sửa-xóa khác.
  • Memory engine là dạng storage mà toàn bộ dữ liệu sẽ được lưu trên memory (RAM). Dạng storage engine chỉ nên được sử dụng khi một bảng “tạm”, hoặc cache kết quả truy vấn từ một bảng khác. Ưu điểm duy nhất của của storage engine này là do tốc độ truy xuất cao. đánh index, virtual column.

Tiếp theo bạn cần phải tạo cột cho mỗi bảng và đừng quên tầm quan trọng của kiểu dữ liệu. Hãy sử dụng kiểu số nguyên khi có thể, kiểu ngày tháng thì nên dùng DATETIME ngoại trừ một vài field sử dụng TIMESTAMP để lưu lại thời điểm. Cụ thể như sau:

  • Luôn thêm một cột là người tạo để biết ai tạo dòng này, một cột là ngày tạo và ngày chỉnh sửa dòng này. Hãy sử dụng kiểu dữ liệu TIMESTAMP cho ngày tạo và ngày chỉnh sửa, dùng kiểu dữ liệu DATETIME cho dữ liệu ngày tháng để thuận tiện cho những nhu cầu sau này như đánh index, virtual column.
  • Tên cột nên được đặt càng ngắn càng tốt và phải đảm bảo rõ nghĩa, dễ hiểu. Tên cột phải tuân theo qui tắc định danh và không được trùng nhau trong mỗi một bảng. Những cột ví dụ như “type”, “status”… nên chọn kiểu là số nguyên, và hãy comment cho cột đó để biết những giá trị cột đó có thể mang. Giá trị được tự động gán cho cột nếu như người sử dụng không nhập dữ liệu cho cột một cách tường minh. Mỗi một cột chỉ có thể có nhiều nhất một giá trị mặc định
  • Hạn chế sử dụng kiểu dữ liệu là TEXT hết mức có thể. Hãy sử dụng index thường xuyên nhất là đối với những cột dữ liệu là số nguyên.
  • Những cột nào xuất hiện WHERE trong điều kiện của câu truy vấn thì đánh index là điều ai cũng biết. Nhưng bên cạnh đó  cũng có rất nhiều loại index cao cấp khác nhau như covering index, merge index, hash index, index cho virtual column…Việc của bạn là chọn ra một index phù hợp để có thể làm gia tăng hiệu quả của tốc độ truy vấn.
  • Học cách kiểm tra câu truy vấn của mình là nhanh hay chậm bằng cách dùng lệnh EXPLAIN.
Xem thêm  CSS là gì? Kiến thức Tổng quan về CSS Mới Nhất

Hướng dẫn thực thi cơ bản với MySQL – Thiết kế Database

[MySQL] Create Database, table [MySQL] Add PRIMARY KEY, FOREIGN KEY Constraint [MySQL] Create Database ER diagram

Create database MySQL
Create database MySQL

Create Database

https://www.w3schools.com/sql/sql_create_db.asp

create database MySQL

Khi đặt tên bạn nên chú ý:

  • Đặt tên không dấu
  • Không có khoảng trắng
  • Viết bằng chữ thường
  • Không có ký tự đặc biệt

Create Table

https://www.w3schools.com/sql/sql_create_table.asp

Tạo theo cú pháp dưới đây

Create table MySQL

Bạn có thể khai báo luôn khóa chính trong lúc tạo bảng theo trình tự như sau

Create table MySQL
Create table MySQL

Lỗi

database MySQL

Lỗi này do cửa sổ query không biết nên truy vấn từ Database nào, trong mysql workbend thì ta nhấp đúp chuột vào Database muốn truy vấn để active nó lên

Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar

Thực hành

Admin

Create MySQL

Street

Create MySQL

Poi

Create database MySQL

Street_type

Create database MySQL

categories

create database MySQl

Address

create database MySQL

Tạo khóa chính

https://www.w3schools.com/sql/sql_primarykey.asp

Cú pháp

Bạn có thể khai báo luôn khóa chính như sau:

Create table MySQL

Bạn nên tạo ngay khi create table

Nếu đã tạo rồi thì giờ bạn chỉ cần update lại thôi

Create database table MySQL

Thực hành

create database MySQL

Tạo khóa ngoại, liên kết bảng

https://www.w3schools.com/sql/sql_foreignkey.asp

Chúng ta có thế khai báo luôn khóa chính lúc tạo bảng:

MySQL

Đối với khóa ngoại, bạn nên tạo xong hết bảng rồi mới tạo khóa ngoại, vì nếu chưa tạo bảng mà tạo khóa ngoại liên kết tới nó thì chương trình sẽ báo lỗi không tồn tại

Nếu bạn đã tạo rồi thì giờ chỉ cần update lại thôi

Create MySQL

Thực hành

create MySQL

create database MySQL

Show Diagram

https://dataedo.com/kb/tools/mysql-workbench/create-database-diagram

show diagram MySQL

Một số lưu ý khác

Cột khóa chính thường không được phép null NOT NULL và được cho tự động tăng AUTO_INCREMENT

một số lưu ý

Cú pháp chuẩn lúc tạo bảng là

thiết kế database

 

Trên đây là tất cả những điều cần biết về cách thiết kế database chuẩn chỉnh nhất mà Nhat Nam Media đã cung cấp đến cho bạn. Hy vọng bài viết này sẽ có ích cho bạn và giúp bạn thành công. Nếu bạn có bất kì thắc mắc nào, hãy liên hệ ngay cho chúng tôi để được giải đáp tận tình và nhanh chóng nhé.

Bài viết liên quan

PWA là gì?
PWA (Progressive Web App) là gì? Tìm hiểu về Cách Xây Dựng PWA cho Website
Lỗi 500 Internal Server Error là gì
Giới thiệu lỗi 500 Internal Server Error là gì? Nguyên nhân và cách khắc phục nhanh chóng
Hướng dẫn cài đặt XAMPP
Giới thiệu XAMPP là gì? Hướng dẫn cài đặt XAMPP cách sử dụng đơn giản phổ biến nhất hiện nay
Hướng Dẫn Cách Tạo Database trong SQL Sever và phpMyAdmin
Lỗi 503 Service Unavailable là gì? Nguyên nhân và cách khắc phục nhanh chóng
Lỗi 404 Not Found là gì
Lỗi 404 Not Found là gì? Nguyên nhân và cách khắc phục lỗi nhanh chóng, dễ dàng, hiệu quả nhất
Máy Chủ Ảo VPS là gì? Hướng dẫn Sử dụng Cài đặt VPS Toàn Tập
Cơ sở dữ liệu Database là gì? Tổng Quan Vai Trò Tầm Quan Trọng
DNS là gì
DNS là gì? Kiến thức Tổng quan DNS Toàn tập
Tổng Hợp Các Plugin Cần thiết cho WordPress Nhất định Phải biết
Tổng Hợp Các Plugin Cần thiết cho WordPress Nhất định Phải biết
cài đặt ssl
SSL là gì? Cách tạo Chứng chỉ SSL Miễn Phí với Let’s Encrypt
Web Service là gì?
Web Services là gì? Tìm hiểu tổng quan về Web Services

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *