WikiDrugs -Trang thông tin điện tử về Thuốc
MỤC LỤC
LỜI MỞ ĐẦU
Trong thời đại công nghệ thông tin ngày càng phát triển như hiện nay, Internet đã
trở thành phương tiện giúp cho việc truyền đạt , trao đổi thông tin, hợp tác, giao
lưu … giữa mọi cá nhân, tổ chức và quốc gia trên khắp thế giới diễn ra nhanh
chóng và cực kỳ thuận tiện. Từ đó, internet đã ngày càng được ứng dụng phổ biến
vào các ngành nghề, lĩnh vực của cuộc sống như kinh tế, chính trị , văn hóa, giáo
dục… và góp phần không nhỏ vào sự phát triển của con người và xã hội.
Tuy nhiên ở Việt Nam hiện nay,việc xây dựng các Trang thông tin điện tử về
Thuốc vẫn còn chưa nhiều và mang một số mặt hạn chế. Một trong số đó, chính là
nguồn thông tin của các trang thông tin điện tử về thuốc chỉ được cung cấp từ
một phía ban quản trị của trang thông tin mà không có sự đóng góp của cộng
đồng. Bên cạnh đó là các trang thông tin điện tử về thuốc có chứa nhiều thuật ngữ
chuyên ngành về Y học,Dược học khiến nhiều người đọc rất khó hiểu.
MediaWiki là một phần mềm mã nguồn mở của Wiki , nó hỗ trợ để tạo một bách
khoa mã nguồn mở tự do như Wikipedia, Wikimedia và rất nhiều các trang từ điển
khác, là kết quả của sự cộng tác của chính những người đọc từ khắp nơi trên thế
giới.
Nhằm khắc phục những mặt hạn chế như đã nêu ở trên của các Trang thông tin
điện tử về Thuốc đang có hiện nay . Em đã sử dụng phần mềm MediaWiki để xây
dựng Trang thông tin điện tử WikiDrugs với mục tiêu tạo ra một mô hình tập
hợp các tri thức về thuốc đối với sức khỏe, đồng thời đem lại những giải thích về
các thuật ngữ chuyên ngành về Y Học nói chung cũng như Thuốc nói riêng dựa
trên cơ sở tích hợp lại từ nhiều nguồn tài liệu khác nhau nhằm cung cấp cho người
đọc các thông tin tổng hợp, tin cậy và tiện lợi khi tìm kiếm và sử dụng.
Không chỉ dừng lại ở mức độ tìm hiểu và ứng dụng, em còn thực hiện việc cải tiến
thuật toán tìm kiếm và xây dựng một số extension hỗ trợ cho MediaWiki. Điều này
góp phần giúp cho người dùng có thể tìm kiếm, đóng góp bài viết một cách dễ
dàng và thuận tiện nhất.
1
WikiDrugs -Trang thông tin điện tử về Thuốc
2
WikiDrugs -Trang thông tin điện tử về Thuốc
Chương 1: KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN
1. Khảo sát bài toán
1.1 Khảo sát thực tế
Trên mạng Internet hiện nay có rất nhiều các trang thông tin điện tử cung cấp
thông tin về thuốc như:
-
-
-
- …
Qua việc khảo sát các trang thông tin điện tử về thuốc ở trên ta thấy được một
số các ưu khuyết điểm sau.
Ưu điểm:
Có nhiều các bài viết phong phú và đa dạng các chủ đề về thuốc.
Nêu đầy đủ các thông tin về các loại thuốc như tác dụng, chỉ định, liều dùng…
Hạn chế:
- Trong các bài viết có chứa rất nhiều các thuật ngữ chuyên ngành y học, dược
-
học, bệnh học. Song các thuật ngữ đó vẫn chưa được giải thích một cách cụ
-
thể.
Các thông tin chỉ từ một phía ban quản trị website, chưa có sự đóng góp của
cộng đồng người sử dụng.
1.2 Bài toán đặt ra:
Xây dựng được một Trang thông tin điện tử WikiDrugs khắc phục được những
hạn chế và phát huy các ưu điểm nêu trên.
2. Phân tích yêu cầu
2.1 Các chức năng của hệ thống
a. Đối với người đọc
- Tìm kiếm
- Xem thông tin bài viết và mã nguồn
- Thêm bài viết mới
- Sửa bài viết nếu bài viết đó được cấp quyền sửa đổi cho người đọc.
- Xem lịch sử bài viết.
b. Đối với thành viên
Ngoài các chức năng như của người đọc thì thành viên còn có thêm các chức
-
năng sau :
Tải tệp tin
Theo dõi trang
Tạo trang thảo luận
Quản lý các đóng góp của mình
3
WikiDrugs -Trang thông tin điện tử về Thuốc
- Thay đổi các tùy chình dành cho thành viên.
c. Đối với Admin.
Admin sẽ có tất cả các chức năng ở trên và còn có thêm các chức năng :
- Xóa bài viết
- Phục hồi bài viết
- Khóa bài viết
2.2 Phạm vi ứng dụng
Hiện tại WikiDrugs đã được cài đặt và ứng dụng thử nghiệm trên mạng
Internet. Vì vậy tất cả mọi người sử dụng internet đều có thể truy cập và sử
dụng
các
chức
năng
của
WikiDrugs
thông
qua
o/WikiDrugs/ .
2.3 Biểu đồ phân rã chức năng
WikiDrugs
Quản lý bài viết
Thêm
mới
Sửa đổi
Xóa
Tìm kiếm bài
viết
Phục
hồi
Quản lý thành
viên
Theo
dõi
4
Đăng
nhập
Đăng ký
Tùy
chỉnh
Phân
quyền
WikiDrugs -Trang thông tin điện tử về Thuốc
Chương 2: GIỚI THIỆU PHẦN MỀM MEDIAWIKI
1. Giới thiệu về Wiki
Wiki là một loại ứng dụng xây dựng và quản lý các trang thông tin do nhiều người
cùng phát triển. Đặc điểm nổi bật của wiki là thông tin không được xây dựng một
cách tập trung theo nguyên tắc phân quyền như thường thấy ở các ứng dụng CMS
hay forum mà theo nguyên tắc phân tán: ai cũng có thể chỉnh sửa, thêm mới, bổ
sung thông tin lên các trang tin và không ghi lại dấu ấn là ai đã cung cấp thông tin
đó.
Wiki là một website có tính chất riêng tư cho một nhóm hoặc tổ chức, cộng đồng.
Không giống như một website truyền thống chỉ phục vụ cho mục đích đọc, xem
thông tin, wiki cho phép người dùng nó có thể soạn thảo, sửa đổi, cập nhật thông
tin trực tiếp lên web theo kiểu đóng góp thông tin. Điểm đáng chú ý của wiki là
người dùng không nhất thiết phải biết về Web, HTML.
2. Giới thiệu về MediaWiki
a. Khái niệm chung
MediaWiki là một phần mềm Wiki được phát hành dưới Giấy phép Công cộng GNU
(GPL), cung cấp nhiều chức năng được viết đầu tiên cho Wikipedia và các dự án
thực thuộc Quỹ Hỗ trợ Wikimedia, nhưng nó cũng được sử dụng ở nhiều wiki khác.
Bất cứ người nào cũng được phép sử dụng nó để xây dựng Website cá nhân.
MediaWiki được viết bằng ngôn ngữ PHP và bao gồm trình kết xuất toán texvc
được viết bằng OCaml, và nó lưu giữ thông tin dùng hệ quản trị cơ sở dữ liệu quan
hệ MySQL. Biểu trưng của phần mềm này tượng trưng cho bộ ngoặc vuông
([[ và ]]) được sử dụng trong ngôn ngữ đánh dấu của phần mềm để liên kết đến bài
khác.
MediaWiki có thể chạy cùng với những chương trình khác để hoạt động nhanh
hơn và cộng thêm chức năng. Phiên bản hiện hành hỗ trợ cả memcached, hệ thống
nhớ đệm Squid, và bộ kết xuất toán TeX. Chức năng phần phụ trợ (extension) và
hook để người khác cộng thêm chức năng.
b. Các tính năng
- Dựa vào cơ sở dữ liệu: Thay vì lưu trữ cơ sở dữ liệu trong tập tin văn bản,
MediaWiki dùng MySQL hoặc PostgreSQL. Điều này cho phép tất cả các sửa đổi của
-
bài viết sẽ được lưu giữ.
Hỗ trợ đa ngôn ngữ: Hiện nay, MediaWiki hỗ trợ 140 ngôn ngữ.
Khả năng điều chỉnh: mọi người đều có quyền đóng góp, chỉnh sửa bài viết.
5
WikiDrugs -Trang thông tin điện tử về Thuốc
-
Chỉnh sửa từng phần: Những người dùng có thể chỉnh sửa các phần bài viết thay vì
-
phải tải toàn bộ bài viết.
Các danh sách thảo luận: Người dùng có thể theo dõi và tham gia vào các cuộc
thảo luận liên quan đến nội dung của một bài viết thông qua trang thảo luận.
c. Kiến trúc của MediaWiki
MediaWiki được viết bằng PHP, dùng MySQL hoặc PostgreSQL để lưu trữ cơ sở dữ
liệu. Phần lớn các dữ liệu được lưu trữ trong cơ sở dữ liệu, nhưng một số tệp
chẳng hạn như các tệp phương tiện (media) mà những người dùng tải lên được
lưu trữ trong hệ thống tệp cục bộ.
Kiến trúc của phần mềm MediaWiki như sau:
• Lớp người dùng (User layer) — Trình duyệt Web.
• Lớp mạng (Network layer) — Thiết bị Squid | máy chủ Web.
• Lớp logic (Logic layer) — Kịch bản lệnh PHP MediaWiki | PHP.
• Lớp dữ liệu (Data layer) — Hệ thống tệp tin | Cơ sở dữ liệu | Hệ thống nhớ
nhanh.
Để cài đặt MediaWiki, bạn cần:
•
•
•
Ngôn ngữ văn bản PHP
Một máy chủ cơ sở dữ liệu
Một máy chủ web.
6
WikiDrugs -Trang thông tin điện tử về Thuốc
Chương 3 : PHÂN TÍCH CƠ SỞ DỮ LIỆU
1. Tìm hiểu cơ sở dữ liệu của MediaWiki
Cơ sở dữ liệu của MediaWiki được xây dựng ngay trong quá trình cài đặt hệ
thống.
Sau đây là mô tả các bảng của cơ sở dữ liệu MediaWiki:
Bảng Archive
Archive được dùng để lưu giữ những thông tin của những trang đã bị xóa.
Những trang này có thể khôi phục lại hoặc không bị xóa, bởi một MediaWiki
Administrator sử dụng Special:Undelete special page.
Bắt đầu từ MediaWiki 1.5 thì nội dung của các trang vẫn còn lưu trong bảng
text, thời gian xóa được đưa vào bảng logging. Khi một trang bị xóa, tất cả sửa
đổi cũ của nó được chuyển từ bảng revision vào bảng archive. Khi một trang
được khôi phục, các sửa đổi lại chuyển từ bảng archive để viết lại vào trong
bảng revision.
Các trường của bảng:
Tên Trường
ar_namespace
Kiểu
Int(11)
ar_title
ar_text
Varbinary(255
)
mediumblob
ar_comment
tinyblob
ar_user
Int(10)
ar_user_text
Varbinary(255
)
ar_timestamp
Binary(14)
ar_minor_edit
tinyint
ar_flags
tinyblob
Ghi chú
Chứa không gian tên của các trang đã bị
xóa.
Đây
là
giá
trị
trong
page_namespame.
Chứa tiêu đề trang của những trang đã bị
xóa, giống như page_title.
Không sử dụng, văn bản sửa đổi vẫn còn
trong bảng text.
Chứa các sửa đổi tóm tắt của những trang
đã bị xóa, tựa như rev_comment.
Chứa ID người dùng đã xóa trang, nó giống
như user_id và rev_user.
Chứa tên của người sửa (biên tập), hoặc
địa chỉ IP của người biên tập nếu xóa được
thực hiện bởi người dùng chưa đăng ký.
Chứa thời gian của phiên bản đầu tiên
được lưu, nó tương đương với
rev_timestamp.
Các bản ghi được người dùng đánh dấu sửa
đổi xóa như một sửa đổi nhỏ. Nếu giá trị
của trường này là 1 thì sửa đổi được dán
nhãn là ‘minor’, ngược lại giá trị là 0.
Tương tự như old_flags trong bảng text.
7
WikiDrugs -Trang thông tin điện tử về Thuốc
Nó là 1 trong các giá trị sau: gzip( văn bản
được nén bằng hàm gzdeflate của PHP; utf8( văn bản lưu trữ là utf-8); object
( trường văn bản có chứa đối tượng PHP
tuần tự).
ar_rev_id
ar_text_id
Int(10)
Int(10)
ar_deleted
Tinyint(3)
ar_len
Int(10)
ar_page_id
ar_parent_id
Int(10)
Khóa để liên kết với old_id bên trong bảng
text.
Chưa
được sử dụng.Tương tự như
rev_deleted.
Chứa độ dài của trang bị xóa, tương tự
rev_len.
Dùng để tham chiếu tới page_id.
Bảng category
Tác dụng theo dõi tất cả các danh mục đã tồn tại. Một nội dung nào đó được là
một nhóm khi chúng thỏa mãn các điều kiện:
• Nó có một mục nào đó trong categorylink
Bảng category có thể không có các trang tương ứng nên nó cần được theo dõi
một cách riêng biệt
Các trường của bảng:
Tên trường
Cat_id
Cat_title
Cat_pages
Cat_subcats
Cat_file
Cat_hidden
Kiểu
INT
VARCHAR(50)
INT
INT
INT
TINYINT
Ghi chú
Là khóa chính của bảng
Tên của category nó giống như page_title
Số của trang ở trong category
Số của category nhỏ trong category
Số file trong category
Để sử dụng sau này
Bảng categorylinks:
Bảng categorylinks lưu trữ các mục trên một trang theo kiểu [[category:abc]],
cái này thể hiện nơi đặt trang web vào trong thư mục “abc”.
Các trường của bảng :
Tên trường
Cl_form
Kiểu
Int ( 10 )
Ghi chú
Lưu trữ page_id của bài viết, nơi mà
trang sẽ được đặt vào.
8
WikiDrugs -Trang thông tin điện tử về Thuốc
Cl_to
VARCHAR(255)
Cl_sortkey
VARCHAR (70)
Cl_timestamp
TIMESTAMP
Lưu trữ tên ( trừ tiền tố không gian tên )
của các danh mục mong muốn, trong đó
các khoảng trắng được thay bằng ( _ )
Lưu trữ tiêu đề của trang mà tiêu đề của
trang đó nên được sắp xếp trong một
danh sách danh mục
Lưu trữ thời gian mà nội dung được cập
nhập lần cuối vào bảng.
Bảng change_tag
Bảng change_tag kiểm soát các thẻ tags các bản ghi và các thay đổi gần đây.
Các trường của bảng:
Tên trường
Ct_rc_id
Ct_log_id
Ct_rev_id
Ct_tag
Ct_params
Kiểu
Ghi chú
INT ( 11 )
INT ( 11 )
INT ( 11 )
VARCHAR ( 255 )
BLOB
Bảng externallinks
Là nơi lưu trữ và theo dõi các liên kết ngoài.
Các trường của bảng:
Tên trường
El_from
Kiểu
Int (10)
El_to
BLOB
El_index
BLOB
Ghi chú
Là trang định danh của các trang
wiki đề cập.
Là URL của nó được thông qua
trình duyêt.
Giống như tối ưu hóa tìm kiếm URL.
Bảng external_user
Nó theo dõi các tài khoản sử dụng ở bên ngoài. Nếu tài khoản ở bên ngoài được
sử dụng
Các trường của bảng:
Tên trường
Eu_local_id
Eu_external_id
Kiểu
INT ( 10 )
VARCHAR ( 255 )
Bảng Filearchive
9
Ghi chú
WikiDrugs -Trang thông tin điện tử về Thuốc
Bảng Filearchive lưu trữ tất cả các phương tiện truyền thông mà đã bị xóa. Đây
là bảng làm cho ảnh có thể phục hồi.
Các trường của bảng :
Tên trường
Fa_id
Fa_name
Fa_archive_name
Fa_storage_group
Fa_storage_key
Fa_deleted_user
Fa_deleted_timestam
p
Fa_deleted_reason
Fa_size
Fa_width
Fa_height
Fa_metadata
Fa_bits
Fa_media_type
Kiểu
INT(11)
VARBIRANY(255)
VARBIRANY(255)
VARBIRANY(255)
VARBIRANY(255)
INT(11)
BINARY(14)
Blob
INT(10)
INT(11)
INT(11)
Mediumblob
INT(11)
enum('UNKNOWN',
'BITMAP',
'DRAWING',
'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT',
'EXECUTABLE', 'ARCHIVE')
enum('unknown','application','audio','image','text
','video','message','model','multipart')
VARBINARY(100)
TINYBLOB
INT(10)
VARCHAR(255)
BINARY(14)
TINYINT(3)
Fa_major_mime
Fa_minor_mime
Fa_ description
Fa_user
Fa_user_text
Fa_timestamp
Fa_deleted
Bảng hitcounter
Bảng này là một bộ đệm tạm thời dùng để lưu trữ thông tin xem trang. Dựa vào
giá trị thiết lập của $wgHitcounterUpdateFreq, bảng lưu trữ giá trị page_id của
bất kỳ trang nào được truy cập trong trường hc_id của nó.Số lượng sau khi thiết
lập đưa vào trong radomizer.
Các trường của bảng :
Tên trường
Hc_id
Kiểu
INT(10)
Ghi chú
Chứa page_id của mỗi trang đã
được ghé thăm trong bộ đệm.
10
WikiDrugs -Trang thông tin điện tử về Thuốc
Bảng Image
Lưu trữ thông tin của ảnh và các file khác đã tải lên.
Các trường của bảng :
Tên trường
Img_name
Img_size
Img_width
Img_height
Img_metadata
Img_bits
Img_media_type
Img_minor_mime
Img_description
Img_user
Img_user_text
Kiểu
VARCHAR ( 255 )
INT ( 10 )
INT ( 11 )
INT ( 11 )
MEDIUMBLOB
INT ( 11 )
enum('UNKNOWN','BITM
AP','DRAWING','AUDIO','VI
DEO','MULTIMEDIA','OFFI
CE','TEXT','EXECUTABLE','
ARCHIVE')
enum('unknown','applicat
ion','audio','image','text','v
ideo','message','model','m
ultipart')
VARCHAR ( 100 )
TINYBLOB
INT ( 10 )
VARCHAR ( 255 )
Img_timestamp
Img_sha1
VARCHAR ( 14 )
VARCHAR ( 32 )
Img_major_mime
Ghi chú
Tên file
Kích thước file
Chiều dài file
Chiều cao file
Số bit của file
Kiểu file
Mô tả file
Người tải lên .
Tên người tải file
lên.
Thời gian tải lên.
Bảng imagelinks
Bảng này lưu trữ tất cả các liên kết tới các file đã tải lên.
Các trường của bảng:
Tên trường
il_from
il_to
Kiểu
INT(10)
VARCHAR(255)
Ghi chú
Là page_id của trang có liên kết.
Là tiêu để của file khi link trỏ tới.
Bảng interwiki
Bảng này lưu trữ những tiền tố interwiki và những đích đến của nó.
Các trường của bảng:
Tên trường
Iw_prefix
Kiểu
VARCHAR(32)
Ghi chú
Là tiền tố của liên kết interwiki,
11
WikiDrugs -Trang thông tin điện tử về Thuốc
Iw_url
BLOB
Iw_local
TINYINT (1)
Iw_trans
TINYINT ( 4 )
được sử dụng như một namespace
sử dụng khi sửa.
Là đích đến của liên kết, tên của
trang được thay thế bởi $1.
Thông báo của wiki với nguồn bên
ngoài như thế nào. Nếu Iw_local là 1
nó sẽ sử lý liên kết bên trong Wiki.
Được sử dụng để cho phép các
template mẫu từ một cài đặt của
wiki. Có 2 biến
$wgEnableScaryTranscluding và
iw_trans được sử dụng ở đây.
Bảng ipblocks
Bảng dùng để lưu trữ chi tiết những địa chỉ IP và người dùng đã bị cấm sửa đổi.
Các trường của bảng :
Tên trường
Ipb_id
Ipb_address
Kiểu
INT ( 11 )
TINYBLOB
Ipb_user
INT ( 10 )
Ipb_by
INT ( 10 )
Ipb_by_text
VARCHAR(255)
Ipb_reason
TINYBLOB
Ipb_timestamp
Ipb_auto
CHAR (14)
TINYINT (1)
Ipb_anon_only
TINYINT (1)
Ipb_create_account
TINYINT (1)
12
Ghi chú
Khóa chính của bảng
Địa chỉ IP hoặc tên người
dùng bị chặn
ID của người dùng bị
chặn và là 0 cho các khối
IP bị chặn.
User ID của người quản
trị đã thực hiện chặn
người dùng.
Tên username của người
quản trị đã thực hiện
chặn.
Lý do cấm của người
quản trị đưa ra.
Thời gian thực hiện chặn.
Chỉ ra địa chỉ IP bị cấm ,
nếu nó có giá trị là 1 thì
ipb_address sẽ được ẩn
đi.
Nếu nó có giá trị là 1 , có
nghĩa là lệnh cấm chỉ áp
dụng đối với những
người dùng ko đăng
nhập.
Dùng để ngăn chặn tạo
WikiDrugs -Trang thông tin điện tử về Thuốc
Ipb_enable_autoblock
TINYINT (1)
Ipb_expity
VARCHAR (14)
Ipb_range_start
Ipb_range_end
Ipb_deleted
TINYBLOB
TINYBLOB
TINYINT (1)
Ipb_block_email
TINYINT (1)
Ipb_allow_usertalk
TINYINT (1)
tài khoản từ IP đã bị cấm.
Cho phép tự động chặn
nếu có giá trị là 1.
Thời hạn hết việc cấm
được thiết lập bởi người
quản trị.
IP đầu tiên trong dãy IP
IP cuối cùng trong dãy IP
Cho phép mục vào được
gắn cờ, ẩn nó từ những
người dùng và những
sysop.
Ngăn chặn người dùng
đăng nhập từ truy nhập
đặc biệt Emailuser.
Ngăn chặn người dùng
sửa đổi trang thảo luận
của họ.
Bảng L10n_cache
Là bảng lưu trữ các từ được chuyện đổi sang ngôn ngữ địa phương
Thông tin bản ghi
Tên trường
Lc_lang
Lc_key
Lc_value
Kiểu
VARCHAR ( 32 )
VARCHAR ( 255 )
TINYBLOB
Ghi chú
Mã ngôn ngữ
Từ ban đầu
Từ được chuyển đổi.
Bảng langlinks
Đây là bảng dùng cho những trang hiển thị, một cách nhanh chóng để tìm ra các
liên kết ở lề bên trái , các liên kết thông dụng của Xem nhanh và hộp công cụ.
Các trường của bảng:
Tên trường
Ll_from
Ll_lang
Ll_title
Kiểu
INT(11)
VARBINARY(20)
VARCHAR(255)
Ghi chú
Khóa chính
Ngôn ngữ đích
Bảng logging
Mọi thông tin đăng nhập đều được lưu ở đây .
Các trường của bảng:
Tên trường
Kiểu
13
Ghi chú
WikiDrugs -Trang thông tin điện tử về Thuốc
Log_id
Log_type
INT ( 10 )
VARCHAR (32)
Log_action
VARCHAR (32)
Log_timestamp
CHAR (14)
Log_user
INT (10)
Log_user_text
VARCHAR (255)
Log_namespage
INT (11)
Log_title
VARCHAR ( 255 )
Log_page
Log_comment
Log_params
INT (10)
VARCHAR (255)
BLOB
Log_deleted
TINYINT (3)
Khóa chính của bảng.
Kiểu đăng nhập – block, delete,
import,
makebot,
move,
newusers, protect, renameuser,
rights, upload.
Các hành động đã được thực
hiện, có thể có nhiều hành
động có thể xảy ra cho một
kiểu.
Thời gian mà hành động được
thực hiện.
id của người đã thực hiện
hành động.
username của người thực hiện
hành động.
namespace của trang bị ảnh
hưởng, cùng với log_title đây
là một tham chiếu vào bảng
table.
tiêu đề của trang bị ảnh
hưởng.
chú thích cho hành động.
bổ sung các thông số, thường
là rỗng.
Bảng objectcache
Bảng được sử dụng cho một vài bộ nhớ đệm chung nếu ko sử dụng memcached
Các trường của bảng:
Tên trường
Keyname
Value
exptime
Kiểu
VARCHAR ( 255 )
MEDIUMBLOB
DATETIME
Ghi chú
Bảng oldimage
Bảng này chứa những thông tin của những phiên bản củ của các file. Nó sẽ đầy
khi tải lên wiki một phiên bản mới của những file đã tồn tại đó. Những tập tin
này được chuyển vào folder/image/archive.
Các trường của bảng :
Tên trường
Kiểu
14
Ghi chú
WikiDrugs -Trang thông tin điện tử về Thuốc
Oi_name
Oi_archive_name
Oi_size
Oi_width
Oi_height
Oi_bit
Oi_description
Oi_user
Oi_user_text
Oi_timestamp
Oi_metadata
Oi_media_type
Oi_major_mime
Oi_minor_mime
Oi_deleted
Oi_sha1
VARCHAR(255)
VARCHAR(255)
INT(10)
INT(11)
INT(11)
INT(11)
TINYBLOB
INT(10)
VARCHAR(255)
BINARY(14)
MEDIUMBLOB
Enum
('UNKNOWN',
'BITMAP', 'DRAWING',
'AUDIO',
'VIDEO',
'MULTIMEDIA',
'OFFICE',
'TEXT',
'EXECUTABLE',
'ARCHIVE')
enum(
'unknown',
'application',
'audio',
'image', 'text', 'video',
'message',
'model',
'multipart')
VARBIBARY(100)
TINYINT(3)
VARBINARY(32)
Bảng page
Bảng page được coi là “Lõi của Wiki”. Nội dung của trang này được lưu trữ
trong bảng text. Để đọc ra nội dung của trang thì wiki sẽ tìm kiếm page_id của
trang này. Sau đó page_lastest được sử dụng để tìm kiếm trong bảng revision
với rev_id và rev_text_id được lấy ra để sử lý. Giá trị thu được từ rev_text_id
được sử dụng tìm kiếm từ old_id ở trong bảng text và sẽ đọc ra đoạn text.
Các trường của bảng:
Tên trường
Page_id
Kiểu
INT (10)
Page_namespace
INT ( 11 )
15
Ghi chú
Lưu id của các trang, là khóa
chính của bảng, tự động sinh.
Thông thường một trang sẽ
được phân chia theo ko gian
tên miền namespace và tiêu đề
title. Trường pace_namespace
lưu số namespace của trang,
WikiDrugs -Trang thông tin điện tử về Thuốc
Page_title
VARCHAR(255)
Page_restrictions
Page_counter
TINYBLOB
BIGINT ( 20 )
Page_is_redirect
TINYINT( 3 )
Page_is_new
TINYINT ( 3 )
Page_random
DOUBLE
Page_touched
Page_lastest
CHAR ( 14 )
INT ( 10 )
Page_len
INT ( 10 )
có giá trị từ 0 đến 15 cho các
namespace chuẩn hay từ 100
đến
2147483647
cho
namespace tùy chỉnh.
Tiêu đề của trang, định dạng
văn bản với ký tự _ thay cho
khoảng trống giữa các từ.
Lưu số lượt xem của một
trang.
Lưu trạng thái chuyển hưởng
của một trang. 1 là có chuyển
hướng , và 0 là không có.
Trường này cho biết xem
trang có phải là một mục mới
hay không. Nếu là 1 thì trang
đó là một mục mới do bạn mới
tạo ra, còn nếu không thì
page_is_new sẽ có giá trị là 0.
Có giá trị thập phân ngẫu
nhiên từ 0 đến 1, được sử
dụng cho trạng thái Random
của wiki.
Là một khóa ngoại tới rev_id
trong table revision
Độ dài của nội dung trang
được đo bằng đơn vị byte.
Bảng pagelinks
Lưu tất cả các liên kết bên trong Wiki. Mỗi một liên kết đều chứa một nguồn id
của trang, một không gian tên và tên một nội dung của trang sau đó nó liên kết
đên trang nguồn.
Các trường của bảng:
Tên trường
Pl_form
Pl_namespace
Pl_title
Kiểu
INT ( 8 )
INT ( 11 )
VARCHAR ( 255 )
Bảng page_props
16
Ghi chú
Id của trang
Namespace của trang.
Title của trang
WikiDrugs -Trang thông tin điện tử về Thuốc
Lưu trữ các đặc tính về trang được thiết lập bởi bộ phân tích
parserOutput::setProperty() cũng như hiển thị tiêu đề và chẳng hạn như tiêu đề
hiển thị loại mặc định là sortkey.
Các trường của bảng:
Tên trường
Pp_page
Pp_propname
Pp_value
Kiểu
INT ( 11 )
VARCHAR ( 60 )
BLOB
Ghi chú
Bảng page_restrictions
Lưu giữ các chức năng được thực hiện trong một trang như sửa trang hay di
chuyển trang.
Các trường của bảng.
Tên trường
Pr_page
Kiểu
INT ( 11 )
Pr_type
VARCHAR ( 60 )
Pr_lever
VARCHAR ( 60 )
Pr_cascade
TINYINT ( 4 )
Pr_user
INT ( 11 )
Pr_expiry
Pr_id
VARCHAR ( 14 )
INT ( 10 )
Bảng protected_titles
17
Ghi chú
Chứa một tham chiếu tới
page_id, cái mà làm việc
như là khóa ngoại cho
bảng.
Kiểu bảo vệ được lưu trong
trường này. Cho dù nó được
áp dụng để sửa đổi, di
chuyển trang hoặc tương
tự.
Cột này xác định mức độ
bảo vệ cho trang.
Trường này quyết định
tầng bảo vệ( nghĩa là tất cả
các template và image
được đăng lên trang web
cũng đều được bảo vệ).
Quy định người dùng bị hạn
chế.
Thời gian hạn chế.
Khóa chính của bảng ,được
xử dụng để xác định một
hàng cụ thể.
WikiDrugs -Trang thông tin điện tử về Thuốc
Chứa sự bảo vệ của các trang không tồn tại, danh sách các trang được này có
thể tìm thấy tại: Special:Protectedtitles
Các trường của bảng:
Tên trường
Pt_namespace
Pt_title
Pt_user
Pt_reason
Pt_timestamp
Pt_expiry
Pt_create_perm
Kiểu
INT ( 11 )
VARCHAR ( 255 )
INT ( 10 )
TINYBLOB
CHAR ( 14 )
VARCHAR ( 14 )
VARCHAR ( 60 )
Ghi chú
Bảng querycache
Bảng sử dụng cho nhóm những truy vấn tốn vùng nhớ đệm.
Các trường của bảng:
Tên trường
Qc_type
Qc_value
Qc_namespace
Qc_title
Kiểu
CHAR(32)
INT(5)
TINYINT(2)
CHAR(255)
Ghi chú
Bảng querycachetwo
Bảng sử dụng cho nhóm các truy vấn tốn bộ nhớ đệm mà phải cần 2 liên kết.
Các trường của bảng :
Tên trường
Qcc_type
Qcc_value
Qcc_namespace
Qcc_title
Qcc_namespacetwo
Qcc_titletwo
Kiểu
CHAR(32)
INT(5)
TINYINT(2)
CHAR(255)
INT(11)
CHAR(255)
Ghi chú
Bảng recentchanges
Bảng chứa thông tin về các thay đổi cuối cùng tới wiki. Nội dung của bảng này
dùng để tạo những trang thay đổi gần đây, những trang thay đổi liên quan,
danh sách theo dõi, và một danh sách những trang mới, và chứa thông tin như
là địa chỉ IP của người biên tập không tìm thấy trên các bảng khác.
18
WikiDrugs -Trang thông tin điện tử về Thuốc
Các trường của bảng:
Tên trường
Rc_id
Rd_timestamp
Rc_cur_time
Rc_user
Kiểu
INT ( 11 )
VARCHAR ( 14 )
VARCHAR ( 14 )
INT (10)
Rc_user_text
VARCHAR(255)
Rc_namespace
INT (11)
Rc_title
VARCHAR(255)
Rc_comment
VARCHAR(255)
Rc_minor
TINYINT ( 3 )
Rc_bot
TINYINT ( 3 )
Rc_new
TINYINT ( 3 )
Rc_cur_id
INT ( 10 )
Rc_this_oldid
INT (10)
Rc_last_oldid
INT (10)
Rc_type
TINYINT (3)
19
Ghi chú
Khóa chính của bảng.
Giữ thời gian sửa đổi.
Trường này bằng với
user_id của người dùng đã
tạo sửa đổi.
Lưu tên của người sửa đổi
hoặc là địa chỉ IP của người
sửa nếu người này chưa
đăng ký.
Số namespace của trang đã
sửa đổi.Nếu hàng này mô tả
hành động đăng nhập thì
trường sẽ có giá trị là
-1(NS_SPECIAL)
Tên trang đã sửa đổi,
trường này lưu thông tin
dưới dạng văn bản.
Đây là trường giữ những
sửa đổi chung của người
biên tập.
Giá trị là 1 nếu sửa đổi là
sửa đổi nhỏ, và 0 cho các
trường hợp khác.
Nếu giá trị của trường là 1 ,
thì sửa đổi là do ‘bot’, còn
không thì có giá trị là 0.
Giá trị của trường là 1 nếu
sửa đổi tạo một trang mới,
còn không thì giá trị là 0.
Trường này liên kết tới khóa
page_id trong bảng page,
nơi lưu trữ siêu dữ liệu của
trang.
Liên kết tới khóa rev_id của
phiên bản trang mới(sau khi
sửa đổi) trong bảng
revision.
Liên kết tới rev_id của
revision trước khi sửa đổi.
Lưu trữ các loại sửa đổi cho
một trang:
0 – Sửa đổi trang đã tồn tại
1 – Trang mới
WikiDrugs -Trang thông tin điện tử về Thuốc
Rc_moved_to_ns
TINYINT ( 3 )
Rc_moved_to_title
Rc_patrolled
Rc_ip
VARCHAR(255)
TINYINT ( 3 )
VARCHAR (40)
Rc_old_len
INT (11)
Rc_new_len
INT (11)
Rc_deleted
Rc_logid
TINYINT ( 3 )
INT ( 10 )
Rc_log_type
VARCHAR(255)
Rc_log_action
Rc_params
VARCHAR(255)
BLOB
3 – Đăng nhập để sửa đổi.
Lưu trữ namespace của một
trang có thể đã được di
chuyển. Luôn có giá trị là 0.
Luôn là một chuỗi trống.
Trường này lưu địa chỉ IP
của người dùng quy định
trên
rc_user
nếu
$wgPutIPinRC được kích hoạt.
Lưu trữ kích cỡ kiểu byte
của văn bản của sửa đổi
trước đó.
Lưu trữ kích cỡ kiểu byte
của văn bản của sửa đổi
hiện thời.
Tương tự như rev_deleted.
Đây là khóa ngoại liên kết
tới log_id của bảng logging.
Nếu một hành động được
tham chiếu trong cột này,
trường sẽ lưu trữ kiểu của
hành động đăng nhập đã
được thực hiện.
Bảng redirect
Chứa cho mỗi trang hiện đang là một id chuyển hướng của trang nguồn : số
namespace đích đến, tiêu đề trang đích.
Các trường của bảng:
Tên trường
Rd_from
Rd_namespace
Rd_title
Kiểu
INT(8)
INT(11)
VARCHAR(255)
Ghi chú
Khóa chính của bảng
Bảng revision
Bảng revision nắm giữ siêu dữ liệu cho mọi sửa đổi một trang bên trong
Wiki.Mỗi một sửa đổi của một trang tạo ra một hàng revision, nơi giữ thông tin
như người sửa, thời gian sửa …
Các trường của bảng:
20
WikiDrugs -Trang thông tin điện tử về Thuốc
Tên trường
Rev_id
Rev_page
Kiểu
INT(8)
INT(8)
Rev_text_id
INT(8)
Rev_comment
TINYBLOB
Rev_user
INT(5)
Rev_user_text
VARCHAR(25
5)
Rev_timestamp
Rev_minor_edit
CHAR(14)
TINYINT(1)
Rev_deleted
TINYINT(1)
Rev_len
INT(8)
Rev_parent_id
INT(8)
Ghi chú
Khóa chính của bảng
Trường này nắm giữ một tham
chiếu tới trang mà revision này
gắn liền, giá trị của nó chính bằng
giá trị page_id trong table page.
Đây là một tham chiếu tới old_id
trong bảng text , nơi mà các văn
bản thực tế được lưu trữ với số
lượng lớn.
Lưu thông tin sửa đổi hoặc xây
dựng của một trang.
Có giá trị bằng với user_id của
người dung – người mà tạo ra sửa
đổi của trang.
Lưu username của người biên tập
đã đăng ký và ip của máy tính
người chưa đăng ký.
Lưu thời gian sửa đổi.
Có 2 giá trị là 0 và 1, giá trị là 1
nếu người dùng đánh dấu vào
checkbox :’minor edit’ , và 0 trong
trường hợp ngược lại.
Trường này được dành riêng cho
hệ thống RevisionDelete mới.
Chứa độ dài của sửa đổi tính bằng
đvị byte, sử dụng trong những
trang lịch sử.
Được sử dụng để hỗ trợ thêm cho
cấu trúc dạng cây.
Bảng searchindex
Bảng searchindex dùng để cung cấp tìm kiếm fulltext cho wiki. Điều này chỉ thực
hiện khi bảng searchindex có kiểu MyISAM và bảng text có kiểu InnoDB.
Các trường của bảng :
Tên trường
Si_page
Si_title
Si_text
Kiểu
INT(8)
VARCHAR(255)
MEDIUMTEXT
Bảng site_stats
Ghi chú
Khóa chính của bảng
Tiêu đề của bài viết
Văn bản của bài viêt.
Có một dòng với một số thông tin tổng hợp về tình trạng của website.
Các trường của bảng :
21
WikiDrugs -Trang thông tin điện tử về Thuốc
Tên trường
Ss_row_id
Ss_total_views
Ss_total_edits
Ss_good_articles
Ss_total_pages
Ss_users
Ss_active_users
Ss_admins
Ss_images
Kiểu
Int(10)
BIGINT(20)
BIGINT(20)
BIGINT(20)
BIGINT(20)
BIGINT(20)
BIGINT(20)
INT(11)
INT(11)
Ghi chú
Khóa chính của bảng
Tổng số xem website
Tổng số sửa đổi
Tổng bài viết tốt
Tổng các trang
Tổng số người dùng
Số người dùng đã kích hoạt
Số admin
Tổng số ảnh
Bảng templatelinks
Chứa trong mỗi trang hiện tại bao gồm id của trang chủ số không gian tên của
nó hay tiêu đề của nó mà không cần không gian tên.
Các trường của bảng:
Tên trường
Tl_form
Tl_namespace
Tl_title
Kiểu
INT ( 10 )
INT ( 11 )
VARCHAR ( 255 )
Ghi chú
Bảng text
Bảng này chứa mã wikitext của các trang sửa đổi.
Các trường của bảng:
Tên trường
Old_id
Kiểu
INT (10)
Old_text
Old_flags
BLOB
BLOB
Ghi chú
Là khóa chính của bảng, dùng để liên kết
với bảng revision thông qua khóa
rev_text_id trong bảng revision.
Lưu mã wikitext của trang.
Danh sách cách nhau bằng dấu phẩy của
các flag:
-Gzip: văn bản được nén với hàm gzdeflate()
của PHP
-Utf-8: văn bản được lưu theo kiểu utf-8
-Object: trường văn bản có chứa một đối
tượng PHP tuần tự.
-External:Văn bản được lưu trữ tại vị trí bên
ngoài theo quy định của old_text.
Bảng User
Dùng để lưu giữ thông tin về người sử dụng.
Các trường của bảng:
22
WikiDrugs -Trang thông tin điện tử về Thuốc
Tên trường
User_id
Kiểu
INT(10)
User_name
VARBINARY(255)
User_read_name
VARBINARY(255)
User_password
TINYBLOB
User_newpassword
TINYBLOB
User_newpass_time
User_email
BINARY(14)
TINYBLOB
User_options
BLOB
User_touched
BINARY(14)
User_token
BINARY(32)
User_email_authentica
ted
User_email_token
User_email_token_expr
i
User_registration
User_editcount
BINARY(14)
Ghi chú
Khóa chính, được sử
dụng để nhận diện 1
người sử dụng.
Lưu tên người dùng,
tên người dùng phải là
duy nhất và không ở
dạng địa chỉ IP.
Lưu tên thật của người
dùng.
Lưu mật khẩu của
người dùng.
Được tạo ra cho tính
năng gửi một mật khẩu
qua mail.
Lưu email của người
dùng.
Ko được sử dụng từ
MediaWiki 1.16
Lưu thời gian cuối cùng
mà người dùng tạo ra
sự thay đổi trên
Website.
Tạo giá trị lưu trong
cookie khi mà chức
năng “Nhớ mật khẩu”
được sử dụng.
Xác nhận email
BINARY(32)
BINARY(14)
BINARY(14)
INT(11)
Đếm số lần sửa đổi của
người dùng.
Bảng User_groups
Các trường của bảng:
Tên trường
Ug_user
Kiểu
INT(5)
Ug_group
CHAR(16)
Ghi chú
Liên kết đến user_id của bảng
user.Đây là khóa ngoại để liên kết các
tài khoản với các quyền của họ.
Trường này lưu trữ những quyền hạn
của người sử dụng, thứ mà được lưu
23
WikiDrugs -Trang thông tin điện tử về Thuốc
trữ như những nhóm.
Bảng user_newtalk:
Bảng user_newtalk lưu giữ các thông báo về những thay đổi trang thảo luận
của người dùng. Nó được hiển thị trong hộp “ bạn có những tin nhắn mới”.
Các trường của bảng :
Tên trường
User_id
Kiểu
INT(11)
User_ip
VARBINARY(40)
User_last_timestamp
BINARY(14)
Ghi chú
Là khóa liên kết tới bảng
user qua user_id.
Nếu người dùng là một
người bất kỳ thì địa chỉ
IP của họ sẽ được lưu lại
đây.
Bảng watchlist:
Bảng chứa danh sách các thành viên với những trang mà thành viên đó theo
dõi.
Các trường của bảng:
Tên trường
Kiểu
Wl_user
INT(10)
Wl_namespace
INT(11)
Wl_title
VARBINARY(255)
Wl_notificationtimestamp
VARBINARY(14)
Ghi chú
Là khóa liên kết tới bảng
user qua user_id.
Đây là khóa liên kết tới
page_namespace
Đây là khóa liên kết tới
page_title
Đây là dấu thời gian kể từ
khi người dùng gửi thư
thông báo, nó sẽ bị xóa khi
người dùng truy cập vào
trang.
2. Phân tích mối quan hệ giữa các bảng
Trong quan hệ cơ sở dữ liệu giữa các bảng trong MediaWiki thì có thể chia
thành các nhóm nhóm quan hệ sau:
2.1 Nhóm liên quan đến người dùng
Mối quan hệ giữa các bảng : user, user_newtalk, user_properties,
user_groups, watchlist.
• Bảng user_group và user :có quan hệ 1-n liên kết với nhau thông qua
là user_id và ug_user.
o Một người dùng thì thuộc và chỉ một nhóm người sử dụng.
24
WikiDrugs -Trang thông tin điện tử về Thuốc
Một nhóm sử dụng thì có l hoặc nhiều người sử dụng.
• Bảng watchlist và user :có quan hệ 1-n liên kết với nhau thông qua
o
user_id và wl_user.
o Một người dùng có 1 và chỉ một danh sách theo dõi
o Một danh sách theo dõi có thể là của 1 hoặc nhiều người sử
dụng.
• Bảng user_newtalk và user:có quan hệ 1-n, liên kết với nhau qua từ
khóa user_id.
o Một người dùng thì có một và chỉ một hộp thông báo.
o Một hộp thông báo thì thông báo cho một hoặc nhiều người.
• Bảng user_propertises và user:có quan hệ 1-n, liên kết với nhau thông
qua user_id và up_user.
Mối quan hệ giữa các bảng user , ipblocks, logging, image, oldimage,
revision, recentchanges.
• Bảng user và ipblocks có quan hệ 1-n , liên kết với nhau thông qua
user_id và ipb_user.
• Bảng user và logging có quan hệ 1-n, liên kết với nhau thông qua
•
user_id và log_user.
Bảng user và image có quan hệ 1-n, liên kết với nhau thông qua
user_id và img_user.
• Bảng user và oldimage có quan hệ 1-n , liên kết với nhau thông qua
user_id và oi_user.
• Bảng user và recentchanges có quan hệ 1- n , liên kết với nhau thông
qua user_id và rc_user.
• Bảng user và revision có quan hệ 1-n, liên kết với nhau thông qua
user_id và rev_user.
2.2 Nhóm trang văn bản và các thông tin liên quan
Mối quan hệ giữa các bảng : page, pagelinks, category, categorylinks,
page_restrictions, redirect, templatelinks, iwlinks, langlinks, externallinks,
trackbacks.
• Bảng page và category:có quan hệ 1-n, liên kết với nhau thông qua
page_title và cat_title.
o Một trang thì thuộc hoặc nhiều thể loại.
o Một thể loại thì có một và chỉ một trang hiển thị.
• Bảng Page và categorylinks: có quan hệ 1-n, liên kết với nhau thông
qua page_id và cl_from.
25