Tải bản đầy đủ (.docx) (67 trang)

WikiDrugs trang thông tin điện tử về thuốc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (726.29 KB, 67 trang )

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

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


×