trang Blog

light_onTham gia: 18/08/2009
  • Hệ Quản Trị Cơ Sở Dữ Liệu...SQL Server.>>>>
    Công Nghệ Thông Tin
    CameraNikon D3
    ISO3200
    Aperturef/8
    Exposure1/50th
    Focal Length200mm

    Hệ Quản Trị Cơ Sở Dữ Liệu...SQL Server.>>>>

    Thiết kế cơ sở dữ liệu (1)


    1. Cơ sở dữ liệu là gì: nó đơn giản là 1 tập hợp những dữ liệu được lưu trữ lại để có thể truy xuất một cách hiệu quả nhất.
    - ví dụ: với một website tin tức, nó là tập hợp các bài báo tin tức. Với hệ thống quản lý sinh viên, nó là đống hồ sơ về các sinh viên cần quản lý.
    Nhưng thật ra cơ sở dữ liệu không chỉ đơn giản như vậy, vì nếu chỉ có thế thì chẳng cần phải thiết kế làm gì .

    2. Sao lại phải thiết kế cơ sở dữ liệu?
    Hay nói cách khác là cơ sở dữ liệu cần đảm bảo những yêu cầu gì? Có thể khái quát vài yêu cầu thế này:
    - Lưu trữ dữ liệu đầy đủ & chỉ lưu những dữ liệu cần thiết (nếu không thì lưu làm gì )
    - Đáp ứng các yêu cầu truy xuất dữ liệu. Các yêu cầu này cần được thực hiện chính xác (tất nhiên), nhanh (thử tưởng tượng bạn search 1 sản phẩm và ngồi đợi sau 10' để có đáp án)
    - Yêu cầu về bảo mật.
    Yêu cầu thứ nhất là lí do ra đời cơ sở dữ liệu, yêu cầu thứ hai nảy sinh ra các mô hình dữ liệu và các dạng chuẩn 1NF, 2NF, 3NF, 4NF và cả ... phá chuẩn.

    3. Bước thiết kế CSDL nằm ở đâu trong thiết kế hệ thống?
    Có 2 phương pháp phân tích thiết kế hệ thống được sử dụng nhiều nhất là phân tích thiết kế hệ thống theo phương pháp hướng cấu trúc và phương pháp hướng đối tượng.
    - PTTKHT theo phương pháp hướng cấu trúc: trải qua các bước:
    + Khảo sát hệ thống, xác định yêu cầu và đưa ra kế hoạch dự trù
    + Phân tích hệ thống về chức năng: đưa ra các biểu đồ phân cấp chức năng, biểu đồ luồng dữ liệu
    + Phân tích hệ thống về dữ liệu: đưa ra biểu đồ thực thể liên kết (ER) và biểu đồ ER rút gọn
    + Thiết kế tổng thể
    + Thiết kế các file dữ liệu
    + Thiết kế chương trình
    Biểu đồ ER là biểu đồ thể hiện các thực thể tồn tại trong hệ thống và mối quan hệ giữa chúng.
    Đây là 1 ví dụ về ERD rút gọn:

    Click the image to open in full size.

    Quá trình phân tích và đưa ra bản thiết kế ERD hoàn thành thì quá trình thiết kế CSDL cũng gần như xong.
    - PTTKHT theo phương pháp hướng đối tượng:
    + Khảo sát hệ thống
    + Nhận định và đặc tả các ca sử dụng (use case), mô hình hóa lĩnh vực ứng dụng
    + Xác định các lớp/đối tượng tham gia các ca sử dụng
    + Mô hình hóa tương tác, ứng xử
    + Làm nguyên mẫu giao diện người dùng
    + Thiết kế hệ thống & thiết kế chi tiết
    + Cài đặt và chuyển giao
    Bước xác định các lớp/ đối tượng tham gia các ca sử dụng sẽ đưa ra một biểu đồ lớp (Class Diagram). Tuy không hẳn có sự tương quan 1-1 giữa biểu đồ lớp này và biểu đồ ERD cho CSDL, nhưng hầu hết những kiến trúc của CSDL được phân tích và xây dựng ở bước này. Sau đó mới được làm chi tiết hơn trong khâu thiết kế chi tiết hệ thống.

    Như vậy, để có thể bắt đầu xây dựng CSDL, chúng ta cần biết:
    - Yêu cầu của hệ thống: trên thực tế, đây là Custom Requirement System Document - là kết quả của quá trình trao đổi giữa người thiết kế với khách hàng. Từ đó, các thành viên đưa ra bản phân tích các yêu cầu của hệ thống, và làm rõ các vấn đề sau:
    + Các đối tác tham gia vào hệ thống
    + Hệ thống làm gì? làm như thế nào?
    + Đầu ra của hệ thống? Những thông tin gì cần lưu lại?
    Người thiết kế cần đứng trên vai trò của khách hàng để nhìn hệ thống một cách rõ ràng và chi tiết nhất. Quan trọng là giữa người thiết kế & khách hàng phải có cùng quan điểm về hệ thống sắp xây dựng.
    - Ngoài ra, còn 1 số yếu tố khác cũng rất quan trọng như: phạm vi hệ thống triển khai, thời gian triển khai, chi phí, đối tượng sử dụng... Những yếu tố này cần được làm rõ ngay từ đầu trong tài liệu đầu tiên giữa người thiết kế và khách hàng: Project Definition, hay bản Specification Document.

    Để tập trung vào chủ đề của bài viết là thiết kế CSDL, mình sẽ không đi sâu vào các bước này thêm mà chỉ nói khái quát để mọi người hình dung được ít ra: ta đang ở đâu, đang làm gì, và làm cái gì gì đó để làm gì? (chóng mặt rồi). Những vấn đề về PTTKHT sẽ có dịp được thảo luận thêm ở 1 topic khác, bây giờ chúng ta sẽ xem xét 1 số khái niệm cần biết khi bước vào lĩnh vực CSDL.

    4. Một số khái niệm
    - Thực thể: là một sự kiện, đối tượng hay một chủ điểm mà nó chứa thông tin cần thiết cho hệ thống. Nói nôm na, nó là những gì "sống" trông hệ thống.
    Ví dụ: trong CSDL website bán hàng: khách hàng Ackermann, địa chỉ lớp CNPM K52 ĐH BKHN, mã số K054321. Đơn hàng số 12345 của khách hàng K054321
    - Kiểu thực thể: là một tập hợp các thực thể cùng mô tả một đối tượng nào đó trong hệ thống. Từ khái niệm thực thể đến kiểu thực thể, có 1 sự "trừu tượng hóa", mà nói nôm na tiếp, nó như là phân loại và nhóm các thực thể lại thôi.
    Ví dụ: Khách hàng, Đơn hàng
    - Thuộc tính: là một đặc trưng của thực thể, dùng để mô tả thực thể.
    Ví dụ: Tên, mã số, địa chỉ của ông Griever ở trên là 3 thuộc tính mô tả thực thể Griever.
    Ta cần xác định các thuộc tính cho mỗi kiểu thực thể. Còn đối với mỗi thực thể sẽ có các giá trị cụ thể của thuộc tính đó:
    >>>Tên: Ackermann
    Mã số: K054321
    Địa chỉ: lớp CNPM K52 ĐH BKHN
    >Tuy nhiên tùy theo yêu cầu hệ thống mà ta quan tâm đến thuộc tính nào của ông ta. Ở CSDL bán hàng, ta không cần quan tâm về tình hình học tập, điểm số hay việc ông Griever có học lại môn nào hay không.
    - Thuộc tính được chia làm 4 loại
    + Thuộc tính định danh: khóa chính - tập hợp 1 hay nhiều thuộc tính mà thông qua giá trị của nó, xác định duy nhất 1 thực thể. Thuộc tính này luôn không rỗng và không chứa các thành phần có khả năng thay đổi trong quá trình hệ thống thực thi. Thường nó là mã số của thực thể, và mã số này là duy nhất.
    >>>Sinh viên { mãSV, Họ tên SV, Ngày sinh, lớp}>+ Thuộc tính mô tả: cung cấp thông tin làm rõ cho thực thể. Thuộc tính mô tả chỉ cần xuất hiện một lần trong cả hệ thống, nếu nó xuất hiện trong nhiều kiểu thực thể sẽ gây ra dư thừa dữ liệu.
    Ví dụ: trong kiểu thực thể sinh viên lưu thông tin: mã số SV, họ tên SV, ngày sinh, lớp
    trong kiểu thực thể điểm chỉ cần lưu: mã số SV, điểm... mà không cần lặp lại họ tên SV, ngày sinh, lớp của sinh viên đó nữa
    + Thuộc tính phức hợp: thuộc tính mà gộp 1 số thuộc tính đơn lại hoặc là hợp thành của một số thành phần thông tin. Ví dụ: Họ và tên. Ta rất hạn chế sử dụng loại thuộc tính này. Và thông thường, ở bước chuẩn hóa về dạng 1NF các thuộc tính đều trở về dạng nguyên tố.
    + Thuộc tính đa trị: thuộc tính có thể nhận nhiều hơn 1 giá trị. Các thuộc tính kiểu này cũng cần được chuẩn hóa lại.
    - Bảng dữ liệu: khi biểu diễn các kiểu thực thể trong CSDL, mỗi kiểu thực thể được biểu diễn dưới dạng bảng. Trong đó mỗi cột tương ứng 1 trường (field) dữ liệu là một thuộc tính. Các hàng trong bảng là các thực thể kèm theo là giá trị tương ứng với các thuộc tính.
    - Các ràng buộc và liên kết: gồm ràng buộc khóa chính, khóa ngoại, unique... Những khái niệm này sẽ được làm rõ khi thảo luận sâu hơn về các dạng chuẩn, và khi đi vào bắt đầu thiết kế.

    Kì tiếp theo ta sẽ bàn đến: Các bước xây dựng CSDL và thử thiết kế một hệ CSDL ví dụ theo một bản yêu cầu cụ thể.

    __________________
    Những thứ gì có thể mua được bằng tiền thì hãy bỏ tiền ra mà mua, đừng toan tính thiệt hơn! Hãy để dành sức lực cho những thứ không thể mua được bằng tiền..>>>>>>>>


     

     
    Hệ Quản Trị Cơ Sở Dữ Liệu...SQL Server.>>>>