Dữ liệu, như chúng tôi sử dụng thuật ngữ này, là sự thật về điều gì đó hoặc ai đó. Ví dụ: một người có tên, địa chỉ và giới tính. Một số dữ liệu (sự thật) về một người cụ thể có thể là “Mary Jo Davis,” “123 4th St.,”,"Nữ giới." Nếu chúng ta có một danh sách tên, địa chỉ và giới tính của một số người, chúng ta sẽ có một tập hợp thông tin về một số người. Cơ sở dữ liệu là một tập hợp các dữ liệu liên quan. Để “bộ thông tin thực tế về một số người” này được gọi là một cơ sở dữ liệu, chúng tôi mong đợi những người trong cơ sở dữ liệu có nội dung gì đó chung - nghĩa là chúng "có liên quan" theo một cách nào đó. Ở đây liên quan không ngụ ý một mối quan hệ gia đình, mà đúng hơn là một cái gì đó giống như “những người chơi gôn”, “những
Trang 11.1 DỮ LIỆU
Dữ liệu, như chúng tôi sử dụng thuật ngữ này, là sự thật về điều gì
đó hoặc ai đó Ví dụ: một người có tên, địa chỉ và giới tính Một số
dữ liệu (sự thật) về một người cụ thể có thể là “Mary Jo Davis,”
“123 4th St.,”,"Nữ giới." Nếu chúng ta có một danh sách tên, địa chỉ và giới tính của một số người, chúng ta sẽ có một tập hợp thông tin về một số người Cơ sở dữ liệu là một tập hợp các dữ liệu liên quan Để “bộ thông tin thực tế về một số người” này được gọi
là một cơ sở dữ liệu, chúng tôi mong đợi những người trong cơ sở
dữ liệu có nội dung gì đó chung - nghĩa là chúng "có liên quan" theo một cách nào đó Ở đây liên quan không ngụ ý một mối quan hệ gia đình, mà đúng hơn là một cái gì đó giống như “những người chơi gôn”, “những người nuôi chó” hoặc “những người tôi
đã phỏng vấn trên đường phố hôm nay." Trong một “cơ sở dữ liệu
về con người”, người ta mong đợi mọi người có một số
đặc điểm chung gắn kết chúng lại với nhau Một “tập hợp các sự kiện về một số người” không phải là cơ sở dữ liệu cho đến khi đặc điểm chung cũng được xác định Nói cách khác: Tại sao tên và địa chỉ của những người này lại được giữ trong một danh sách?
1.2 XÂY DỰNG CƠ SỞ DỮ LIỆU
Làm thế nào để chúng ta xây dựng một cơ sở dữ liệu? Giả sử bạn được yêu cầu tập hợp cơ sở dữ liệu về các món đồ người ta cất giữ trong tủ đựng thức ăn Bạn sẽ làm như thế nào? Bạn có thể lấy một mảnh giấy và bắt đầu liệt kê những món đồ bạn nhìn thấy Khi hoàn tất, bạn sẽ có cơ sở dữ liệu về các món đồ trong tủ đựng thức ăn Thật đơn giản bạn đã có một bộ sưu tập dữ liệu liên
Trang 2quan Nhưng hãy tự hỏi—Đây có phải là cơ sở dữ liệu tốt không? Cách tiếp cận của bạn để xây dựng cơ sở dữ liệu có phải là một phương pháp tốt không? Câu trả lời cho những câu hỏi này phụ thuộc một phần vào lý do tại sao và cách bạn xây dựng danh sách cũng như ai sẽ sử dụng danh sách đó để làm gì Ngoài ra, có phải bất cứ ai sử dụng cơ sở dữ liệu này đều có thể tìm thấy thông tin một cách dễ dàng? Nếu bạn có kiến thức hơn, bạn sẽ tự hỏi mình cách tốt nhất để xây dựng cơ sở dữ liệu này trước khi bạn lấy giấy
và bắt đầu ghi danh sách các mục
Khi xử lý phần mềm và hoạt động liên quan đến máy tính như cơ sở dữ liệu, tồn tại một môn khoa học về “cách thực hiện” được gọi là sofware engineering (công nghệ phần mềm (SE)) SE
là một quá trình xác định hệ thống và viết phần mềm Để thiết kế một cơ sở dữ liệu tốt, chúng tôi sẽ sử dụng một số ý tưởng từ SE
Trong chương này, chúng tôi trình bày mô tả ngắn gọn về SE khi nó liên quan đến việc lập kế hoạch cho cơ sở dữ liệu của chúng ta Sau phần thông tin cơ bản/tổng quan về SE này, chúng
ta khám phá các mô hình cơ sở dữ liệu và đặc biệt là mô hình cơ
sở dữ liệu quan hệ Mặc dù trong lịch sử có nhiều loại mô hình cơ
sở dữ liệu, hầu hết các cơ sở dữ liệu ngày nay đều sử dụng mô hình được gọi là “cơ sở dữ liệu quan hệ” Trọng tâm của chúng tôi trong cuốn sách này là đưa ra một phương pháp dựa trên SE để thiết kế một cơ sở dữ liệu quan hệ hợp lý
1.3 QUY TRÌNH KỸ THUẬT PHẦN MỀM LÀ GÌ?
Thuật ngữ sofware engineering (công nghệ phần mềm) đề cập đến một quá trình xác định, thiết kế, viết, cung cấp, bảo trì và
Trang 3cuối cùng ngừng sử dụng phần mềm Software engineer thường
đề cập đến “vòng đời” của phần mềm; phần mềm có sự khởi đầu
và sự kết thúc Có rất nhiều tài liệu tham khảo tuyệt vời về chủ đề S.E Một số được tham khảo ở cuối chương này
Một số tác giả sử dụng thuật ngữ công nghệ phần mềm đồng nghĩa với “phân tích và thiết kế hệ thống”, nhưng điểm cơ bản là bất kỳ hệ thống thông tin nào cũng cần có một số quy trình để phát triển nó một cách chính xác SE trải dài nhiều nhiệm vụ của
hệ thống thông tin Nhiệm vụ mà chúng ta quan tâm chủ yếu ở đây là xác định và thiết kế cơ sở dữ liệu “Xác định cơ sở dữ liệu”
có nghĩa là ghi lại những gì cơ sở dữ liệu phải chứa và cách thực hiện nhiệm vụ thiết kế tổng thể
Ý tưởng cơ bản trong SE là xây dựng phần mềm một cách chính xác; một loạt các bước hoặc giai đoạn cần triển khai triển xuyên suốt một “vòng đời” của phần mềm Các bước này đảm bảo rằng quá trình suy nghĩ đi trước hành động—suy nghĩ thông qua “cái gì là cần thiết” đặt trước “phần mềm nào được viết” Hơn nữa, “suy nghĩ” trước khi hành động” đòi hỏi tất cả các bên tham gia phát triển phần mềm phải hiểu và trao đổi với nhau Một điển hình của quan điểm “suy nghĩ trước khi hành động” chính là mô hình “thác nước”; Quá trình phát triển phần mềm được cho là diễn
ra theo hướng có định hướng mà không bị lùi lại Như một thác nước, một khi điểm quyết định được thông qua, rất khó có thể để quay ngược và thực hiện lại các bước trước đó
Nói chung, bước đầu tiên trong quy trình SE bao gồm việc xác định chính thức những gì phải được thực hiện Chúng ta có thể
Trang 4chia bước đầu tiên này thành hai bước: (a) làm sáng tỏ yêu cầu và (b) thống nhất một tài liệu đặc tả Ý tưởng thác nước ngụ ý rằng một khi đặc tả của phần mềm được được người dùng viết và chấp nhận, nó không thể thay đổi hoặc xem lại mà hơn hết là được sử dụng làm cơ sở cho việc thiết kế Sáng tỏ yêu cầu là nơi bạn nói với người xây dựng phần mềm những gì bạn muốn Tài liệu đặc tả
là một tuyên bố chính thức về mong muốn của bạn
Để minh họa, giả sử bạn tiếp xúc với một người xây dựng Bạn nói bạn muốn có một căn nhà ba phòng ngủ, hai phòng tắm Người xây dựng sau đó đặt câu hỏi- một hoặc hai tầng, gạch hoặc vách ngoài, bạn muốn công tắc đèn ở đâu, sàn như thế nào, v.v Người xây dựng sau đó sẽ thu thập tất cả các ghi chú về mong muốn của bạn, sắp xếp thông tin và trình bày các ghi chú để bạn phê duyệt Việc người xây dựng đặt câu hỏi được gọi là “làm sáng tỏ” Sau khi người xây dựng đưa ra cho bạn những gì người xây dựng nghĩ là mong muốn của bạn, “danh sách mong muốn cuối cùng đã thương lượng,” bạn có một tài liệu đặc tả Chắc chắn phải
có một cuộc đối thoại giữa bạn và người xây dựng Đến một lúc nào đó, bạn và người xây dựng hiểu bạn muốn gì, và mong muốn của bạn được thực hiện để người xây dựng có thể tiếp tục quá trình thiết kế ngôi nhà Sự phát triển của phần mềm và cơ sở dữ liệu hoạt động giống như ví dụ về việc xây ngôi nhà Làm cho quy trình xây nhà trở nên chính thức để đảm bảo người xây dựng không lãng phí thời gian để thiết kế một cái gì đó bạn không muốn Điều tương tự cũng đúng với việc thiết kế cơ sở dữ liệu
Trang 5Sau khi đã thống nhất tài liệu đặc tả, bước tiếp theo là thiết
kế ngôi nhà theo tài liệu đặc tả Khi ngôi nhà được thiết kế và bản thiết kế được rút ra, việc xem lại thông số kỹ thuật là không được chấp nhận ngoại trừ những lỗi nhỏ cần thay đổi Phải có “cuộc gặp
gỡ giữa các ý kiến” ở cuối giai đoạn xác định thông số kỹ thuật để
di chuyển cùng với thiết kế (bản thiết kế) của ngôi nhà để được xây dựng Việc phát triển phần mềm và cơ sở dữ liệu cũng vậy Phần mềm sản xuất là một quy trình vòng đời—phần mềm (cơ sở
dữ liệu) được tạo ra, sử dụng, duy trì và cuối cùng đã dừng lại
Những “người chơi” trong vòng đời phát triển phần mềm có thể được đặt thành hai phe, thường được gọi là người dùng và nhà phân tích Phần mềm được nhà phân tích thiết kế cho người dùng theo thông số kỹ thuật của người dùng Trong bài này, chúng ta
sẽ coi mình là nhà phân tích đang cố gắng trình bày những gì người dùng nghĩ họ muốn Nhớ lại ví dụ trong chương này về danh sách sách ở thư viện gia đình Ở đây, người yêu cầu danh sách là người dùng; người lập danh sách sách là nhà phân tích (hay còn gọi là người viết phần mềm, người xây dựng hoặc người thiết kế)
Không có sự thống nhất chung giữa các kỹ sư phần mềm về
số bước hoặc giai đoạn chính xác trong mô hình phát triển phần mềm Các mô hình khác nhau tùy theo sự quan tâm của nhà nghiên cứu SE ở phần này hay phần khác trong quá trình Một mô
tả rất ngắn gọn về quy trình phần mềm như sau: (Phần mềm dưới đây có thể được hiểu là cơ sở dữ liệu)
Bước 1 (hoặc Giai đoạn 1): Yêu cầu Tìm hiểu xem người dùng
muốn/cần gì “Thủ tục tìm ra” được gọi là “làm sáng tỏ”
Trang 6Bước 2: Đặc tả yêu cầu kỹ thuật Viết ra mong muốn/nhu cầu
của người dùng một cách chính xác nhất Ở bước này, người dùng
và nhà phân tích không chỉ ghi lại những gì mong muốn mà còn chi phí là bao nhiêu và mất bao lâu để đi vào sử dụng Nguyên tắc
cơ bản của SE là tạo ra phần mềm đúng thời gian và đúng ngân sách Vì vậy, ngoài việc làm cho nhau hiểu những gì muốn/cần, một bước rất cần thiết là xác định ngân sách và mốc thời gian tạo
ra sản phẩm
Bước 2a: Phản hồi đặc tả kỹ thuật cho người dùng Một sự
xem xét chính thức đặc tả kỹ thuật được thực hiện để xem liệu (a) người dùng có đồng ý nhà phân tích đã đưa ra chính xác những gì người dùng muốn và (b) nhà phân tích hài lòng rằng các yêu cầu của người dùng được xác định rõ ràng
Bước 2b: Làm lại đặc tả kỹ thuật nếu cần và quay lại bước 2a cho đến khi
nhà phân tích và người dùng đều hiểu nhau và đồng ý tiếp tục thực hiện Hãy nhớ mô hình thác nước—khi đã kết thúc giai đoạn đặc tả, người ta sẽ không thể quay ngược dòng
Bước 3: Thiết kế—Phần mềm hoặc cơ sở dữ liệu được thiết
kế để đáp ứng các yêu cầu kỹ thuật từ bước 2 Là nhà xây
dựng nội bộ, giờ đây nhà phân tích (người xây dựng) biết những gì được yêu cầu, vì vậy kế hoạch cho phần mềm được chính thức hóa - một kế hoạch chi tiết được soạn thảo
Bước 3a: Thiết kế phần mềm được kiểm tra độc lập dựa trên đặc tả kỹ thuật Việc kiểm tra độc lập thiết kế sẽ chứng
minh được nhà phân tích có đáp ứng các đặc tả kỹ thuật hay
Trang 7không Khi bước 3 bắt đầu, việc hồi lại là khó khăn nhất Có thể một vài đặc điểm kỹ thuật nhỏ có thể được xem lại, nhưng nhìn chung ý tưởng là phải luôn đi về phía trước sau khi kết thúc mỗi bước Sau khi hoàn thành bước 3a, cả người dùng và nhà phân tích đều biết phải làm gì kế tiếp Nếu trong bối cảnh xây nhà thì bản thiết kế nhà đã được lập ra
Một điểm cuối cùng cần lưu ý: Trong phần đặc tả kỹ thuật, ngân sách và dòng thời gian được nhà phân tích đề xuất và được người dùng chấp nhận Trong giai đoạn thiết kế, phần ngân sách này của thiết kế tổng thể đôi khi được điều chỉnh lại Tất cả phần mềm phát triển cần có tiền bạc và thời gian Điều quan trọng không chỉ là sản xuất chính xác một sản phẩm nhất định mà còn cần phải làm rõ cho tất cả các bên tham gia về chi phí và thời gian tiêu tốn cho dự án đó
Bước 4: Phát triển Phần mềm được viết; một cơ sở dữ liệu được
tạo ra
Bước 4a: Trong giai đoạn phát triển, phần mềm được kiểm tra so
với thiết kế cho đến khi nhà phân tích hiểu rõ thiết kế đó Ghi chú, thông số kỹ thuật ở bước 2 đã có từ lâu và chỉ có những sửa đổi nhỏ về thiết kế sẽ được chấp nhận ở đây hoặc ở Bước 3 Điểm quan trọng ở bước 4 là xây dựng phần mềm theo thiết kế từ bước
3 Trong trường hợp của chúng tôi, cơ sở dữ liệu được tạo và phổ biến trong giai đoạn này
Bước 5: Thực hiện Phần mềm được chuyển giao cho người dùng
sử dụng
trong ứng dụng
Trang 8Bước 5a: Người dùng kiểm tra phần mềm và chấp nhận hoặc từ
chối nó Câu hỏi đặt ra là “Cơ sở dữ liệu có được tạo chính xác không? Nó có đáp ứng các đặc điểm kỹ thuật và thiết kế không? Trong trường hợp của chúng ta, cơ sở dữ liệu được truy vấn, dữ liệu được thêm hoặc xóa và người dùng chấp nhận những gì đã được tạo Một người có thể nghĩ rằng đây là sự kết thúc của vòng đời phần mềm, nhưng có hai bước quan trọng hơn
Bước 6: Bảo trì Việc bảo trì được thực hiện trên phần mềm cho
đến khi nó không còn sử dụng được Cho dù được quy định, thiết
kế và viết tốt đến đâu, một số các phần của phần mềm có thể bị lỗi Trong cơ sở dữ liệu, một số mục dữ liệu có thể cần thiết để thêm vào hoặc xóa đi Có lẽ sẽ cần phải có một số bảng phụ tạo thêm Một số phần của cơ sở dữ liệu có thể cần được sửa đổi theo thời gian để phù hợp với người dùng hoặc để nâng cao hiệu suất Thời gian thay đổi, yêu cầu và nhu cầu cũng thay đổi theo Việc bảo trì rất tốn thời gian và là phần tiêu tốn nhiều của quy trình phần mềm- đặc biệt nếu quy trình SE chưa được thực hiện tốt Bảo trì bao gồm việc sửa các lỗi phần mềm ẩn cũng như nâng cao chức năng của phần mềm
Trong cơ sở dữ liệu, các mục dữ liệu mới thường được yêu cầu; một số dữ liệu cũ có thể không còn cần thiết nữa Phần cứng thay đổi Hệ điều hành thay đổi Bản thân công cụ cơ sở dữ liệu, là phần mềm, cũng thường được nâng cấp - các phiên bản mới phải luôn được cập nhật trên thị trường Dữ liệu trong cơ sở dữ liệu phải phù hợp với sự thay đổi và quy trình thay đổi dữ liệu trong cơ
sở dữ liệu phải được thực hiện
Trang 9Bước 7: Kết thúc phần mềm Bất cứ phần mềm nào được viết
ra đều trở thành lỗi thời Hãy nghĩ về của các trò chơi điện tử cũ
đã từng là công nghệ tiên tiến và giờ đã trở nên lỗi thời và lạc hậu Cơ sở dữ liệu máy tính và công nghệ nói chung đều đang phát triển Gói phần mềm cũ mà bạn sử dụng trên một số máy tính cá nhân cũ không hoạt động được nữa vì hệ điều hành đã được cập nhật, máy tính đã lỗi thời và phần mềm cũ phải được gỡ
bỏ Về cơ bản, quá trình SE phải bắt đầu lại từ đầu với các thông
số kỹ thuật mới Điều này cũng đúng với cơ sở dữ liệu và hệ thống thiết kế Đôi khi, điều tiết kiệm chi phí nhất cần làm là bắt đầu lại
từ đầu
1.4 SƠ ĐỒ MỐI QUAN HỆ THỰC THỂ VÀ VÒNG ĐỜI KỸ THUẬT PHẦN MỀM
Cuốn sách này tập trung vào các bước từ 1 đến 3 của vòng đời phần mềm cho cơ sở dữ liệu Cơ sở dữ liệu là tập hợp các dữ liệu có liên quan Khái niệm về dữ liệu liên quan có nghĩa là cơ sở
dữ liệu lưu trữ thông tin về một tổ chức: một doanh nghiệp, một
cơ quan, một nhóm người hoặc các quy trình liên quan Ví dụ, một
cơ sở dữ liệu có thể chứa dữ liệu về Acme Plumbing và liên quan đến khách hàng và các cuộc gọi dịch vụ Một cơ sở dữ liệu khác có thể là về các thành viên và hoạt động của một nhóm nhà thờ trong thị trấn Sẽ không phù hợp nếu có dữ liệu về nhóm nhà thờ
và Acme Plumbing trong cùng một cơ sở dữ liệu vì hai tổ chức này không liên quan đến nhau Một lần nữa, cơ sở dữ liệu là một tập hợp các dữ liệu liên quan Việc lưu giữ một cơ sở dữ liệu cho từng thực thể trên là điều dễ dàng, nhưng
Trang 10không nên lưu chúng trong cùng một cơ sở dữ liệu.
Các hệ thống cơ sở dữ liệu thường được mô hình hóa bằng sơ
đồ mối quan hệ thực thể (ER) làm bản thiết kế mà từ đó cơ sở dữ liệu thực tế được tạo ra; các kế hoạch chi tiết hoàn thiện là đầu ra của giai đoạn thiết kế Sơ đồ ER là công cụ của nhà phân tích để lập sơ đồ dữ liệu sẽ được lưu trữ trong hệ thống cơ sở dữ liệu Giai đoạn 1, giai đoạn yêu cầu, có thể khá khó chịu khi nhà phân tích phải khơi gợi nhu cầu và mong muốn từ người dùng Người dùng
có thể “hiểu biết về máy tính” hoặc không và có thể biết hoặc không biết các khả năng của phần mềm hệ thống Nhà phân tích thường gặp khó khăn trong việc giải mã nhu cầu của người dùng
và muốn tạo ra một đặc tả kỹ thuật (a) có ý nghĩa đối với cả hai bên (người dùng và nhà phân tích) và (b) cho phép nhà phân tích thiết kế một cách hiệu quả
Trong thế giới thực, người dùng và nhà phân tích đều có thể
là chuyên gia, nhưng người dùng (hoặc nhóm người dùng) phải truyền đạt ý tưởng của họ cho nhà phân tích (hoặc nhóm nhà phân tích) Người dùng phải thể hiện những gì họ muốn và những
gì họ nghĩ họ cần; Các nhà phân tích phải gợi ra những mong muốn và nhu cầu này, ghi lại chúng và lập kế hoạch để hiện thực hóa các yêu cầu của người dùng
Mô tả của người dùng có thể mơ hồ và không có cấu trúc Thông thường, người dùng có hiểu biết rõ về công việc kinh doanh cũng như mô hình kinh doanh của họ Trong khi đó người phân tích thường không biết gì về công việc kinh doanh nhưng hiểu được phần cuối của vấn đề trên máy tính Đối với những người