SQL hiệu năng cao (High-Performance SQL) dành cho nhà phát triển JPA (ORM)
Vlad Mihalcea
Tận dụng tối đa hệ thống cơ sở dữ liệu quan hệ!
Trung cấp trở lên
SQL, performance-tuning, sql-query
Bạn đã bao giờ cảm thấy bế tắc vì việc thiết kế bảng dữ liệu chưa? Đây là khóa học dành cho những ai từng trăn trở với những câu hỏi như: "Bảng này liệu có đúng không?", "Nên chọn cột nào làm PK (Khóa chính) đây?", "Kết nối các mối quan hệ như thế này có ổn không?" hay "Liệu khi thêm tính năng mới, mình có phải thiết kế lại bảng từ đầu không?".
113 học viên
Độ khó Cơ bản
Thời gian Không giới hạn
Đánh giá từ những học viên đầu tiên
5.0
준영
Rất tốt để xây dựng nền tảng một cách dễ hiểu.
5.0
Rootree
Dù là một nhà phát triển nhưng vì rất quan tâm đến mô hình hóa DB nên tôi đã đăng ký khóa học này. Tôi rất thích việc có thể hệ thống lại những khái niệm từng thấy khó hiểu và nan giải khi chuẩn bị xin việc thông qua các ví dụ dễ hiểu. Nhờ cách giải thích đi từ lý thuyết đến ví dụ một cách từng bước, tôi đã có thể hiểu rõ ràng cả những phần vốn dĩ rất khó hiểu : ) Đối với những người đã có kinh nghiệm, tôi nghĩ đây là một bài giảng có thể nghe một cách thoải mái để hệ thống lại kiến thức, dù đó là những nội dung cơ bản. Tông giọng giảng bài trầm tĩnh, tạo cảm giác thân thiện như một người anh tiền bối đang giải thích cho mình vậy, điều đó rất tuyệt. Nếu sau này thầy ra thêm các bài giảng khác, tôi nhất định sẽ đón chờ và theo học tiếp :) À, và việc có thể hỏi thầy về những trăn trở trong sự nghiệp sau khi hoàn thành khóa học chính là động lực lớn giúp tôi kiên trì học đến cùng ㅎㅎ Tôi sẽ sớm gửi email thắc mắc cho thầy ạ~!! Cảm ơn thầy đã tạo ra một bài giảng hay như vậy!
5.0
yooonuu
Trong quá trình phát triển, có những lúc tôi phải thiết kế bảng, và sau khi nghe bài giảng, nhiều phần thắc mắc của tôi dường như đã được giải tỏa. Trên hết, tôi đã từng rất vất vả khi viết truy vấn do thiết kế bảng sai, nên câu nói rằng không phải do năng lực viết truy vấn của tôi kém đã an ủi tôi rất nhiều ㅠㅠ
Cách phân tích yêu cầu và thiết kế bảng dữ liệu
Các khái niệm thiết yếu của 'Mô hình hóa dữ liệu logic' về thực thể, thuộc tính, mã định danh và mối quan hệ
Kiến thức để đạt được chứng chỉ DASP và DAP
Phương pháp thiết kế bảng cân nhắc đến hiệu suất
Ký hiệu để vẽ ERD (IE, Barker)
Mỗi khi thiết kế đều cảm thấy bất an vì không chắc chắn every time you design
Cấu trúc phức tạp đã bị rối tung khi định sửa đổi that is already tangled when you try to modify it
Thêm tính năng = Thiết kế lại bảng lặp đi lặp lại
Mô hình hóa dữ liệu chưa từng được học một cách bài bản
Trong khóa học này, bạn sẽ học cách thiết kế bảng không chỉ dừng lại ở mức 'chỉ hoạt động'
mà còn có khả năng mở rộng và dễ dàng bảo trì.
Việc tạo ra một bảng đáp ứng đúng yêu cầu của khách hàng không hề dễ dàng.
Rất khó để tự mình phán đoán xem cấu trúc nào là phù hợp, thiết kế đó có dễ sửa đổi hay không, và cấu trúc đó có khả năng mở rộng hay không..
Dù có tìm kiếm thử, mọi tình huống đưa ra đều khác nhau và cuối cùng chỉ khiến sự bất an về việc 'liệu đây có phải là phương pháp đúng không?' ngày càng lớn dần.
Nhiều nhà phát triển cũng có trải nghiệm tương tự.
Trong giai đoạn đầu của dự án, họ tập trung vào việc tạo bảng nhanh chóng và triển khai các tính năng phát triển.
Vì dữ liệu còn ít và yêu cầu cũng chưa lớn nên mọi thứ đều có vẻ suôn sẻ.
Tuy nhiên, khi thời gian trôi qua, dự án phát triển và độ phức tạp tăng lên
cấu trúc bảng được tạo ra "chỉ để cho nhanh" ở giai đoạn đầu dần trở thành một trở ngại lớn.
Việc thêm một tính năng đơn giản cũng đòi hỏi phải sửa đổi nhiều bảng, các lỗi lặp đi lặp lại do vấn đề nhất quán dữ liệu và
cuối cùng, bạn sẽ hối hận rằng "Giá như lúc đó mình thiết kế cẩn thận hơn...".
😊
"Chỉ cần chứa được dữ liệu là được rồi!"
Thiết kế mà không suy nghĩ sâu sắc
Dồn tất cả các thuộc tính cần thiết vào một bảng duy nhất để phát triển nhanh chóng
Khi lượng dữ liệu ít thì có vẻ như không có vấn đề gì
📉
Mỗi khi thêm tính năng mới đều cần sửa đổi cấu trúc bảng
Cùng một dữ liệu bị trùng lặp ở nhiều bảng gây ra vấn đề về tính nhất quán
Truy vấn ngày càng trở nên phức tạp và hiệu suất bắt đầu chậm lại
🚨
Để thêm một tính năng, số lượng nơi cần chỉnh sửa trở nên quá nhiều
Dữ liệu cần thiết phải lấy từ bảng nào, lúc nào cũng phải cân nhắc
Bất đồng bộ dữ liệu thường xuyên xảy ra, và mất nhiều thời gian để chỉnh sửa
Khi thực hiện cùng một chức năng, kết quả sẽ hoàn toàn khác nhau tùy thuộc vào cách bạn thiết kế.
Một bảng được thiết kế có tính đến khả năng mở rộng có thể dễ dàng đáp ứng ngay cả khi các yêu cầu thay đổi.
Ngược lại, những bảng được tạo ra mà không có sự cân nhắc kỹ lưỡng sẽ đòi hỏi nhiều chỉnh sửa ngay cả với những thay đổi nhỏ, và các vấn đề ngoài dự kiến sẽ liên tục phát sinh.
Lúc đầu, sự khác biệt này không dễ nhận thấy. Bởi vì cả hai đều có vẻ hoạt động tốt.
Nhưng thời gian trôi qua, sự khác biệt đó sẽ thể hiện rõ qua tốc độ phát triển và độ khó khi bảo trì.
⭐ Khóa học này hướng dẫn cách thiết kế các bảng có khả năng mở rộng.
Bạn sẽ học cách làm "đúng ngay từ đầu" thay vì "để sau này sửa cũng được".
Sau khi hoàn thành khóa học, bạn sẽ có thể nhìn vào yêu cầu và thiết kế cấu trúc có khả năng mở rộng.
📌Yêu cầu của khách hàng📌
Tại căn tin, bạn có thể kiểm tra thực đơn hàng tuần.
Thực đơn được cung cấp cho bữa trưa/tối từ thứ Hai đến thứ Sáu và mỗi thực đơn
Có thể kiểm tra thông tin của chuyên gia dinh dưỡng đã cung cấp thực đơn đó.
Trong thực đơn bữa ăn, cơm và canh là bắt buộc phải có, và có thể bao gồm nhiều món phụ khác nhau.
Lượng calo cũng cần phải được quản lý.
Cũng có trường hợp có các món phụ như sữa chua, kem và trái cây.
👎Mô hình được thiết kế thiếu suy nghĩ
👍Mô hình đã được cân nhắc kỹ lưỡng
Nội dung được cấu trúc để có thể áp dụng ngay vào thực tế thay vì chỉ là lý thuyết đơn thuần
Đưa ra những trăn trở thường gặp trong thực tế và phương pháp giải quyết
Sử dụng các ví dụ gần gũi với thực tế như hệ thống cho thuê sách, trung tâm mua sắm, v.v.
Học tập bằng cách trực tiếp thực hiện theo các bước mô hình hóa dữ liệu
Ôn tập hoàn hảo với tài liệu PPT dài 700 trang
Dễ dàng nắm bắt khái niệm với nội dung tóm tắt trọng tâm
Tài liệu tham khảo có thể xem lại bất cứ lúc nào
Có thể bắt đầu ngay mà không cần chuẩn bị đặc biệt
Chỉ cần giấy và bút là đủ, công cụ chỉ là tùy chọn
Thực hành trên ERD Cloud dựa trên nền tảng web mà không cần cài đặt riêng biệt
Giải thích cả ký hiệu Barker và ký hiệu IE
Giới thiệu khóa học: Bạn đã bao giờ cảm thấy bế tắc trong quá trình thiết kế bảng chưa?
Nội dung được đề cập trong bài giảng
Khóa học này dành cho ai? (Feat. Các nhà phát triển cần thiết kế DB và những người mới bắt đầu lập mô hình)
Cấu trúc bài giảng
Kiến thức tiền đề để tham gia khóa học
Phương pháp nâng cao hiệu quả công việc và năng suất phát triển
Mô hình hóa dữ liệu là gì?
Chúng tôi không quản lý ERD
Thiết kế như thế này sau này sẽ vất vả lắm đấy
Kiểm tra mức độ hiểu biết về mô hình hóa dữ liệu của tôi
Câu đố 1: Câu hỏi Đúng/Sai
Câu đố 2: Đoán số lượng bảng
Các bước từ phân tích yêu cầu đến tạo bảng
Các bước mô hình hóa dữ liệu giải thích qua dự án nhỏ (toy project)
Phân tích/Định nghĩa yêu cầu
Thiết lập lĩnh vực chủ đề
Mô hình hóa dữ liệu khái niệm
Mô hình hóa dữ liệu logic
Mô hình hóa dữ liệu vật lý
Liệu có thể đơn giản hóa các bước mô hình hóa dữ liệu không?
Ký hiệu mô hình hóa dữ liệu (Barker, IE)
Ký hiệu Barker/IE cho mô hình hóa dữ liệu
Ký hiệu thực thể
Ký hiệu thuộc tính
Ký hiệu định danh
Ký hiệu mối quan hệ
Ký hiệu Subtype
Công cụ mô hình hóa dữ liệu (ERwin DA# ERDCloud)
ERwin DA# ERDCloud
Thực hành ERDCloud
Thực thể là gì
Khái niệm thực thể
Bảng? Thực thể? Chúng khác nhau như thế nào?
Cách trích xuất thực thể từ các yêu cầu
Làm thế nào để trích xuất thực thể (entity)?
Cốt lõi của mô hình hóa dữ liệu 'Trích xuất thực thể'
[Thực hành] Hướng dẫn trích xuất Entity
Kiểm tra xem thực thể đã được trích xuất 'tốt' hay chưa
Liệu ý nghĩa của thực thể đã được gán một cách rõ ràng hay chưa
Có phải là đối tượng cần quản lý hay không
Liệu nó có đang tạo thành một tập hợp hay không
Liệu nó có đang bị phụ thuộc vào quy trình nghiệp vụ hay không
Có mang tính độc lập hay không
Liệu có đang trích xuất thực thể theo từng màn hình hay không
Phân loại thực thể giúp bạn biết được loại dữ liệu nào đang được lưu trữ
Thực thể cũng có tính chất riêng
Bí quyết để thiết kế bảng hiệu quả: Phân loại thực thể theo đặc tính
Lợi ích của việc phân loại thực thể
Thuộc tính là gì
Khái niệm thuộc tính
Thành phần của thuộc tính
Phân loại thuộc tính giúp phát triển truy vấn dễ dàng hơn
Lý do phân loại thuộc tính
Thuộc tính cơ bản
Thuộc tính quan hệ
Thuộc tính trích xuất/Thuộc tính trùng lặp
Thuộc tính hệ thống
Thiết kế thuộc tính đặc biệt mà nhiều nhà phát triển bỏ lỡ
Thuộc tính đặc biệt
Đa trị thuộc tính
Thuộc tính hỗn hợp
Thuộc tính loại trừ (Exclusive Attribute)
Thuộc tính mã (Code Attribute)
Phương pháp rút trích thuộc tính
Bí quyết tìm ra những thuộc tính thực sự cần thiết
[Thực hành] Hướng dẫn trích xuất thuộc tính
Định danh là gì
Khái niệm định danh
Đặc điểm của định danh
Phân loại định danh
Định danh nhân tạo thường được sử dụng dưới dạng 'Số OO'
Định danh bản chất và Định danh nhân tạo (feat. Chủ ngữ thật và Chủ ngữ giả)
Các loại mã định danh thường được sử dụng theo đặc điểm của thực thể
Nên sử dụng định danh thực thể hay định danh nhân tạo?
Phương pháp lựa chọn mã định danh
[Thực hành] Các bước lựa chọn định danh
Những lưu ý khi lựa chọn định danh
Những câu chuyện khác nhau liên quan đến định danh
Nếu vô điều kiện tạo bằng định danh nhân tạo (artificial identifier) thì sao?
Hình thức thuộc tính mã sản phẩm (000000121 vs GOD000121 vs 121)
Thói quen suy nghĩ về dữ liệu thực tế (case data)
Quan hệ là gì
Khái niệm quan hệ
Quan hệ và Join
Các thành phần của quan hệ (Bậc quan hệ, Tính tùy chọn của quan hệ, Tên quan hệ)
Các thành phần của quan hệ
Bậc của quan hệ (1:1 / 1:M / M:N)
Tính chọn lọc quan hệ (Tùy chọn / Bắt buộc)
Tên quan hệ
Bí quyết để kết nối các mối quan hệ một cách dễ dàng
Ý nghĩa ẩn giấu của đường quan hệ
Quan hệ phụ thuộc
Quan hệ tham chiếu
Mối quan hệ định danh và mối quan hệ không định danh
Tổng hợp quan hệ phụ thuộc/tham chiếu và nhận dạng/không nhận dạng
Các mối quan hệ phức tạp gặp trong thực tế (Đa hình, Đệ quy, Loại trừ, BOM)
Các mối quan hệ đa dạng
Quan hệ đa hình (Đa quan hệ)
Quan hệ đệ quy (= Quan hệ vòng)
Mối quan hệ loại trừ (= Mối quan hệ Arc)
Quan hệ BOM
Phương pháp rút trích quan hệ
[Thực hành] Làm theo các bước rút trích quan hệ 1
[Thực hành] Làm theo các bước rút trích quan hệ 2
Những câu chuyện khác nhau liên quan đến quan hệ
Có cần ràng buộc khóa ngoại (FK) không? (feat. Công ty tôi không tạo FK)
Trường hợp không cần kết nối đường quan hệ
Kết nối quan hệ để cải thiện hiệu suất
Subtype và Supertype
Khái niệm Subtype/Supertype
Đặc điểm của Subtype/Supertype
Trong tình huống nào thì nên sử dụng subtype?
Lý do sử dụng subtype
Các tình huống cần rút ra subtype
Phương pháp rút trích subtype
[Thực hành] Hướng dẫn cách rút trích subtype
Những lưu ý khi rút trích subtype
Tạo bảng cho thực thể bao gồm subtype
3 loại kiểu tạo bảng cho thực thể bao gồm thực thể con (subtype)
Loại 1. Cấu trúc subtype
Loại 2. Cấu trúc bảng tích hợp
Loại 3. Cấu trúc bảng riêng biệt
Tiêu chí lựa chọn kiểu tạo bảng
Chuẩn hóa là gì
Khái niệm chuẩn hóa
Tại sao phải chuẩn hóa?
Ưu điểm và nhược điểm của chuẩn hóa
Chuẩn hóa dạng 1 - Hãy tách biệt những thứ trùng lặp!
Định nghĩa chuẩn hóa dạng 1
Vấn đề khi không thực hiện chuẩn hóa dạng 1 (1NF)
[Thực hành] Chúng ta cùng cải thiện nhé?
Chuẩn hóa 2 - Để tất cả các thuộc tính phụ thuộc hoàn toàn vào khóa chính!
Định nghĩa chuẩn hóa dạng 2 (2NF)
Vấn đề khi không thực hiện chuẩn hóa dạng 2
[Thực hành] Chúng ta cùng cải thiện nhé?
Chuẩn hóa 3 - Có quan hệ phụ thuộc giữa các thuộc tính không phải khóa?
Định nghĩa chuẩn hóa dạng 3
Vấn đề khi không thực hiện chuẩn hóa dạng 3 (3NF)
[Thực hành] Chúng ta cùng cải thiện nhé?
Phản chuẩn hóa (Phi chuẩn hóa) là gì
Khái niệm chuẩn hóa ngược (phản chuẩn hóa)
Điều cần kiểm tra trước khi thực hiện bán bình thường hóa!
Ưu điểm và nhược điểm của phản chuẩn hóa (Denormalization)
3 phương pháp phản chuẩn hóa để cải thiện hiệu suất
Tạo cột trùng lặp
Tạo bảng trùng lặp
Chia tách bảng
Mã chung
Mã chung là gì?
Lý do sử dụng mã (code)
Những lưu ý khi thiết kế mã chung
Phương pháp thiết kế mã chung
[Thực hành] Phương pháp thiết kế mã chung 1
[Thực hành] Phương pháp thiết kế mã chung 2
Mã chung VS Mã riêng biệt
Quản lý lịch sử
Lịch sử là gì?
Trong tình huống OO, việc quản lý lịch sử là bắt buộc.
[Thực hành] Phương pháp thiết kế lịch sử 1
[Thực hành] Phương pháp thiết kế lịch sử 2
Khóa học này dành cho ai?
'Nhà phát triển' cần thiết kế bảng DB theo từng lĩnh vực nghiệp vụ
'Người mô hình hóa mới vào nghề', người cần thực hiện mô hình hóa dữ liệu trong khi phải trăn trở về cấu trúc tổng thể.
Dành cho những ai đang hướng tới mục tiêu đạt được chứng chỉ DASP, DAP!
Cần biết trước khi bắt đầu?
Khái niệm về Join trong SQL
Hiểu biết cơ bản về truy vấn Select ~ From ~ Where
Xác minh sự nghiệp
113
Học viên
11
Đánh giá
1
Trả lời
4.8
Xếp hạng
1
Khóa học
Xin chào 👋
Tôi là Archix, hiện đang làm việc với tư cách là Data Architect tại một công ty nước ngoài.
Xuất thân là một nhà phát triển Back-end, tôi đã đạt được các chứng chỉ SQLP 🎖 và DAP 🎖 để bước đi trên con đường của một chuyên gia dữ liệu. Hiện tại, tôi đang làm việc vì mục tiêu quản lý dữ liệu tốt hơn bằng cách hỗ trợ các nhà phát triển tối ưu hóa mô hình dữ liệu và tinh chỉnh truy vấn (query tuning).
Trải qua nhiều dự án và quá trình vận hành, tôi đã nhận ra một điều rõ ràng rằng: Một hệ thống có thiết kế vững chắc sẽ không bao giờ bị lung lay. Ngược lại, một hệ thống có thiết kế không tốt sẽ khiến các vấn đề nhỏ lặp đi lặp lại, cuối cùng dẫn đến việc lãng phí nguồn lực không cần thiết.
Vì đã từng có kinh nghiệm làm việc với tư cách là một nhà phát triển, tôi đã trực tiếp trải qua những tình huống như vậy, và tôi muốn truyền tải những nội dung có thể áp dụng ngay vào thực tế bằng cách lồng ghép những kinh nghiệm đó vào bài giảng.
Trong tương lai, tôi dự định sẽ tiếp tục hoạt động tích cực để truyền bá tầm quan trọng của việc mô hình hóa dữ liệu trên nhiều phương diện khác nhau.
Sau khi hoàn thành toàn bộ khóa học, nếu bạn có bất kỳ thắc mắc nào về vị trí DA (Phân tích dữ liệu) hay định hướng nghề nghiệp, đừng ngần ngại liên hệ với tôi qua email dưới đây kèm theo xác nhận "hoàn thành khóa học". Tôi sẽ cố gắng hỗ trợ bạn trong khả năng có thể.
Cảm ơn bạn.
Tất cả
37 bài giảng ∙ (9giờ 42phút)
Tài liệu khóa học:
Tất cả
11 đánh giá
4.8
11 đánh giá
Đánh giá 4
∙
Đánh giá trung bình 5.0
5
Dù là một nhà phát triển nhưng vì rất quan tâm đến mô hình hóa DB nên tôi đã đăng ký khóa học này. Tôi rất thích việc có thể hệ thống lại những khái niệm từng thấy khó hiểu và nan giải khi chuẩn bị xin việc thông qua các ví dụ dễ hiểu. Nhờ cách giải thích đi từ lý thuyết đến ví dụ một cách từng bước, tôi đã có thể hiểu rõ ràng cả những phần vốn dĩ rất khó hiểu : ) Đối với những người đã có kinh nghiệm, tôi nghĩ đây là một bài giảng có thể nghe một cách thoải mái để hệ thống lại kiến thức, dù đó là những nội dung cơ bản. Tông giọng giảng bài trầm tĩnh, tạo cảm giác thân thiện như một người anh tiền bối đang giải thích cho mình vậy, điều đó rất tuyệt. Nếu sau này thầy ra thêm các bài giảng khác, tôi nhất định sẽ đón chờ và theo học tiếp :) À, và việc có thể hỏi thầy về những trăn trở trong sự nghiệp sau khi hoàn thành khóa học chính là động lực lớn giúp tôi kiên trì học đến cùng ㅎㅎ Tôi sẽ sớm gửi email thắc mắc cho thầy ạ~!! Cảm ơn thầy đã tạo ra một bài giảng hay như vậy!
Chào bạn Rootree, cảm ơn bạn đã để lại đánh giá về khóa học. Đúng như bạn đã nói, những khái niệm nan giải và khó hiểu thường trở thành những biến số bất ngờ trong thực tế. Mình tin rằng nếu bạn nắm vững những khái niệm cơ bản này, bạn sẽ có thể đưa ra những phán đoán chính xác hơn trong nhiều tình huống khác nhau. Rất cảm ơn bạn vì bài đánh giá chi tiết. Ngoài ra, nếu có thắc mắc liên quan đến sự nghiệp, bạn vui lòng gửi email cho mình, mình sẽ phản hồi lại nhé. Xin cảm ơn bạn.
Đánh giá 9
∙
Đánh giá trung bình 5.0
5
Rất tốt để xây dựng nền tảng một cách dễ hiểu.
Cảm ơn bạn Jun-young đã để lại đánh giá khóa học. Hy vọng khóa học này sẽ giúp bạn củng cố các khái niệm cơ bản về mô hình hóa. Nếu có bất kỳ thắc mắc nào, bạn cứ thoải mái đặt câu hỏi nhé. Xin cảm ơn!
Đánh giá 5
∙
Đánh giá trung bình 4.6
5
Trong quá trình phát triển, có những lúc tôi phải thiết kế bảng, và sau khi nghe bài giảng, nhiều phần thắc mắc của tôi dường như đã được giải tỏa. Trên hết, tôi đã từng rất vất vả khi viết truy vấn do thiết kế bảng sai, nên câu nói rằng không phải do năng lực viết truy vấn của tôi kém đã an ủi tôi rất nhiều ㅠㅠ
Thật tốt khi những phần còn mơ hồ đã được giải quyết. Các câu truy vấn trên những bảng được thiết kế không tốt thường phải sử dụng nhiều Inline View, và do có nhiều dữ liệu tương tự nhau nên việc cân nhắc lấy dữ liệu từ đâu trở nên rất khó khăn. Trong tương lai, chắc chắn bạn sẽ có thể tạo ra những cấu trúc được thiết kế tốt và tính toán kỹ lưỡng! Xin cảm ơn.
Đánh giá 12
∙
Đánh giá trung bình 5.0
5
Cảm ơn đánh giá khóa học của bạn Lee Han-seok. Nếu bạn còn thắc mắc gì thêm, vui lòng cho tôi biết nhé. 😀
Đánh giá 1
∙
Đánh giá trung bình 5.0
5
Cảm ơn bạn tough đã để lại đánh giá khóa học. Nếu bạn còn thắc mắc nội dung nào khác, hãy cho mình biết nhé. 😀
Khám phá các khóa học khác trong cùng lĩnh vực!