Dữ liệu thường gắn liền với lập trình và trong thế giới thông tin hiện đại được trình bày theo ba phiên bản tương đương về mặt logic: dữ liệu được mô tả và sử dụng trong một chương trình bằng ngôn ngữ lập trình; dữ liệu trong các hệ thống cơ sở dữ liệu; dữ liệu trong hệ thống thông tin phân tán. Lập trình hiện đại chỉ mang lại sự tự do tương đối cho biến thể đầu tiên của việc chính thức hóa thông tin. Hai tùy chọn thứ hai là các hình thức cung cấp thông tin và mối quan hệ giữa các thành phần của nó ít nhiều đáng tin cậy hơn.
Dữ liệu quá khứ và hiện tại
Vị trí cơ bản của ngôn ngữ lập trình là mô tả chính xác dữ liệu và thuật toán. Máy tính không "xuất hiện" bất kỳ cơ hội nào về sự không chắc chắn: có điều gì đó cần được xử lý và có một lệnh thực hiện hành động đó.
Khái niệm hiện đại dựa trên một nền tảng cao hơn nhiều: cái gì cũng có, và cái chính xác nó sẽ được xác định tại nơi sử dụng nó. Trong mọi trường hợp, tại thời điểm sử dụng, dữ liệu sẽ tự động được kiểm tra và chuyển đổi sang loại chính xác. Một lập trình viên hiện đại không có nghĩa vụ quan tâm đến mô tả sơ bộ của họ và tuân thủ tính tương thích của kiểu trong thuật toán.
Quá trình chuyển đổi:
- từ dữ liệu đã nhập và mô tả bắt buộc của nó trước khi sử dụng;
- đối với dữ liệu chưa được định kiểu và tự do khỏi mọi nghĩa vụ phải mô tả và sử dụng nó.
Trên thực tế, chúng ta có thể nhận ra sự nới lỏng tương đối của các yêu cầu chính thức hóa - nó chỉ có sẵn trong môi trường của các công cụ lập trình hiện đại. Trong thời gian chạy, loại của mỗi mức dữ liệu được cố định và chuỗi lệnh được xác định rõ ràng.
Loại và Mô hình
Toán học và vật lý, thương mại và sản xuất, kinh tế và các lĩnh vực khác sử dụng số, luôn vận hành với dữ liệu và không coi trọng khái niệm kiểu. Thực tế là các con số có thể là số nguyên hoặc phân số không thực sự quan trọng.
Mỗi công thức cụ thể hoặc hành động cụ thể có thể cho một số nguyên, phân số vô hạn, số thực hoặc số phức. Cho đến bây giờ, có những điều kỳ diệu của tâm trí như nhỏ vô hạn và lớn vô hạn. Hơn nữa, những điều kỳ diệu này thậm chí còn có tính chất.
Vẫn không có tự do trong lập trình. Mọi thứ phải được chính thức hóa nghiêm ngặt. Khái niệm về dữ liệu, trước hết, là một loại:
- số nguyên;
- boolean;
- char;
- chuỗi, v.v.
Tên của các kiểu có thể khác nhau trong các ngôn ngữ lập trình khác nhau, nhưng luôn có một số nguyên hoặc số thực, giá trị boolean, ký hiệu,đường kẻ. Vẫn còn lại các di tích và ý tưởng cụ thể: số nguyên không dấu, mã, byte, từ, từ kép, chuỗi có độ dài cố định.
Khái niệm dữ liệu trong hệ thống dữ liệu không có quyền tự do. Ngôn ngữ SQL - "quốc tế" (có một phương ngữ cho mọi cơ sở dữ liệu hiện đại) - không chấp nhận bất kỳ sự thiếu chính xác nào không chỉ trong dữ liệu mà còn trong các truy vấn sql. Một lỗi trong yêu cầu là một đảm bảo cho việc không có kết quả. Không cần phải nói về vi phạm mô tả gì cả.
Mô hình hóa các quy trình thông tin và biểu diễn dữ liệu là cách chắc chắn duy nhất để xây dựng một cấu trúc có thể phát triển và thích ứng với các điều kiện thay đổi.
Động lực học của bản gốc
Thông tin tự nhiên là sự thay đổi liên tục. Để đưa ra mô tả chính thức và khái niệm về mô hình dữ liệu trong một lĩnh vực chủ đề cụ thể có nghĩa là giải quyết ba vấn đề:
- xác định dữ liệu ở đây là gì;
- chính thức hóa mối quan hệ giữa họ;
- mô tả các quy trình thay đổi dữ liệu và mối quan hệ.
Ví dụ về tập dữ liệu của một thuật toán đơn giản trong JavaScript - một bản sao rút gọn của mô hình của ngay cả hệ thống quản lý cơ sở dữ liệu vững chắc nhất.
Chỉ là trong trường hợp thứ hai, các chuyên gia và chuyên gia, khi thiết kế cấu trúc dữ liệu, bảng và mối quan hệ, thường không nhìn thấy (thực sự rất khó để bao hàm một lượng lớn thông tin tự nhiên) bản chất của sự vật, và thu được một tập hợp dữ liệu khổng lồ, chưa được phát triển, trong khi thông tin nguồn trong lĩnh vực chủ đề được lưu hành một cách tự do và dễ dàng.
Tĩnhcó thể
Thực tiễn JavaScript phổ biến là bao gồm mã được đính kèm vào một trang và các chức năng được gán cho các sự kiện trên thẻ trang. Dù bằng cách nào, thẻ trang xác định dữ liệu mà một tài nguyên web nhất định chấp nhận, sửa đổi hoặc tạo.
Nếu bạn tập trung rất kỹ mã trình xử lý của mình vào các sự kiện phần tử chứ không phải toàn bộ mã trang, thì đây là cách tốt nhất. Lý tưởng nhất là khi mã không giới thiệu dữ liệu mới hoặc không sửa dữ liệu có sẵn, nhưng tập trung vào chính xác những gì nó có tại một thời điểm cụ thể.
Trên thực tế, nếu bạn định nghĩa khái niệm "dữ liệu" là một mô tả tĩnh tối thiểu về thông tin nguồn và theo dõi nó, thì điều này có nghĩa là bạn có cơ hội thành công.
Đối với cơ sở dữ liệu, mọi thứ phức tạp hơn nhiều. Bất kỳ mã JavaScript nào đang "cung cấp" chức năng cho trang. Bất kỳ cơ sở dữ liệu nào cũng là một tập hợp các bảng, mối quan hệ giữa chúng, các thủ tục được lưu trữ, truy vấn và chức năng có sẵn từ bên ngoài.
Tĩnh là rắc rối của bất kỳ thuật toán nào. Khái niệm hiện đại về dữ liệu là tĩnh: một số, một chuỗi, một ký tự, v.v. Khi xử lý hoặc khi ghi vào bảng cơ sở dữ liệu, mọi thứ diễn ra suôn sẻ. Nhưng khi nào thì bản gốc có được một chiều hướng hoặc ý nghĩa khác? Tùy chọn một: thay đổi ký hiệu, nhưng các kết nối và yêu cầu có thể rơi vào trạng thái ngay lập tức.
Tin học và các đối tượng
Định nghĩa khái niệm "dữ liệu" như một đối tượng thay đổi tình hình đáng kể. Đối tượng có cấu trúc riêng của nó. Ở đây bạn có thể sử dụng bất kỳ mô tả nào của bất kỳ biến nào. Vai trò sẽ không chơi. Một đối tượng có các phương thức mà thông qua đó dữ liệu có sẵn. Vì mọi thứđược sử dụng trong lĩnh vực lập trình, tức là ba phương thức cơ bản: đọc, ghi, thay đổi. Bạn có thể thêm nhiều hơn nữa để so sánh, tìm kiếm, sao chép, v.v.
Khu vực chủ đề áp đặt một loạt các thuộc tính trên mỗi dữ liệu. Vì vậy, nó chỉ ra rằng khái niệm dữ liệu được chuyển đổi thành một loại mô tả có thể được thay đổi động. Tĩnh bên trong một đối tượng cung cấp động lực bên ngoài nó.
Thay đổi sự kết hợp của các bộ mô tả tĩnh bên trong một đối tượng, bạn không phải lo lắng về động lực của các mối quan hệ của nó với các đối tượng khác.
Lập trình và trình bày dữ liệu
Dữ liệu là gì? Công chúng đã quen với công nghệ thông tin, hoạt động trên mây và có các thùng chứa trong không gian ảo. Giờ đây, không chỉ các lập trình viên và người dùng chuyên nghiệp, mà cả những người bình thường cũng có năng lực trong các vấn đề về thông tin và việc sử dụng thông tin.
Nhưng lập trình là gì? Cho đến ngày nay, dư luận đưa ra định nghĩa sau cho khái niệm này và các khái niệm của nó:
- Thông tin và dữ liệu là những khái niệm cơ bản được sử dụng trong khoa học máy tính.
- Dữ liệu là một cách nhất định các quan sát được nhận và ghi lại so với thực tế xung quanh.
- Chúng là (cấu trúc) đơn giản và phức tạp, chính và phụ.
- Cơ sở dữ liệu là một tập hợp các tài liệu độc lập được trình bày một cách có hệ thống để chúng có thể được tìm thấy, sửa đổi và sử dụng.
Điều này là khách quan như thế nào? Các tác giả có thẩm quyềnnghĩ vậy. Thực tiễn thực tế có xu hướng đảm bảo rằng mỗi lĩnh vực chủ đề xác định hệ thống dữ liệu chính xác của nó và tạo mọi cơ hội để xây dựng một mô hình động tốt.
Không có gì lạ khi một khách hàng (người tiêu dùng) áp đặt quan điểm của riêng mình lên một lập trình viên (người thiết kế cơ sở dữ liệu) về cách thức và công việc phải làm. Từ quan điểm của lập trình, bất kỳ mong muốn nào của khách hàng đều có thể được thực hiện với độ chính xác cao nhất.
Cần Oracle để giải quyết vấn đề ngân sách cho việc duy trì cấp nước nông thôn (tòa nhà 21 trong làng) - tốt. MySQL là cần thiết để tổ chức một hệ thống theo dõi các mục thư cho tất cả các bưu cục ở Nga - mọi thứ cũng sẽ hoạt động.
Bạn luôn có thể soạn bất kỳ thuật toán nào và cung cấp quyền truy cập vào bất kỳ biểu diễn thông tin nào trong định nghĩa của khái niệm dữ liệu, được thiết lập bởi nhà phát triển của hệ quản trị cơ sở dữ liệu hoặc ngôn ngữ lập trình. Câu hỏi rất khác: làm thế nào để thực hiện điều đó với chi phí tối thiểu trong động lực học tối đa?
Cơ sở dữ liệu, ví dụ
Một cơ sở đơn giản được tạo ra mà không cần mô hình. Các khái niệm cơ bản về dữ liệu và truyền thông rất nhỏ, chức năng rất đơn giản. Ví dụ: đối với một cơ sở giáo dục đại học, bạn cần:
- bàn giáo;
- bảng nhóm (khóa và số nhóm);
- bảng tổng quát của sinh viên (sử dụng các phím nhóm).
Trưởng khoa muốn biết sự tiến bộ của các thầy cô. Bảng giáo viên có các trường:
- họ;
- tên;
- bảo trợ;
- số nhóm được giám sát.
Bảng sinh viên có các trường:
- họ;
- tên;
- bảo trợ;
- ngày sinh;
- GPA (cho tất cả các môn học);
- số nhóm.
Có thể có ít nhất hai lựa chọn để lấy mẫu: sử dụng tên của giáo viên, bạn có thể chuyển đến số nhóm và xem tất cả học sinh và điểm trung bình của họ, hoặc theo họ của giáo viên và họ tên của học sinh, bạn có thể xem điểm trung bình của học sinh cuối cùng.
Ngay cả trong một phiên bản đơn giản như vậy, các vấn đề vẫn được đảm bảo và sẽ phải thay đổi một số thứ. Tình huống: cô giáo bị ốm, một tháng nữa thay thầy, tức là giám sát hai nhóm. Chỉ có một trường dưới một số nhóm trong bảng giáo viên.
Để giải quyết vấn đề, bạn cần thêm một trường trùng lặp. Và nếu hai người bị bệnh, thì hãy thêm ba trường. Vì vậy, bảng của giáo viên bắt đầu phát triển từ đầu.
Có một tùy chọn khác: thay thế trường số của khóa nhóm bằng một trường ký hiệu. Sau đó, mỗi lần bạn chọn, bạn sẽ phải chuyển đổi chuỗi thành một chuỗi khóa và một truy vấn sql sẽ chuyển thành nhiều.
Một ví dụ hứa hẹn hơn không phải là tạo bảng mà là tạo các đối tượng. Sau đó, giáo viên là một đối tượng, và anh ta có thể có một số nhóm được giám sát. Nhưng nó luôn là một đối tượng. Đối tượng giáo viên có một khóa duy nhất, nhưng có thể có nhiều nhóm được giám sát. Nhóm cũng có một khóa duy nhất. Một học sinh cũng vậy.
Cả ba vị trí này không chỉ đảm nhiệm trong nhiệm vụ mà còn có thể phát triển thêm nữa.
Cơ sở hướng đối tượng
Lãnh đạo ngành thông tincung cấp cơ sở dữ liệu quan hệ cổ điển. Chúng được thử nghiệm bởi cuộc sống, chúng hoạt động, chúng an toàn, đáng tin cậy và trong trường hợp có vấn đề, chúng cho phép bạn khôi phục thông tin.
Cơ sở dữ liệu hướng đối tượng (OODB) bắt đầu được phát triển vào giữa những năm 1980 và theo các tác giả có thẩm quyền, nó có triển vọng cho đến ngày nay. Nhưng cho đến nay, ngoài các lý thuyết cơ bản và các điều khoản khái niệm, không có OODB nào đạt được xếp hạng và phân phối giống như MySQL, MS SQL Server hoặc Oracle trong tất cả các phiên bản đa dạng của nó.
Nhưng điều gì sẽ xảy ra nếu định nghĩa, khái niệm về dữ liệu, kiểu, thuộc tính, lớp, phân cấp được đề xuất bởi một nhà phát triển có xếp hạng không đủ để tạo ra một cộng đồng các lập trình viên yêu thích OODB này? Chúng tôi sẽ phải dựa vào sức mạnh của chính mình.
Hơn ba mươi biến thể của OODB đã được tạo trong môi trường Linux. Nhưng đâu là đảm bảo rằng cơ sở dữ liệu đã tạo sẽ không yêu cầu nhiều chức năng hơn? Môi trường Windows không cung cấp nhiều đảm bảo trong lĩnh vực này.
Giải pháp hướng đối tượng
Tuy nhiên, có một giải pháp. Sử dụng MySQL làm ví dụ, bạn có thể chỉ ra cách các bảng quan hệ tiêu chuẩn biến thành mô hình hướng đối tượng về vấn đề đang được giải quyết.
Không có cơ sở dữ liệu ở đây, nhưng có một môi trường để hình thành hệ thống các đối tượng của riêng bạn. Sức mạnh của MySQL chỉ được sử dụng làm bộ nhớ quan hệ cho các bảng từ các hàng thông tin. Logic sử dụng được xác định bởi chính nhà phát triển. Đặc biệt, có một bảng is_cache. Nó có tất cả mọi thứmột số trường cơ bản:
- chủ_mã;
- phiên_mã;
- h_code;
- a_surprise;
- a_contents.
Các trường còn lại mang chức năng dịch vụ. Bảng này đứng ở đầu vào của bất kỳ yêu cầu nào và ghi lại sự xuất hiện của nó. Mô hình cơ sở dữ liệu sẽ hoạt động như thế nào được xác định bởi nhà phát triển của nó. Những gì sẽ phù hợp trong trường nội dung (a_contents) được xác định bởi các đối tượng của mô hình do nhà phát triển tạo.
Có bốn điều trong ý tưởng này: lượt truy cập, phiên truy cập, mã lịch sử lượt truy cập và nội dung cụ thể. Lời gọi là gì, hệ thống đối tượng nào nên được xây dựng - được xác định bởi nhà phát triển. Ý nghĩa của một phiên (quy trình làm việc) là do nhà phát triển xác định. Mã lịch sử là khả năng khôi phục các yêu cầu.
Các bảng ở đây không liên quan gì đến chủ đề. Có bộ điều khiển cuộc gọi (is_cache), có ghi nhật ký (is_customs), có lịch sử cuộc gọi (is_histories). Các bảng còn lại được xác định theo nhiệm vụ đang được giải quyết.
Trên thực tế, giải pháp này đề xuất tạo OODB của riêng bạn dựa trên mô hình cơ sở dữ liệu miền đã xây dựng và vấn đề đang được giải quyết. Có một điểm cộng rất lớn ở đây - đây là khái niệm dữ liệu của riêng bạn, mô hình trình bày của riêng bạn và mối quan hệ giữa chúng. Có một nền tảng ở đây - một cơ sở dữ liệu quan hệ tuyệt vời. Sẽ không có vấn đề gì khi tìm kiếm thứ gì đó và hiểu nhầm điều gì đó.
Mô hình: hệ thống đối tượng + DBMS
Gần như không thể thay đổi bất cứ điều gì trong công nghệ thông tin. Cuộc cách mạng thông tin thực sự vẫn còn xa. ý thức nghề nghiệpcác nhà phát triển phần mềm sẽ không thay đổi các truyền thống cổ điển. Nhưng vẫn còn một lối thoát cho tình huống này.
Sử dụng hệ thống quản lý cơ sở dữ liệu hiện đại đáng tin cậy làm cơ sở để tạo môi trường cho sự tồn tại của mô hình của riêng bạn, bạn có thể đạt được thành công đáng chú ý.
Trong mọi trường hợp, bạn sẽ phải xây dựng một khung nhìn hoặc một mô hình dữ liệu để giải quyết nhiệm vụ, nhưng bạn cần thực hiện nó một cách chính xác: hãy để nó là một hệ thống các đối tượng và một DBMS tốt là môi trường của nó.