
Để chuẩn bị cho các bài viết về Cơ Sở Dữ Liệu, điều khiến mình băn khoăn nhất chính là tìm kiếm một dữ liệu mẫu. Nó phải có tính thực tế và đủ lớn.
Giới thiệu
Để loạt bài viết này trở nên thực tế và hấp dẫn nhất có thể. Mình đã loay hoay một thời gian để tìm kiếm một CSDL tốt. Và để tìm kiếm được CSDL như mong đợi, mình đã đề xuất một số tiêu chí:
Thực tế
- CSDL phải có tính thực tế và ứng dụng cao. Khác hoàn toàn với những CSDL của các bạn học ở trường học ‘Quản Lý Bán Hàng’, ‘Quản Lý Học Vụ’ …vv
- Một CSDL thực tiễn có thể dễ dàng kiếm. Mình có thể lấy bất kỳ CSDL của một dự án nào đó tại công ty. Nhưng các vấn đề về kinh tế (bảo mật dữ liệu, bản quyền…vv) không cho phép mình làm như vậy. Đã có lúc, mình suy nghĩ theo hướng chỉ lấy cấu trúc, dữ liệu mình sẽ làm giả. Nhưng như vậy, dữ liệu sẽ không nhiều, mang tính chủ quan và lại trở lại bài toán tẻ nhạt, phi thực tế.
Đủ lớn
Đây là một yếu tố quan rất quan trọng. Một CSDL đủ lớn sẽ cho các bạn thấy sự khác biệt giữa các hệ CSDL và dữ liệu được lưu trữ trong flat file. Đủ lớn, để các bạn cảm nhận được sự quan trọng của các phương thức TOP, GROUP BY…vv
IMDb
Sau nhiều ngày tìm kiếm, IMDb là ứng viên số một của mình. Tuy nhiên, khi triển khai thì IMDb quá lớn so với mong đợi. Sẽ có nhiều vấn phát sinh khi chúng ta xử lý một CSDL kích thước như vậy. Do đó, IMDb sẽ là ứng cử viên số 1 nếu loạt bài về CSDL (SQLServer) nâng cao được ra đời.
Chinook
Vậy là tiếp tục tìm kiếm, trời không phụ lòng người. Mình đã tìm thấy một CSDL khá hấp dẫn, mô tả về một cửa hàng bán nhạc (các bạn có thể hình dung giống như mp3.zing, nhaccuatui hay spotify). Để mọi thứ hấp dẫn nhẫn có thể (tránh trường hợp các bạn mất kiên nhẫn, tìm đến trang chủ của nó để tìm đáp án) mình sẽ không cung cấp nhiều thông tin về CSDL này. Thay vào đó, mình sẽ cung cấp các mô tả chi tiết về CSDL, các scripts hỗ trợ nhập liệu…vv Cuối cùng, qua từng bài viết, với những kiến thức mới. Chúng ta sẽ từng bước, từng bước khám phá dữ liệu trong CSDL này.
Mô tả CSDL
Cơ sở dữ liệu mẫu được mô tả trong biểu đồ bên dưới.

Dựa vào biểu đồ này, chúng ta có thể dễ dàng hình dung được các đối tượng và thông tin chi tiết của chúng. Như mình đã giới thiệu trong các bài viết trước. Ở loạt bài cơ bản này, chúng ta sẽ không quá tập trung vào vấn đề thiết kế và tối ưu CSDL. Do đó, cấu trúc các bảng dữ liệu, kiểu dữ liệu và kích thước dữ liệu của từng thuộc tính chúng ta sẽ giữ nguyên theo bản gốc của nó.
Dưới đây, mình sẽ mô tả chức năng của từng bảng dữ liệu. Mô tả các thuộc tính và kiểu dữ liệu của chúng.
Album
Lưu trữ các album nhạc.
Các thuộc tính |
|
RBTV |
|
Artist
Lưu thông tin nghệ sĩ.
Các thuộc tính |
|
RBTV |
|
Track
Lưu thông tin các bài hát.
Các thuộc tính |
|
RBTV |
|
Genre
Lưu trữ thông tin các thể loại nhạc.
Các thuộc tính |
|
RBTV |
|
MediaType
Lưu trữ thông tin định dạng bài nhạc.
Các thuộc tính |
|
RBTV |
|
PlaylistTrack
Lưu trữ thông tin của của các playlist. Do 2 đối tượng Playlist và Track có quan hệ n-n. Nghĩa là 1 track có thể thuộc nhiều playlist và một playlist cũng có thể chứa nhiều track. Đây là một trong những kỹ thuật thiết kế CSDL.
Các thuộc tính |
|
RBTV |
|
Playlist
Lưu trữ thông tin playlist.
Các thuộc tính |
|
RBTV |
|
Employee
Lưu trữ thông tin nhân viên.
Các thuộc tính |
|
RBTV |
|
Customer
Lưu trữ thông tin khách hàng.
Các thuộc tính |
|
RBTV |
|
Invoice
Lưu trữ thông tin hóa đơn.
Các thuộc tính |
|
RBTV |
|
InvoiceLine
Lưu trữ thông tin chi tiết hóa đơn.
Các thuộc tính |
|
RBTV |
|
Trong bài định nghĩa dữ liệu, chúng ta sẽ cùng nhau tìm hiểu cú pháp và bắt đầu viết mã T-SQL để định nghĩa các bảng dữ liệu.