text:
Top Definition
an akward smile in a candid picture on facebook.
"oh man, Tyler got lemonfaced in that picture Sadie put on facebook"
"So did you.."
"So did you.."
viết bởi sillyme13488 31 Tháng tám, 2012
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.×

markdown:
Top Definition
an akward smile in a candid picture on facebook.
"oh man, Tyler got lemonfaced in that picture Sadie put on
[facebook](/define.php?term=facebook)"
"So did you.."
"So did you.."
viết bởi
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.


text:
Top Definition
A way that some ''internet zedders'' say the word Thirsty
H4ii'iiM'THIRSTI''xX
thirsty
thirsty
viết bởi da nweb!+! 19 Tháng chín, 2009
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.×

markdown:
Top Definition
A way that some ''internet zedders'' say the word Thirsty
H4ii'iiM'THIRSTI''xX
[thirsty](/define.php?term=thirsty)
viết bởi
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.

WARC-Type: response

Content-Type: application/http; msgtype=response

Connection: close

X-Content-Type-Options: nosniff

Cache-Control: max-age=3600, public

Via: 1.1 varnish

X-Cache: MISS

Server: Cowboy

X-Frame-Options: SAMEORIGIN

X-Xss-Protection: 1; mode=block

Vary: Accept-Encoding

Accept-Ranges: bytes

Content-Type: text/html; charset=utf-8


text:
Sign in to post new definitions, images, and sounds and create lists of favorites.
Sign in to post new definitions, images, and sounds and create lists of favorites.
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.×

markdown:
Sign in to
**post new definitions, images, and sounds** and create lists of favorites.
Sign in to
**post new definitions, images, and sounds** and create lists of favorites.
Địa chỉ daily@urbandictionary.com sẽ gửi thư cho bạn. Chúng tôi cam kết sẽ không để xảy ra tình trạng gửi thư rác vào hộp mail của bạn.

WARC-Truncated: length

Cache-Control: max-age=0, private, must-revalidate


text:
- Home
- Tin tức
- Nghe nhạc
- Xem video
- Diễn đàn
- Chơi game
- Hình ảnh
- Down phim
- Đọc truyện
- Tìm kiếm
- Trang khác
Video ›
Loi xay ra
Menu chức năng
Thể loại Video
Game hay
Có lỗi xảy ra
Album hot nhất
© 2013 VGT Media Co, Ltd - All rights reserved Đăng quảng cáo | Điều khoản Liên hệ: Webmaster@VietGiaiTri.Com.Vn

markdown:
Menu chức năng
Game hay
![](http://img.vietgiaitri.com/style_images/blank.gif)
Có lỗi xảy ra
|Video nay khong tim thay hoac da bi xoa khoi he thong roi ban nhe!|
Album hot nhất
|
|Siêu Mua [-](http://www.vietgiaitri.com/sitemap/) **Sitemap** [-](http://diendan.vietgiaitri.com/lofiversion/index.php) **Bản rút gọn** [-](http://game.vietgiaitri.com/kho-game.vgt) **Kho Game** [-](http://www.vietgiaitri.com/show-hot-tags/) **Hot tags** [-](http://tofaco.com) **Tofaco** **Ongame mobi**
Menu chức năng
Game hay
|Video nay khong tim thay hoac da bi xoa khoi he thong roi ban nhe!|
Album hot nhất
|
|Siêu Mua

Pragma: public


text:
Tìm kiếm
- Chủ nhật, 26/06/2016 | 06:24 GMT +7
-
Hà Nội oCHôm nayoC
Nhiệt độ từ 26 oC đến 34 oC
Bình minh:
Hoàng hôn:
Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:Hôm nayoC
Nhiệt độ từ 25 oC đến 31 oC
Bình minh:
Hoàng hôn:
Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
- Đặt làm trang chủ
- Quảng cáo
- Liên hệ
- Rss

markdown:
Tìm kiếm
*Chủ nhật, 26/06/2016 | 06:24 GMT +7*
-
[Hà Nội](http://vietbao.vn/vn/thoitiet/Ha-Noi/) oC **Hôm nay** oC
Nhiệt độ từ 26
oC đến 34 oC
Bình minh:
Hoàng hôn:
##### Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
**Hôm nay** oC
Nhiệt độ từ 25
oC đến 31 oC
Bình minh:
Hoàng hôn:
##### Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
[Đặt làm trang chủ](#) [Quảng cáo](http://vietbao.vn/vn/quang-cao/) [Liên hệ](http://vietbao.vn/vn/contact/) [Rss](http://vietbao.vn/vn/rss/)
| |22/05 (âm lịch)
Ngày: kỷ mão, Hoàng Đạo
Tốt cho các việc khai trương, lập kho vựa, giao dịch, may mặc.
Tuổi xung: Tân Dậu, Ất Dậu

Cache-Control: max-age=280, public


text:
Tìm kiếm
- Chủ nhật, 26/06/2016 | 06:23 GMT +7
-
Hà Nội oCHôm nayoC
Nhiệt độ từ 26 oC đến 34 oC
Bình minh:
Hoàng hôn:
Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:Hôm nayoC
Nhiệt độ từ 25 oC đến 31 oC
Bình minh:
Hoàng hôn:
Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
- Đặt làm trang chủ
- Quảng cáo
- Liên hệ
- Rss

markdown:
Tìm kiếm
*Chủ nhật, 26/06/2016 | 06:23 GMT +7*
-
[Hà Nội](http://vietbao.vn/vn/thoitiet/Ha-Noi/) oC **Hôm nay** oC
Nhiệt độ từ 26
oC đến 34 oC
Bình minh:
Hoàng hôn:
##### Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
**Hôm nay** oC
Nhiệt độ từ 25
oC đến 31 oC
Bình minh:
Hoàng hôn:
##### Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
[Đặt làm trang chủ](#) [Quảng cáo](http://vietbao.vn/vn/quang-cao/) [Liên hệ](http://vietbao.vn/vn/contact/) [Rss](http://vietbao.vn/vn/rss/)
| |22/05 (âm lịch)
Ngày: kỷ mão, Hoàng Đạo
Tốt cho các việc khai trương, lập kho vựa, giao dịch, may mặc.
Tuổi xung: Tân Dậu, Ất Dậu


text:
Tìm kiếm
- Chủ nhật, 26/06/2016 | 06:29 GMT +7
-
Hà Nội oCHôm nayoC
Nhiệt độ từ 26 oC đến 34 oC
Bình minh:
Hoàng hôn:
Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:Hôm nayoC
Nhiệt độ từ 25 oC đến 31 oC
Bình minh:
Hoàng hôn:
Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
- Đặt làm trang chủ
- Quảng cáo
- Liên hệ
- Rss

markdown:
Tìm kiếm
*Chủ nhật, 26/06/2016 | 06:29 GMT +7*
-
[Hà Nội](http://vietbao.vn/vn/thoitiet/Ha-Noi/) oC **Hôm nay** oC
Nhiệt độ từ 26
oC đến 34 oC
Bình minh:
Hoàng hôn:
##### Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
**Hôm nay** oC
Nhiệt độ từ 25
oC đến 31 oC
Bình minh:
Hoàng hôn:
##### Hướng gió:
Tốc độ:
Hướng gió: °Trạm khí tượng:
Kinh độ:
Vĩ độ:
Nhiệt độ hóa sương:
oC
Tầm nhìn:
Độ ẩm:
Áp suất:
[Đặt làm trang chủ](#) [Quảng cáo](http://vietbao.vn/vn/quang-cao/) [Liên hệ](http://vietbao.vn/vn/contact/) [Rss](http://vietbao.vn/vn/rss/)
| |22/05 (âm lịch)
Ngày: kỷ mão, Hoàng Đạo
Tốt cho các việc khai trương, lập kho vựa, giao dịch, may mặc.
Tuổi xung: Tân Dậu, Ất Dậu


text:
Xuan Hinh giay nay voi catse 100 trieu dong hai Tet 2013
Dang o nha xa hoi sau dip chay so bang dia hai Tet, nghe si Xuan Hinh ta hoa khi nghe thong tin minh duoc nhan catse
-----------
>> Lo cat-se dong hai Tet cua cac danh hai
-----------
Xuan Hinh: Thoi thi ai noi gi cung mac!
Nam nao cung vay, cu moi khi den dip cuoi nam, dien vien cheo Xuan Hinh luon la nguoi dat so nhat. Duong nhu cac hang bang dia deu muon co Xuan Hinh gop mat, boi ho hieu ro, su xuat hien cua anh dong nghia voi viec san pham se duoc ban dat nhu tom tuoi.
Nam nay, tuy tinh hinh kinh te suy thoai, nhung dieu nay co ve khong lam Xuan Hinh bot show di. Tinh den thoi diem nay, anh da gop mat vao 3 san pham DVD hai Tet.
Tai buoi ra mat san pham “Con hu tai bo”, dao dien Dong Hong tiet lo suc hut cua Xuan Hinh: “Moi khi di quay, he biet co Xuan Hinh dien la dan lang lai keo den chat kin de… xem mat. Co nhung canh quay doan lam phim muon yen tinh nen da chon boi canh kha heo lanh, cach khu dan lang 20km nhung roi khong hieu bang cach nao ho van biet va tim den. Lam khi phai thue ca cong an de giu trat tu an ninh cho doan dien”.
Tuong ung voi thuong hieu la catse khong he nho, nhung voi thong tin cho rang, Xuan Hinh tung nhan thu lao len den 100 trieu cho mot san pham hai Tet, anh giay nay: “Noi co sach, mach co chung, moi nguoi cu den gap nha san xuat, bao ho chia cai hop dong ra la biet catse cua dien vien. Mieng the gian nhu lan song bien, cu don cho no sang thoi. Co phai cai chum cai vai dau ma bit duoc. Thoi thi ai noi gi cung mac”.
Nghe si Xuan Hinh cho biet, khong biet cac nghe si khac the nao chu anh xua nay lam viec voi cac don vi chu yeu la hop dong mom, tra bao nhieu thi biet bay nhieu. “Lam khi noi mot dang, nhung khi tra thi lai mot neo, vi con phu thuoc vao viec ho co bi dia lau hot tay tren khong… Khi do thi minh phai chia se voi ho, chu lam sao ma duoc huong ca”, Xuan Hinh noi.
Tuy nhien, khi hoi ve viec trong cuoc doi dien xuat, da bao gio anh nhan duoc catse co 100 trieu dong, Xuan Hinh lai tinh queo: “100 trieu bay gio thi lam duoc gi cho doi? Ai cung nghi toi giau lam, nhung dau nhot, dau dai nang mua thi co. Cuoi nam moi lam hai, con lai bu vao nhung ngay nam dai o nha. Cu nhu cai dot ret nay, keo dai nua thang troi, nguoi ta o nha trum chan chu ai dai gi ma ra ngoai. Catse cao thi cung chi du an thoi”.
Trong khi do, nghe si hai Van Dung thi cho rang, chuyen dien vien hai nhan catse vai chuc trieu den ca tram trieu chi la loi don dai. “Dieu toi quan tam duy nhat khi nhan vai la kich ban co tot khong. Catse chi la thu yeu thoi. Vi nhu, neu dien hai tren truyen hinh ma tra ca tram trieu nhu the thi ho lay dau ra. Duoc lam nghe, lam nhung dieu minh thich la thay thoai mai nhat. Neu duoc tra 1 ti ma khong hay thi van xau ho khong dam buoc chan ra duong”, Van Dung noi.
Nha san xuat: Khong phai tram trieu ma vai tram trieu
Du khong nghe si nao thua nhan hoac noi cu the catse cua minh nhan duoc (nhieu khi do con la quy dinh cua dao dien), nhung o khia canh nha san xuat, ong Luong Dinh Dung- Giam doc Cong ty truyen thong Tu Van Media lai cho biet: “100 trieu van con it. Co dien vien chung toi tung tra vai tram trieu dong”.
Duoc biet, tu nhieu nam nay, nghe si ma Tu Van thuong xuyen cong tac la Xuan Hinh, Thanh Thanh Hien trong “Nguoi ngua, ngua nguoi” va nam nay van la voi Xuan Hinh trong “Xuan Hinh hai Tet 2013”. Tuy khong khang dinh dien vien tung nhan muc catse khung la Xuan Hinh, nhung ong Luong Dinh Dung cho biet, tung dau tu tu A-Z voi so tien len den 2 ti dong de san xuat mot DVD he cheo voi su tham gia chinh cua nghe si Xuan Hinh. Do khong phai de lam thuong mai ma con co gia tri luu giu 7 trich doan he cheo, co phu de tieng Anh. “Voi nhung cho than tinh nhu the thi doi khi khong the tinh bang gia tri kinh te”, ong Dung noi.
TIN GIAI TRI NOI BAT:

markdown:
## Xuan Hinh giay nay voi catse 100 trieu dong hai Tet 2013
Dang o nha xa hoi sau dip chay so bang dia
[hai Tet](http://vietbao.vn/The-gioi-giai-tri/Hai-tet-Dai-gia-chan-dat-Choang-ngop-chan-dai-cuoi-nhat-mieng/2131589570/233/), nghe si [Xuan Hinh](http://vietbao.vn/The-gioi-giai-tri/Xuan-Hinh-So-nhat-ga-mai-gay/2131433417/233/) ta hoa khi nghe thong tin minh duoc nhan [catse](http://vietbao.vn/The-gioi-giai-tri/Giat-minh-cat-se-ca-sy-Viet/55501624/50/)
-----------
>>
**Lo cat-se dong hai Tet cua cac danh hai**
-----------
Xuan Hinh: Thoi thi ai noi gi cung mac!
Nam nao cung vay, cu moi khi den dip cuoi nam,
[ cheo Xuan Hinh luon la nguoi dat so nhat. Duong nhu cac hang bang dia deu muon co Xuan Hinh gop mat, boi ho hieu ro, su xuat hien cua anh dong nghia voi viec san pham se duoc ban dat nhu tom tuoi. dien vien](http://vietbao.vn/The-gioi-giai-tri/Dien-vien-tre-Co-ti-ten-tuoi-nghi-minh-la-VIP/2131568057/233/)
Nam nay, tuy tinh hinh
[ suy thoai, nhung dieu nay co ve khong lam Xuan Hinh bot show di. Tinh den thoi diem nay, anh da gop mat vao 3 san pham DVD hai Tet. kinh te](http://vietbao.vn/Kinh-te/)
Tai buoi ra mat san pham “Con hu tai bo”, dao dien Dong Hong tiet lo suc hut cua Xuan Hinh: “Moi khi di quay, he biet co Xuan Hinh dien la dan lang lai keo den chat kin de… xem mat. Co nhung canh quay doan lam phim muon yen tinh nen da chon boi canh kha heo lanh, cach khu dan lang 20km nhung roi khong hieu bang cach nao ho van biet va tim den. Lam khi phai thue ca cong an de giu trat tu an ninh cho doan dien”.
Tuong ung voi thuong hieu la catse khong he nho, nhung voi thong tin cho rang, Xuan Hinh tung nhan thu lao len den 100 trieu cho mot san pham hai Tet, anh giay nay: “Noi co sach, mach co chung, moi nguoi cu den gap nha san xuat, bao ho chia cai hop dong ra la biet catse cua dien vien. Mieng the gian nhu lan song bien, cu don cho no sang thoi. Co phai cai chum cai vai dau ma bit duoc. Thoi thi ai noi gi cung mac”.
Nghe si Xuan Hinh cho biet, khong biet cac nghe si khac the nao chu anh xua nay lam viec voi cac don vi chu yeu la hop dong mom, tra bao nhieu thi biet bay nhieu. “Lam khi noi mot dang, nhung khi tra thi lai mot neo, vi con phu thuoc vao viec ho co bi dia lau hot tay tren khong… Khi do thi minh phai chia se voi ho, chu lam sao ma duoc huong ca”, Xuan Hinh noi.
Tuy nhien, khi hoi ve viec trong cuoc doi dien xuat, da bao gio anh nhan duoc catse co 100 trieu dong, Xuan Hinh lai tinh queo: “100 trieu bay gio thi lam duoc gi cho doi? Ai cung nghi toi giau lam, nhung dau nhot, dau dai nang mua thi co. Cuoi nam moi lam hai, con lai bu vao nhung ngay nam dai o nha. Cu nhu cai dot ret nay, keo dai nua thang troi, nguoi ta o nha trum chan chu ai dai gi ma ra ngoai. Catse cao thi cung chi du an thoi”.
Trong khi do, nghe si hai Van Dung thi cho rang, chuyen dien vien hai nhan catse vai chuc trieu den ca tram trieu chi la loi don dai. “Dieu toi quan tam duy nhat khi nhan vai la kich ban co tot khong. Catse chi la thu yeu thoi. Vi nhu, neu dien hai tren truyen hinh ma tra ca tram trieu nhu the thi ho lay dau ra. Duoc lam nghe, lam nhung dieu minh thich la thay thoai mai nhat. Neu duoc tra 1 ti ma khong hay thi van xau ho khong dam buoc chan ra duong”, Van Dung noi.
Nha san xuat: Khong phai tram trieu ma vai tram trieu
Du khong nghe si nao thua nhan hoac noi cu the catse cua minh nhan duoc (nhieu khi do con la quy dinh cua dao dien), nhung o khia canh nha san xuat, ong Luong Dinh Dung- Giam doc Cong ty truyen thong Tu Van Media lai cho biet: “100 trieu van con it. Co dien vien chung toi tung tra vai tram trieu dong”.
Duoc biet, tu nhieu nam nay, nghe si ma Tu Van thuong xuyen cong tac la Xuan Hinh, Thanh Thanh Hien trong “Nguoi ngua, ngua nguoi” va nam nay van la voi Xuan Hinh trong “Xuan Hinh hai Tet 2013”. Tuy khong khang dinh dien vien tung nhan muc catse khung la Xuan Hinh, nhung ong Luong Dinh Dung cho biet, tung dau tu tu A-Z voi so tien len den 2 ti dong de san xuat mot DVD he cheo voi su tham gia chinh cua nghe si Xuan Hinh. Do khong phai de lam thuong mai ma con co gia tri luu giu 7 trich doan he cheo, co phu de tieng Anh. “Voi nhung cho than tinh nhu the thi doi khi khong the tinh bang gia tri kinh te”, ong Dung noi.
TIN
[GIAI TRI](http://vietbao.vn/The-gioi-giai-tri/) NOI BAT:
| |![]()
| |![]()
![](http://a8.vietbao.vn/images/vn888/hot/v2012/best_20130119-082623-1-a-3.JPG.jpeg)
[Showbiz Viet: Dau roi su “phan bien”?](http://vietbao.vn/The-gioi-giai-tri/Showbiz-Viet-Dau-roi-su-phan-bien/2131592990/235/)
##### Comment :
[Xuan Hinh giay nay voi catse 100 trieu dong hai Tet 2013](The-gioi-giai-tri/Xuan-Hinh-giay-nay-voi-catse-100-trieu-dong-hai-Tet-2013/2131593029/233/) **bằng cách gửi thư điện tử tới** *Xuan Hinh giay nay voi catse 100 trieu dong hai Tet 2013* **. Xin bao gồm tên bài viết** [Lien He Bao Viet Nam](http://vietbao.vn/vn/contact/) *Xuan Hinh giay nay voi catse 100 trieu dong hai Tet 2013*ở dạng tiếng Việt không dấu. Hoặc *Xuan Hinh giay nay voi catse 100 trieu dong hai Tet 2013*ở dạng có dấu. Bài viết trong chuyên đề [của chuyên mục](http://vietbao.vn/The-gioi-giai-tri/Phim-anh/) **Thế Giới Giải Trí** *Xuan Hinh paper with New Year comedy catse 100 million 2013*


text:
CÔNG TY CỔ PHẦN ĐIỆN TỬ BÌNH HOÀ
TRANG CHỦ
GIỚI THIỆU
TIN TỨC
SẢN PHẨM
DỊCH VỤ
THÔNG TIN SẢN XUẤT
THÔNG TIN CỔ ĐÔNG
SƠ ĐỒ WEB
LIÊN HỆ
Hôm nay:
Đường dây nóng
Kỹ Thuật:
+84.8 3843 2472- Ext 105
Kế hoạch:
+84.8 3843 2472- Ext 124
Tìm kiếm
.:: Tin tức
.:: Sản phẩm
.:: Dịch vụ
.:: Năng lực sản xuất
.:: Thông tin cổ đông
Web link
--- Liên kết website ---
Sàn Chứng Khóan Hà Nội
Sàn Chứng Khóan TPHCM
Ngân Hàng Công Thương Việt Nam
Ngân hàng Vietcombank
Giới thiệu đến bạn bè
.:: TIN TỨC
Xem tiếp ++
Danh sách BCH Công Đoàn Công Ty Khoá XIV Nhiệm Kỳ 2012-2015
Danh sách BCH Đảng bộ nhiệm kỳ 2015-2020
Báo cáo thành tích hoạt động của Đảng Bộ 2014
Hình ảnh hoạt động Công Đoàn 2014
Hình ảnh hoạt động Đảng Bộ 2014
Báo cáo thành tích hoạt động Công Đoàn 2014
.:: SẢN PHẨM MỚI
BIẾN THẾ XUNG
Mã số: ALV-60-80-100
BIẾN THẾ XUNG
Mã số: EER - 35425
Mạch điện tử
Mã số: Mạch điện tử
BỘ NGUỒN
Mã số: ALV12-12-1R0
© 2007 Bản quyền Công ty Cổ phần Điện tử Bình Hòa. 204 Nơ Trang Long, F.12, Q. Bình Thạnh, TP.HCM
Tel : (84 8) 3843 2472 - 3843 2458 - 3843 2459 - 3516 1368 - Fax : (84 8) 3843 2460. Email : vbh@viettronics-binhhoa.com
Lượt truy cập:
Phát triển bởi Viettronics Bình Hòa

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Content-Type: text/html

Set-Cookie: sid=m531s5jtlijhbjmbau6forojr7; path=/


text:
Bộ phim nói về những điều bí mật của các phụ nữ với những niềm vui, nỗi đau, tâm tư… trong cuộc sống xã hội hiện nay. Cuộc sống hiện đại cộng với những luồng tư tưởng mới từ nước ngoài du nhập vào nên quý bà có phần rời xa hình ảnh của một người phụ nữ truyền thống.
"Chuyện quý bà" hấp dẫn với đủ tình tiền tù tội
13:20:05 | 08/02/2011 - Afamily.vn
"Chuyện quý bà" sắp lên sóng truyền hình với những câu chuyện bí mật đằng sau tấm màn che về những "quý bà" thành đạt trong cuộc sống hiện đại.
00:31:00 | 08/02/2011 - Thanhnien.com.vn
Đây là bộ phim truyền hình dài 30 tập (đạo diễn: NSƯT Trần Ngọc Giàu, biên kịch: Lê Quang Thanh Tâm, hãng phim Phước Sang sản xuất) được phát sóng trong chương trình Phim Việt của mọi nhà lúc 19 giờ 45 từ thứ hai đến thứ năm hằng tuần trên Đài truyền hình Đồng Nai 1 (ĐN1) kể từ ngày 8.2.
09:42:18 | 05/02/2011 - Thegioidienanh.vn
(TGĐA Online) - Phim có sự tham gia của các diễn viên như: Anh Tài, Ngọc Lan, Hoa Di Linh, danh hài Chí Tài, Ca sĩ Trung Hậu, Trịnh Kim Chi, Ngọc Trinh, Ngân Quỳnh, Mạnh Hùng, Lam Tuyền, Tấn Hoàng, Bảo Sơn, Triều An…

markdown:
Bộ phim nói về những điều bí mật của các phụ nữ với những niềm vui, nỗi đau, tâm tư… trong cuộc sống xã hội hiện nay. Cuộc sống hiện đại cộng với những luồng tư tưởng mới từ nước ngoài du nhập vào nên quý bà có phần rời xa hình ảnh của một người phụ nữ truyền thống.
["Chuyện quý bà" hấp dẫn với đủ tình tiền tù tội](http://www.enghenhac.com/dienanh/news/chuyen-quy-ba-hap-dan-voi-du-tinh-tien-tu-toi.html)
13:20:05 | 08/02/2011 -
[Afamily.vn](http://www.enghenhac.com/dienanh/info/afamily.vn)
"Chuyện quý bà" sắp lên sóng truyền hình với những câu chuyện bí mật đằng sau tấm màn che về những "quý bà" thành đạt trong cuộc sống hiện đại.
00:31:00 | 08/02/2011 -
[Thanhnien.com.vn](http://www.enghenhac.com/dienanh/info/thanhnien.com.vn)
Đây là bộ phim truyền hình dài 30 tập (đạo diễn: NSƯT Trần Ngọc Giàu, biên kịch: Lê Quang Thanh Tâm, hãng phim Phước Sang sản xuất) được phát sóng trong chương trình Phim Việt của mọi nhà lúc 19 giờ 45 từ thứ hai đến thứ năm hằng tuần trên Đài truyền hình Đồng Nai 1 (ĐN1) kể từ ngày 8.2.
09:42:18 | 05/02/2011 -
[Thegioidienanh.vn](http://www.enghenhac.com/dienanh/info/thegioidienanh.vn)
(TGĐA Online) - Phim có sự tham gia của các diễn viên như: Anh Tài, Ngọc Lan, Hoa Di Linh, danh hài Chí Tài, Ca sĩ Trung Hậu, Trịnh Kim Chi, Ngọc Trinh, Ngân Quỳnh, Mạnh Hùng, Lam Tuyền, Tấn Hoàng, Bảo Sơn, Triều An…

Server: Apache


text:
Nếu chỉ có một cách để sử dụng cơ sở dữ liệu chính xác ...
Bạn có thể tạo thiết kế cơ sở dữ liệu, truy cập cơ sở dữ liệu và mã logic nghiệp vụ PHP đặt trên đầu trang của nó theo một số cách nào đó và bạn thường kết thúc khi nhận thấy nó sai. Bài viết này minh họa năm vấn đề thường gặp trong việc thiết kế cơ sở dữ liệu, trong mã PHP truy cập các cơ sở dữ liệu và cách sửa chữa những vấn đề này khi bạn bắt gặp chúng.
Vấn đề 1: Sử dụng MySQL trực tiếp
Khi sử dùng các hàm
mysql_ để truy cập trực tiếp
vào cơ sở dữ liệu có một vấn đề phổ biến là mã PHP đã cũ. Liệt kê 1 chỉ ra
cách truy cập trực tiếp vào cơ sở dữ liệu.
Liệt kê 1. Access/get.php
<?php function get_user_id( $name ) { $db = mysql_connect( 'localhost', 'root', 'password' ); mysql_select_db( 'users' ); $res = mysql_query( "SELECT id FROM users WHERE login='".$name."'" ); while( $row = mysql_fetch_array( $res ) ) { $id = $row[0]; } return $id; } var_dump( get_user_id( 'jack' ) ); ?>
Hãy lưu ý việc sử dụng hàm
mysql_connect để truy
cập vào cơ sở dữ liệu. Cũng chú ý truy vấn trong đó có dùng sự liên kết
chuỗi để bổ sung tham số
$name vào truy vấn
đó.
Kỹ thuật này có hai sự lựa chọn tốt: mô đun PEAR DB và các lớp PHP Data Objects (PDO-Các đối tượng dữ liệu PHP). Cả hai đều cung cấp sự trừu tượng từ việc lựa chọn của một cơ sở dữ liệu cụ thể. Do đó, mã của bạn có thể chạy mà không cần điều chỉnh quá nhiều trên IBM® DB2®, MySQL, PostgreSQL, hoặc cơ sở dữ liệu khác bất kỳ mà bạn muốn kết nối đến.
Các giá trị khác trong việc sử dụng các tầng trừu tượng của mô đun PEAR DB
và PDO là bạn có thể sử dụng toán tử
? trong
các câu lệnh SQL của bạn. Việc này làm cho SQL dễ dàng bảo trì hơn và bảo
vệ ứng dụng của bạn khỏi các cuộc tấn công nội xạ SQL.
Mã thay thế khi sử dụng PEAR DB được hiển thị dưới đây.
Liệt kê 2. Access/get_good.php
<?php require_once("DB.php"); function get_user_id( $name ) { $dsn = 'mysql://root:password@localhost/users'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( 'SELECT id FROM users WHERE login=?', array( $name ) ); $id = null; while( $res->fetchInto( $row ) ) { $id = $row[0]; } return $id; } var_dump( get_user_id( 'jack' ) ); ?>
Chú ý rằng tất cả các đề cập trực tiếp của MySQL đã diễn ra, trừ chuỗi kết
nối cơ sở dữ liệu trong
$dsn. Ngoài ra, chúng
ta sử dụng biến
$name trong SQL thông qua toán
tử
?. Sau đó, dữ liệu với truy vấn này được gửi
đi thông qua
array ở cuối phương thức
query().
Vấn đề 2: Không sử dụng chức năng tăng tự động
Giống như hầu hết các cơ sở dữ liệu hiện đại, MySQL có khả năng tạo các
trình nhận dạng (identifier) duy nhất tăng tự động trên một cơ sở cho mỗi
bản ghi. Mặc dù vậy, chúng ta vẫn thấy mã lần đầu tiên chạy một lệnh
SELECT để tìm mã nhận dạng (
id) tối đa, sau đó bổ sung thêm một vào
id đó, cũng như một bản ghi mới. Liệt kê 3 cho thấy một lược
đồ mẫu bad (xấu).
Liệt kê 3. Badid.sql
DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT, login TEXT, password TEXT ); INSERT INTO users VALUES ( 1, 'jack', 'pass' ); INSERT INTO users VALUES ( 2, 'joan', 'pass' ); INSERT INTO users VALUES ( 1, 'jane', 'pass' );
Trường
id ở đây được quy định đơn giản là một số
nguyên. Vì vậy, mặc dù nó sẽ là duy nhất, chúng ta có thể thêm vào bất kỳ
giá trị nào mà chúng ta muốn, như đã chỉ ra trong câu lệnh
INSERT tiếp theo câu lệnh
CREATE. Liệt kê 4 chỉ ra mã PHP bổ sung thêm users (những
người sử dụng) vào kiểu lược đồ này.
Liệt kê 4. Add_user.php
<?php require_once("DB.php"); function add_user( $name, $pass ) { $rows = array(); $dsn = 'mysql://root:password@localhost/bad_badid'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT max(id) FROM users" ); $id = null; while( $res->fetchInto( $row ) ) { $id = $row[0]; } $id += 1; $sth = $db->prepare( "INSERT INTO users VALUES(?,?,?)" ); $db->execute( $sth, array( $id, $name, $pass ) ); return $id; } $id = add_user( 'jerry', 'pass' ); var_dump( $id ); ?>
Mã trong
add_user.php đầu tiên thực hiện một
truy vấn để tìm ra giá trị tối đa của
id. Sau
đó tệp này chạy một câu lệnh
INSERT với giá trị
id cộng thêm một. Mã này có thể không chạy
thành công trong các điều kiện ganh đua (race) trên các máy chủ có một tải
nặng. Hơn nữa, nó không hiệu quả.
Vì vậy, sự thay thế là gì? Sử dụng tính năng tăng tự động trong MySQL để tạo các ID duy nhất cho mỗi lần chèn tự động. Lược đồ cập nhật được hiển thị bên dưới.
Liệt kê 5. Goodid.php
DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT NOT NULL AUTO_INCREMENT, login TEXT NOT NULL, password TEXT NOT NULL, PRIMARY KEY( id ) ); INSERT INTO users VALUES ( null, 'jack', 'pass' ); INSERT INTO users VALUES ( null, 'joan', 'pass' ); INSERT INTO users VALUES ( null, 'jane', 'pass' );
Chúng ta thêm cờ
NOT NULL để chỉ ra rằng các
trường này không rỗng (null). Chúng ta cũng đã bổ sung cờ
AUTO_INCREMENT để chỉ thị rằng trường này tăng tự
động, cũng như cờ
PRIMARY KEY để chỉ thị trường
nào là
id. Những thay đổi này cho phép tăng một
chút tốc độ. Liệt kê 6 cho thấy mã PHP đã cập nhật, mã này chèn users
(những người dùng) vào bảng.
Liệt kê 6. Add_user_good.php
<?php require_once("DB.php"); function add_user( $name, $pass ) { $dsn = 'mysql://root:password@localhost/good_genid'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $sth = $db->prepare( "INSERT INTO users VALUES(null,?,?)" ); $db->execute( $sth, array( $name, $pass ) ); $res = $db->query( "SELECT last_insert_id()" ); $id = null; while( $res->fetchInto( $row ) ) { $id = $row[0]; } return $id; } $id = add_user( 'jerry', 'pass' ); var_dump( $id ); ?>
Thay vì nhận được giá trị
id tối đa, tôi bây giờ
chỉ cần sử dụng câu lệnh
INSERT để chèn dữ
liệu, sau đó sử dụng một câu lệnh
SELECT để lấy
id của bản ghi vừa mới được chèn vào. Mã
này đơn giản hơn nhiều và hiệu quả hơn so với phiên bản gốc và lược đồ
liên quan của nó.
Một lựa chọn khác đối với chức năng tăng tự động của MySQL là sử dụng
phương thức
nextId() trong hệ thống PEAR DB.
Trong trường hợp của MySQL, điều này tạo ra một bảng tuần tự mới và quản
lý việc sử dụng một cơ chế khóa phức tạp. Lợi thế của việc sử dụng phương
thức này là nó sẽ hoạt động trên các hệ thống cơ sở dữ liệu khác.
Dù bằng cách nào, bạn nên sử dụng một hệ thống quản lý sự tăng các ID duy nhất cho bạn và không dựa vào hệ thống mà bạn truy vấn đầu tiên, sau đó tăng giá trị của chính bạn và thêm bản ghi. Cách tiếp cận thứ hai dễ bị ảnh hưởng theo các điều kiện ganh đua trên các trang có khối lượng cao.
Vấn đề 3: Sử dụng nhiều cơ sở dữ liệu
Một khi chúng ta thấy ứng dụng mà mỗi bảng ở trong một cơ sở dữ liệu riêng biệt. Có nhiều lý do để thực hiện điều đó trong các cơ sở dữ liệu rất lớn, nhưng đối với ứng dụng trung bình, bạn không cần mức phân đoạn này. Ngoài ra, mặc dù có thể thực hiện các truy vấn liên quan trên nhiều cơ sở dữ liệu, tôi rất khuyên bạn chống lại nó. Cú pháp phức tạp hơn. Quản lý sao lưu và khôi phục lại không dễ dàng. Cú pháp có thể hoặc không thể làm việc giữa các máy cơ sở dữ liệu khác nhau. Và thật khó khăn để tiếp tục theo cấu trúc quan hệ khi các bảng được chia trên nhiều cơ sở dữ liệu.
Vì vậy, nhiều cơ sở dữ liệu sẽ giống thế nào? Để bắt đầu, bạn cần một số dữ liệu. Liệt kê 7 cho thấy dữ liệu này được chia thành bốn tệp.
Liệt kê 7. Các tệp cơ sở dữ liệu
Files.sql: CREATE TABLE files ( id MEDIUMINT, user_id MEDIUMINT, name TEXT, path TEXT ); Load_files.sql: INSERT INTO files VALUES ( 1, 1, 'test1.jpg', 'files/test1.jpg' ); INSERT INTO files VALUES ( 2, 1, 'test2.jpg', 'files/test2.jpg' ); Users.sql: DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT, login TEXT, password TEXT ); Load_users.sql: INSERT INTO users VALUES ( 1, 'jack', 'pass' ); INSERT INTO users VALUES ( 2, 'jon', 'pass' );
Trong phiên bản nhiều cơ sở dữ liệu của các tệp này, bạn sẽ nạp câu lệnh
SQL vào trong một cơ sở dữ liệu, sau đó nạp các câu lệnh SQL
users (những người sử dụng) vào cơ sở dữ liệu
khác. Mã PHP để truy vấn cơ sở dữ liệu cho các tệp này liên kết với người
dùng cụ thể được hiển thị dưới đây.
Liệt kê 8. Getfiles.php
<?php require_once("DB.php"); function get_user( $name ) { $dsn = 'mysql://root:password@localhost/bad_multi1'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT id FROM users WHERE login=?", array( $name ) ); $uid = null; while( $res->fetchInto( $row ) ) { $uid = $row[0]; } return $uid; } function get_files( $name ) { $uid = get_user( $name ); $rows = array(); $dsn = 'mysql://root:password@localhost/bad_multi2'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT * FROM files WHERE user_id=?", array( $uid ) ); while( $res->fetchInto( $row ) ) { $rows[] = $row; } return $rows; } $files = get_files( 'jack' ); var_dump( $files ); ?>
Hàm
get_user kết nối tới cơ sở dữ liệu chứa bảng
của những người sử dụng và lấy ra ID cho một người dùng đã biết. Hàm
get_files kết nối đến bảng các tệp và lấy ra các
hàng có kết hợp với người dùng đã biết.
Cách tốt hơn để làm tất cả những điều này là nạp dữ liệu vào một cơ sở dữ liệu, sau đó thực hiện một truy vấn, như được hiển thị bên dưới.
Liệt kê 9. Getfiles_good.php
<?php require_once("DB.php"); function get_files( $name ) { $rows = array(); $dsn = 'mysql://root:password@localhost/good_multi'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT files.* FROM users, files WHERE users.login=? AND users.id=files.user_id", array( $name ) ); while( $res->fetchInto( $row ) ) { $rows[] = $row; } return $rows; } $files = get_files( 'jack' ); var_dump( $files ); ?>
Mã này không chỉ ngắn hơn mà nó cũng dễ hiểu hơn và hiệu quả hơn. Thay vì thực hiện hai truy vấn, chúng ta đang thực hiện một.
Trong khi vấn đề này lạc điệu, chúng ta đã thấy nó trong thực tế có đủ thời gian để biết rằng tất cả các bảng phải ở trong cùng một cơ sở dữ liệu, trừ khi có một lý do cấp thiết khác.
Vấn đề 4: Không sử dụng các mối quan hệ
Các cơ sở dữ liệu quan hệ không giống như các ngôn ngữ lập trình. Chúng không có kiểu mảng. Thay vào đó, chúng sử dụng các mối quan hệ giữa các bảng để tạo ra cấu trúc một-tới-nhiều giữa các đối tượng, chúng có cùng tác dụng như một mảng. Một vấn đề mà tôi đã thấy với các ứng dụng là khi các kỹ sư cố gắng sử dụng một cơ sở dữ liệu như thể nó đã là một ngôn ngữ lập trình, tạo arrays (các mảng) bằng cách sử dụng chuỗi văn bản với các trình nhận dạng tách nhau bằng dấu phẩy. Hãy xem lược đồ dưới đây.
Liệt kê 10. Bad.sql
DROP TABLE IF EXISTS files; CREATE TABLE files ( id MEDIUMINT, name TEXT, path TEXT ); DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT, login TEXT, password TEXT, files TEXT ); INSERT INTO files VALUES ( 1, 'test1.jpg', 'media/test1.jpg' ); INSERT INTO files VALUES ( 2, 'test1.jpg', 'media/test1.jpg' ); INSERT INTO users VALUES ( 1, 'jack', 'pass', '1,2' );
Một người dùng trong hệ thống có thể có nhiều tệp. Trong một ngôn ngữ lập
trình, bạn sẽ sử dụng một mảng để biểu diễn các tệp liên kết với người
dùng. Trong ví dụ này, lập trình viên đã chọn để tạo ra một trường
files (các tệp) chứa danh sách các
id tệp được phân cách bằng dấu phẩy. Để có được một danh sách
tất cả các tệp cho người dùng cụ thể, lập trình viên trước tiên phải đọc
hàng từ bảng những người dùng, sau đó phân tích cú pháp văn bản của tệp và
chạy một câu lệnh
SELECT riêng lẻ cho mỗi tệp.
Mã này được hiển thị bên dưới..
Liệt kê 11. Get.php
<?php require_once("DB.php"); function get_files( $name ) { $dsn = 'mysql://root:password@localhost/bad_norel'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT files FROM users WHERE login=?", array( $name ) ); $files = null; while( $res->fetchInto( $row ) ) { $files = $row[0]; } $rows = array(); foreach( split( ',',$files ) as $file ) { $res = $db->query( "SELECT * FROM files WHERE id=?", array( $file ) ); while( $res->fetchInto( $row ) ) { $rows[] = $row; } } return $rows; } $files = get_files( 'jack' ); var_dump( $files ); ?>
Kỹ thuật này chậm, khó bảo trì và không tận dụng tốt cơ sở dữ liệu. Giải pháp duy nhất là tái kiến trúc lược đồ này để đưa nó trở lại thành một dạng quan hệ truyền thống, như được hiển thị dưới đây.
Liệt kê 12. Good.sql
DROP TABLE IF EXISTS files; CREATE TABLE files ( id MEDIUMINT, user_id MEDIUMINT, name TEXT, path TEXT ); DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT, login TEXT, password TEXT ); INSERT INTO users VALUES ( 1, 'jack', 'pass' ); INSERT INTO files VALUES ( 1, 1, 'test1.jpg', 'media/test1.jpg' ); INSERT INTO files VALUES ( 2, 1, 'test1.jpg', 'media/test1.jpg' );
Ở đây, mỗi tệp có liên quan đến người dùng thông qua hàm
user_id trong bảng tệp. Điều này hầu như có vẻ
lạc hậu với bất kỳ ai nhìn thấy điều này như là một mảng. Chắc chắn, các
mảng không tham chiếu đến đối tượng trong mảng -- thực tế, ngược lại hoàn
toàn. Nhưng trong một cơ sở dữ liệu quan hệ, đây là cách những thứ này làm
và lí do các truy vấn là nhanh hơn và dễ dàng hơn nhiều. Liệt kê 13 cho
thấy mã PHP tương ứng.
Liệt kê 13. Get_good.php
<?php require_once("DB.php"); function get_files( $name ) { $dsn = 'mysql://root:password@localhost/good_rel'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $rows = array(); $res = $db->query( "SELECT files.* FROM users,files WHERE users.login=? AND users.id=files.user_id", array( $name ) ); while( $res->fetchInto( $row ) ) { $rows[] = $row; } return $rows; } $files = get_files( 'jack' ); var_dump( $files ); ?>
Ở đây, chúng ta thực hiện một truy vấn đến cơ sở dữ liệu để nhận được tất cả các hàng. Mã này không phức tạp và nó sử dụng cơ sở dữ liệu như nó đã được dự định.
Vấn đề 5: Mẫu n+1
Tôi không thể nói cho bạn biết bao nhiêu lần chúng ta đã nhìn thấy các ứng dụng lớn trong đó mã này đầu tiên lấy ra một danh sách các thực thể -- gọi là các khách hàng -- sau đó quay trở lại và lấy ra chúng từng người một để có được những chi tiết cho từng thực thể. Chúng ta gọi nó là mẫu n+1 vì đó là có bao nhiêu truy vấn sẽ được thực hiện -- một truy vấn để lấy ra danh sách tất cả các thực thể, rồi một truy vấn cho mỗi một trong n thực thể. Đây không phải là một vấn đề khi n = 10, nhưng sẽ là gì khi n = 100 hoặc n = 1000? Rồi, sự thiếu khả năng thực sự đóng góp vào. Liệt kê 14 cho thấy một ví dụ về một lược đồ như vậy.
Liệt kê 14. Schema.sql
DROP TABLE IF EXISTS authors; CREATE TABLE authors ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name TEXT NOT NULL, PRIMARY KEY ( id ) ); DROP TABLE IF EXISTS books; CREATE TABLE books ( id MEDIUMINT NOT NULL AUTO_INCREMENT, author_id MEDIUMINT NOT NULL, name TEXT NOT NULL, PRIMARY KEY ( id ) ); INSERT INTO authors VALUES ( null, 'Jack Herrington' ); INSERT INTO authors VALUES ( null, 'Dave Thomas' ); INSERT INTO books VALUES ( null, 1, 'Code Generation in Action' ); INSERT INTO books VALUES ( null, 1, 'Podcasting Hacks' ); INSERT INTO books VALUES ( null, 1, 'PHP Hacks' ); INSERT INTO books VALUES ( null, 2, 'Pragmatic Programmer' ); INSERT INTO books VALUES ( null, 2, 'Ruby on Rails' ); INSERT INTO books VALUES ( null, 2, 'Programming Ruby' );
Đây là lược đồ đáng tin cậy. Không có gì sai ở đây. Vấn đề là ở trong mã truy cập vào cơ sở dữ liệu để tìm tất cả các sách cho một tác giả cụ thể, như được hiển thị dưới đây.
Liệt kê 15. Get.php
<?php require_once('DB.php'); $dsn = 'mysql://root:password@localhost/good_books'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } function get_author_id( $name ) { global $db; $res = $db->query( "SELECT id FROM authors WHERE name=?", array( $name ) ); $id = null; while( $res->fetchInto( $row ) ) { $id = $row[0]; } return $id; } function get_books( $id ) { global $db; $res = $db->query( "SELECT id FROM books WHERE author_id=?", array( $id ) ); $ids = array(); while( $res->fetchInto( $row ) ) { $ids []= $row[0]; } return $ids; } function get_book( $id ) { global $db; $res = $db->query( "SELECT * FROM books WHERE id=?", array( $id ) ); while( $res->fetchInto( $row ) ) { return $row; } return null; } $author_id = get_author_id( 'Jack Herrington' ); $books = get_books( $author_id ); foreach( $books as $book_id ) { $book = get_book( $book_id ); var_dump( $book ); } ?>
Nếu bạn nhìn vào mã ở dưới cùng, bạn có khả năng suy nghĩ đến chính mình,
"Ôi, điều này thực sự sạch sẽ." Trước tiên, nhận được
id, tác giả, rồi nhận được một danh sách các cuốn sách, sau đó
nhận được thông tin về mỗi cuốn sách. Chắc chắn, nó sạch sẽ -- nhưng nó có
hiệu quả không? Không. Hãy nhìn xem chúng ta phải thực hiện bao nhiêu các
truy vấn để lấy ra chỉ các sách của Jack Herrington. Một truy vấn để nhận
được một
id, một truy vấn khác để nhận được một
danh sách các cuốn sách, sau đó một truy vấn cho mỗi cuốn sách. Năm truy
vấn cho ba cuốn sách!
Giải pháp này là có một hàm thực hiện một số lượng lớn truy vấn, như liệt kê dưới đây.
Liệt kê 16. Get_good.php
<?php require_once('DB.php'); $dsn = 'mysql://root:password@localhost/good_books'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } function get_books( $name ) { global $db; $res = $db->query( "SELECT books.* FROM authors,books WHERE books.author_id=authors.id AND authors.name=?", array( $name ) ); $rows = array(); while( $res->fetchInto( $row ) ) { $rows []= $row; } return $rows; } $books = get_books( 'Jack Herrington' ); var_dump( $books ); ?>
Bây giờ lấy ra danh sách yêu cầu chỉ một truy vấn, nhanh. Nó có nghĩa là tôi có khả năng sẽ phải có một số các kiểu các phương thức này với các tham số khác nhau, nhưng thực sự không có sự lựa chọn nào. Nếu bạn muốn có một ứng dụng PHP có thể so sánh được với nhau, bạn phải sử dụng hiệu quả cơ sở dữ liệu và điều đó có nghĩa là các truy vấn thông minh hơn.
Vấn đề với ví dụ này là nó quá rõ ràng. Thông thường, các kiểu của vấn đề n+1 hay n*n nhạy cảm hơn nhiều. Và chúng chỉ xuất hiện khi người quản trị cơ sở dữ liệu chạy một trình định hình truy vấn trên hệ thống của bạn khi nó có vấn đề về hiệu năng.
Kết luận
Các cơ sở dữ liệu là các công cụ mạnh và -- như tất cả các công cụ mạnh mẽ -- chúng có thể bị lạm dụng nếu bạn không biết cách sử dụng chúng cho đúng. Thủ thuật phía sau việc xác định và giải quyết các vấn đề này là hiểu rõ hơn về công nghệ bên dưới. Quá lâu, tôi đã nghe các nhà mã hóa logic nghiệp vụ than thở rằng họ không muốn phải hiểu cơ sở dữ liệu hoặc mã SQL. Họ bao bọc cơ sở dữ liệu trong các đối tượng và tự hỏi tại sao hiệu năng lại kém đến như vậy.
Họ không nhận ra rằng sự hiểu biết SQL là nguyên tắc cơ bản để chuyển cơ sở dữ liệu từ một hoàn cảnh khó khăn thành một đồng minh mạnh. Nếu bạn sử dụng cơ sở dữ liệu hàng ngày, nhưng SQL không phù hợp với bạn, hãy đọc The Art of SQL (Nghệ thuật SQL). Đây là hướng dẫn thiết thực, được viết rõ ràng để nhận được nhiều nhất bên ngoài một cơ sở dữ liệu.
Tài nguyên
Học tập
- The Art of SQL (Nghệ thuật SQL), của Stephane Faroult và Peter Robson, là một cuốn sách phải đọc đối với các lập trình viên, những người sử dụng cơ sở dữ liệu trong các ứng dụng của họ.
- PHP.net là điểm khởi đầu cho tất cả mọi thứ PHP.
- Tài liệu PEAR DB là một tài nguyên xuất sắc.
- Tài liệu các chức năng PDO có thể đưa bạn lên đến tốc độ trên PHP Data Objects (PDO- Các đối tượng dữ liệu PHP).
- MySQL.org có tài liệu hướng dẫn xuất sắc với các ví dụ hiển thị cách sử dụng một cơ sở dữ liệu tốt hơn.
- Truy cập tài nguyên dự án PHP của developerWorks IBM để tìm hiểu thêm về PHP.
- Theo sát với các sự kiện kỹ thuật và webcast của developerWorks.
- Hãy xem các hội nghị, các cuộc triển lãm thương mại, webcast sắp tới và các sự kiện trên thế giới mà các nhà phát triển mã nguồn mở của IBM đang quan tâm.
- Truy cập vào lĩnh vực mã nguồn mở của developerWorks với các thông tin hướng dẫn rộng lớn, các công cụ và dự án để giúp bạn phát triển với các công nghệ mã nguồn mở và sử dụng chúng với các sản phẩm của IBM.
- Để nghe các cuộc phỏng vấn và thảo luận thú vị với các nhà phát triển phần mềm, hãy xem developerWorks podcasts.
Lấy sản phẩm và công nghệ
- Đổi mới dự án phát triển nguồn mở tiếp theo của của bạn với phần mềm dùng thử IBM, có sẵn để tải xuống hoặc trên đĩa DVD.
Thảo luận
- Dành tâm trí cho cộng đồng developerWorks bằng cách tham gia vào các blog của developerWorks.
Bình luận
-
Vùng dữ liệu trên developerWorks
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
-
Vùng mã nguồn mở trên developerWorks
Xem các bài viết về HTML, CSS, JavaScript,...
-
Điện toán đám mây
Tìm hiểu về điện toán đám mây

markdown:
Nếu chỉ có
*một* cách để sử dụng cơ sở dữ liệu chính xác ...
Bạn có thể tạo thiết kế cơ sở dữ liệu, truy cập cơ sở dữ liệu và mã logic nghiệp vụ PHP đặt trên đầu trang của nó theo một số cách nào đó và bạn thường kết thúc khi nhận thấy nó sai. Bài viết này minh họa năm vấn đề thường gặp trong việc thiết kế cơ sở dữ liệu, trong mã PHP truy cập các cơ sở dữ liệu và cách sửa chữa những vấn đề này khi bạn bắt gặp chúng.
## Vấn đề 1: Sử dụng MySQL trực tiếp
Khi sử dùng các hàm
mysql_ để truy cập trực tiếp
vào cơ sở dữ liệu có một vấn đề phổ biến là mã PHP đã cũ. Liệt kê 1 chỉ ra
cách truy cập trực tiếp vào cơ sở dữ liệu.
##### Liệt kê 1. Access/get.php
<?php function get_user_id( $name ) { $db = mysql_connect( 'localhost', 'root', 'password' ); mysql_select_db( 'users' ); $res = mysql_query( "SELECT id FROM users WHERE login='".$name."'" ); while( $row = mysql_fetch_array( $res ) ) { $id = $row[0]; } return $id; } var_dump( get_user_id( 'jack' ) ); ?>
Hãy lưu ý việc sử dụng hàm
mysql_connect để truy
cập vào cơ sở dữ liệu. Cũng chú ý truy vấn trong đó có dùng sự liên kết
chuỗi để bổ sung tham số
$name vào truy vấn
đó.
Kỹ thuật này có hai sự lựa chọn tốt: mô đun PEAR DB và các lớp PHP Data Objects (PDO-Các đối tượng dữ liệu PHP). Cả hai đều cung cấp sự trừu tượng từ việc lựa chọn của một cơ sở dữ liệu cụ thể. Do đó, mã của bạn có thể chạy mà không cần điều chỉnh quá nhiều trên IBM® DB2®, MySQL, PostgreSQL, hoặc cơ sở dữ liệu khác bất kỳ mà bạn muốn kết nối đến.
Các giá trị khác trong việc sử dụng các tầng trừu tượng của mô đun PEAR DB
và PDO là bạn có thể sử dụng toán tử
? trong
các câu lệnh SQL của bạn. Việc này làm cho SQL dễ dàng bảo trì hơn và bảo
vệ ứng dụng của bạn khỏi các cuộc tấn công nội xạ SQL.
Mã thay thế khi sử dụng PEAR DB được hiển thị dưới đây.
##### Liệt kê 2. Access/get_good.php
<?php require_once("DB.php"); function get_user_id( $name ) { $dsn = 'mysql://root:password@localhost/users'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( 'SELECT id FROM users WHERE login=?', array( $name ) ); $id = null; while( $res->fetchInto( $row ) ) { $id = $row[0]; } return $id; } var_dump( get_user_id( 'jack' ) ); ?>
Chú ý rằng tất cả các đề cập trực tiếp của MySQL đã diễn ra, trừ chuỗi kết
nối cơ sở dữ liệu trong
$dsn. Ngoài ra, chúng
ta sử dụng biến
$name trong SQL thông qua toán
tử
?. Sau đó, dữ liệu với truy vấn này được gửi
đi thông qua
array ở cuối phương thức
query().
## Vấn đề 2: Không sử dụng chức năng tăng tự động
Giống như hầu hết các cơ sở dữ liệu hiện đại, MySQL có khả năng tạo các
trình nhận dạng (identifier) duy nhất tăng tự động trên một cơ sở cho mỗi
bản ghi. Mặc dù vậy, chúng ta vẫn thấy mã lần đầu tiên chạy một lệnh
SELECT để tìm mã nhận dạng (
id) tối đa, sau đó bổ sung thêm một vào
id đó, cũng như một bản ghi mới. Liệt kê 3 cho thấy một lược
đồ mẫu bad (xấu).
##### Liệt kê 3. Badid.sql
DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT, login TEXT, password TEXT ); INSERT INTO users VALUES ( 1, 'jack', 'pass' ); INSERT INTO users VALUES ( 2, 'joan', 'pass' ); INSERT INTO users VALUES ( 1, 'jane', 'pass' );
Trường
id ở đây được quy định đơn giản là một số
nguyên. Vì vậy, mặc dù nó sẽ là duy nhất, chúng ta có thể thêm vào bất kỳ
giá trị nào mà chúng ta muốn, như đã chỉ ra trong câu lệnh
INSERT tiếp theo câu lệnh
CREATE. Liệt kê 4 chỉ ra mã PHP bổ sung thêm users (những
người sử dụng) vào kiểu lược đồ này.
##### Liệt kê 4. Add_user.php
<?php require_once("DB.php"); function add_user( $name, $pass ) { $rows = array(); $dsn = 'mysql://root:password@localhost/bad_badid'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT max(id) FROM users" ); $id = null; while( $res->fetchInto( $row ) ) { $id = $row[0]; } $id += 1; $sth = $db->prepare( "INSERT INTO users VALUES(?,?,?)" ); $db->execute( $sth, array( $id, $name, $pass ) ); return $id; } $id = add_user( 'jerry', 'pass' ); var_dump( $id ); ?>
Mã trong
add_user.php đầu tiên thực hiện một
truy vấn để tìm ra giá trị tối đa của
id. Sau
đó tệp này chạy một câu lệnh
INSERT với giá trị
id cộng thêm một. Mã này có thể không chạy
thành công trong các điều kiện ganh đua (race) trên các máy chủ có một tải
nặng. Hơn nữa, nó không hiệu quả.
Vì vậy, sự thay thế là gì? Sử dụng tính năng tăng tự động trong MySQL để tạo các ID duy nhất cho mỗi lần chèn tự động. Lược đồ cập nhật được hiển thị bên dưới.
##### Liệt kê 5. Goodid.php
DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT NOT NULL AUTO_INCREMENT, login TEXT NOT NULL, password TEXT NOT NULL, PRIMARY KEY( id ) ); INSERT INTO users VALUES ( null, 'jack', 'pass' ); INSERT INTO users VALUES ( null, 'joan', 'pass' ); INSERT INTO users VALUES ( null, 'jane', 'pass' );
Chúng ta thêm cờ
NOT NULL để chỉ ra rằng các
trường này không rỗng (null). Chúng ta cũng đã bổ sung cờ
AUTO_INCREMENT để chỉ thị rằng trường này tăng tự
động, cũng như cờ
PRIMARY KEY để chỉ thị trường
nào là
id. Những thay đổi này cho phép tăng một
chút tốc độ. Liệt kê 6 cho thấy mã PHP đã cập nhật, mã này chèn users
(những người dùng) vào bảng.
##### Liệt kê 6. Add_user_good.php
<?php require_once("DB.php"); function add_user( $name, $pass ) { $dsn = 'mysql://root:password@localhost/good_genid'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $sth = $db->prepare( "INSERT INTO users VALUES(null,?,?)" ); $db->execute( $sth, array( $name, $pass ) ); $res = $db->query( "SELECT last_insert_id()" ); $id = null; while( $res->fetchInto( $row ) ) { $id = $row[0]; } return $id; } $id = add_user( 'jerry', 'pass' ); var_dump( $id ); ?>
Thay vì nhận được giá trị
id tối đa, tôi bây giờ
chỉ cần sử dụng câu lệnh
INSERT để chèn dữ
liệu, sau đó sử dụng một câu lệnh
SELECT để lấy
id của bản ghi vừa mới được chèn vào. Mã
này đơn giản hơn nhiều và hiệu quả hơn so với phiên bản gốc và lược đồ
liên quan của nó.
Một lựa chọn khác đối với chức năng tăng tự động của MySQL là sử dụng
phương thức
nextId() trong hệ thống PEAR DB.
Trong trường hợp của MySQL, điều này tạo ra một bảng tuần tự mới và quản
lý việc sử dụng một cơ chế khóa phức tạp. Lợi thế của việc sử dụng phương
thức này là nó sẽ hoạt động trên các hệ thống cơ sở dữ liệu khác.
Dù bằng cách nào, bạn nên sử dụng một hệ thống quản lý sự tăng các ID duy nhất cho bạn và không dựa vào hệ thống mà bạn truy vấn đầu tiên, sau đó tăng giá trị của chính bạn và thêm bản ghi. Cách tiếp cận thứ hai dễ bị ảnh hưởng theo các điều kiện ganh đua trên các trang có khối lượng cao.
## Vấn đề 3: Sử dụng nhiều cơ sở dữ liệu
Một khi chúng ta thấy ứng dụng mà mỗi bảng ở trong một cơ sở dữ liệu riêng biệt. Có nhiều lý do để thực hiện điều đó trong các cơ sở dữ liệu rất lớn, nhưng đối với ứng dụng trung bình, bạn không cần mức phân đoạn này. Ngoài ra, mặc dù có thể thực hiện các truy vấn liên quan trên nhiều cơ sở dữ liệu, tôi rất khuyên bạn chống lại nó. Cú pháp phức tạp hơn. Quản lý sao lưu và khôi phục lại không dễ dàng. Cú pháp có thể hoặc không thể làm việc giữa các máy cơ sở dữ liệu khác nhau. Và thật khó khăn để tiếp tục theo cấu trúc quan hệ khi các bảng được chia trên nhiều cơ sở dữ liệu.
Vì vậy, nhiều cơ sở dữ liệu sẽ giống thế nào? Để bắt đầu, bạn cần một số dữ liệu. Liệt kê 7 cho thấy dữ liệu này được chia thành bốn tệp.
##### Liệt kê 7. Các tệp cơ sở dữ liệu
Files.sql:CREATE TABLE files ( id MEDIUMINT, user_id MEDIUMINT, name TEXT, path TEXT ); Load_files.sql:INSERT INTO files VALUES ( 1, 1, 'test1.jpg', 'files/test1.jpg' ); INSERT INTO files VALUES ( 2, 1, 'test2.jpg', 'files/test2.jpg' ); Users.sql:DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT, login TEXT, password TEXT ); Load_users.sql:INSERT INTO users VALUES ( 1, 'jack', 'pass' ); INSERT INTO users VALUES ( 2, 'jon', 'pass' );
Trong phiên bản nhiều cơ sở dữ liệu của các tệp này, bạn sẽ nạp câu lệnh
SQL vào trong một cơ sở dữ liệu, sau đó nạp các câu lệnh SQL
users (những người sử dụng) vào cơ sở dữ liệu
khác. Mã PHP để truy vấn cơ sở dữ liệu cho các tệp này liên kết với người
dùng cụ thể được hiển thị dưới đây.
##### Liệt kê 8. Getfiles.php
<?php require_once("DB.php"); function get_user( $name ) { $dsn = 'mysql://root:password@localhost/bad_multi1'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT id FROM users WHERE login=?", array( $name ) ); $uid = null; while( $res->fetchInto( $row ) ) { $uid = $row[0]; } return $uid; } function get_files( $name ) { $uid = get_user( $name ); $rows = array(); $dsn = 'mysql://root:password@localhost/bad_multi2'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT * FROM files WHERE user_id=?", array( $uid ) ); while( $res->fetchInto( $row ) ) { $rows[] = $row; } return $rows; } $files = get_files( 'jack' ); var_dump( $files ); ?>
Hàm
get_user kết nối tới cơ sở dữ liệu chứa bảng
của những người sử dụng và lấy ra ID cho một người dùng đã biết. Hàm
get_files kết nối đến bảng các tệp và lấy ra các
hàng có kết hợp với người dùng đã biết.
Cách tốt hơn để làm tất cả những điều này là nạp dữ liệu vào một cơ sở dữ liệu, sau đó thực hiện một truy vấn, như được hiển thị bên dưới.
##### Liệt kê 9. Getfiles_good.php
<?php require_once("DB.php"); function get_files( $name ) { $rows = array(); $dsn = 'mysql://root:password@localhost/good_multi'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT files.* FROM users, files WHERE users.login=? AND users.id=files.user_id", array( $name ) ); while( $res->fetchInto( $row ) ) { $rows[] = $row; } return $rows; } $files = get_files( 'jack' ); var_dump( $files ); ?>
Mã này không chỉ ngắn hơn mà nó cũng dễ hiểu hơn và hiệu quả hơn. Thay vì thực hiện hai truy vấn, chúng ta đang thực hiện một.
Trong khi vấn đề này lạc điệu, chúng ta đã thấy nó trong thực tế có đủ thời gian để biết rằng tất cả các bảng phải ở trong cùng một cơ sở dữ liệu, trừ khi có một lý do cấp thiết khác.
## Vấn đề 4: Không sử dụng các mối quan hệ
Các cơ sở dữ liệu quan hệ không giống như các ngôn ngữ lập trình. Chúng
không có kiểu mảng. Thay vào đó, chúng sử dụng các mối quan hệ giữa các
bảng để tạo ra cấu trúc một-tới-nhiều giữa các đối tượng, chúng có cùng
tác dụng như một mảng. Một vấn đề mà tôi đã thấy với các ứng dụng là khi
các kỹ sư cố gắng sử dụng một cơ sở dữ liệu như thể nó đã là một ngôn ngữ
lập trình, tạo
*arrays* (các mảng) bằng cách sử dụng chuỗi văn bản
với các trình nhận dạng tách nhau bằng dấu phẩy. Hãy xem lược đồ dưới
đây.
##### Liệt kê 10. Bad.sql
DROP TABLE IF EXISTS files; CREATE TABLE files ( id MEDIUMINT, name TEXT, path TEXT ); DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT, login TEXT, password TEXT, files TEXT ); INSERT INTO files VALUES ( 1, 'test1.jpg', 'media/test1.jpg' ); INSERT INTO files VALUES ( 2, 'test1.jpg', 'media/test1.jpg' ); INSERT INTO users VALUES ( 1, 'jack', 'pass', '1,2' );
Một người dùng trong hệ thống có thể có nhiều tệp. Trong một ngôn ngữ lập
trình, bạn sẽ sử dụng một mảng để biểu diễn các tệp liên kết với người
dùng. Trong ví dụ này, lập trình viên đã chọn để tạo ra một trường
**files** (các tệp) chứa danh sách các
id tệp được phân cách bằng dấu phẩy. Để có được một danh sách
tất cả các tệp cho người dùng cụ thể, lập trình viên trước tiên phải đọc
hàng từ bảng những người dùng, sau đó phân tích cú pháp văn bản của tệp và
chạy một câu lệnh
SELECT riêng lẻ cho mỗi tệp.
Mã này được hiển thị bên dưới..
##### Liệt kê 11. Get.php
<?php require_once("DB.php"); function get_files( $name ) { $dsn = 'mysql://root:password@localhost/bad_norel'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $res = $db->query( "SELECT files FROM users WHERE login=?", array( $name ) ); $files = null; while( $res->fetchInto( $row ) ) { $files = $row[0]; } $rows = array(); foreach( split( ',',$files ) as $file ) { $res = $db->query( "SELECT * FROM files WHERE id=?", array( $file ) ); while( $res->fetchInto( $row ) ) { $rows[] = $row; } } return $rows; } $files = get_files( 'jack' ); var_dump( $files ); ?>
Kỹ thuật này chậm, khó bảo trì và không tận dụng tốt cơ sở dữ liệu. Giải pháp duy nhất là tái kiến trúc lược đồ này để đưa nó trở lại thành một dạng quan hệ truyền thống, như được hiển thị dưới đây.
##### Liệt kê 12. Good.sql
DROP TABLE IF EXISTS files; CREATE TABLE files ( id MEDIUMINT, user_id MEDIUMINT, name TEXT, path TEXT ); DROP TABLE IF EXISTS users; CREATE TABLE users ( id MEDIUMINT, login TEXT, password TEXT ); INSERT INTO users VALUES ( 1, 'jack', 'pass' ); INSERT INTO files VALUES ( 1, 1, 'test1.jpg', 'media/test1.jpg' ); INSERT INTO files VALUES ( 2, 1, 'test1.jpg', 'media/test1.jpg' );
Ở đây, mỗi tệp có liên quan đến người dùng thông qua hàm
user_id trong bảng tệp. Điều này hầu như có vẻ
lạc hậu với bất kỳ ai nhìn thấy điều này như là một mảng. Chắc chắn, các
mảng không tham chiếu đến đối tượng trong mảng -- thực tế, ngược lại hoàn
toàn. Nhưng trong một cơ sở dữ liệu quan hệ, đây là cách những thứ này làm
và lí do các truy vấn là nhanh hơn và dễ dàng hơn nhiều. Liệt kê 13 cho
thấy mã PHP tương ứng.
##### Liệt kê 13. Get_good.php
<?php require_once("DB.php"); function get_files( $name ) { $dsn = 'mysql://root:password@localhost/good_rel'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } $rows = array(); $res = $db->query( "SELECT files.* FROM users,files WHERE users.login=? AND users.id=files.user_id", array( $name ) ); while( $res->fetchInto( $row ) ) { $rows[] = $row; } return $rows; } $files = get_files( 'jack' ); var_dump( $files ); ?>
Ở đây, chúng ta thực hiện một truy vấn đến cơ sở dữ liệu để nhận được tất cả các hàng. Mã này không phức tạp và nó sử dụng cơ sở dữ liệu như nó đã được dự định.
## Vấn đề 5: Mẫu n+1
Tôi không thể nói cho bạn biết bao nhiêu lần chúng ta đã nhìn thấy các ứng
dụng lớn trong đó mã này đầu tiên lấy ra một danh sách các thực thể -- gọi
là các khách hàng -- sau đó quay trở lại và lấy ra chúng từng người một để
có được những chi tiết cho từng thực thể. Chúng ta gọi nó là mẫu
*n+1* vì đó là có bao nhiêu truy vấn sẽ được thực hiện -- một
truy vấn để lấy ra danh sách tất cả các thực thể, rồi một truy vấn cho mỗi
một trong *n* thực thể. Đây không phải là một vấn đề khi n = 10,
nhưng sẽ là gì khi n = 100 hoặc n = 1000? Rồi, sự thiếu khả năng thực sự
đóng góp vào. Liệt kê 14 cho thấy một ví dụ về một lược đồ như vậy.
##### Liệt kê 14. Schema.sql
DROP TABLE IF EXISTS authors; CREATE TABLE authors ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name TEXT NOT NULL, PRIMARY KEY ( id ) ); DROP TABLE IF EXISTS books; CREATE TABLE books ( id MEDIUMINT NOT NULL AUTO_INCREMENT, author_id MEDIUMINT NOT NULL, name TEXT NOT NULL, PRIMARY KEY ( id ) ); INSERT INTO authors VALUES ( null, 'Jack Herrington' ); INSERT INTO authors VALUES ( null, 'Dave Thomas' ); INSERT INTO books VALUES ( null, 1, 'Code Generation in Action' ); INSERT INTO books VALUES ( null, 1, 'Podcasting Hacks' ); INSERT INTO books VALUES ( null, 1, 'PHP Hacks' ); INSERT INTO books VALUES ( null, 2, 'Pragmatic Programmer' ); INSERT INTO books VALUES ( null, 2, 'Ruby on Rails' ); INSERT INTO books VALUES ( null, 2, 'Programming Ruby' );
Đây là lược đồ đáng tin cậy. Không có gì sai ở đây. Vấn đề là ở trong mã truy cập vào cơ sở dữ liệu để tìm tất cả các sách cho một tác giả cụ thể, như được hiển thị dưới đây.
##### Liệt kê 15. Get.php
<?php require_once('DB.php'); $dsn = 'mysql://root:password@localhost/good_books'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } function get_author_id( $name ) { global $db; $res = $db->query( "SELECT id FROM authors WHERE name=?", array( $name ) ); $id = null; while( $res->fetchInto( $row ) ) { $id = $row[0]; } return $id; } function get_books( $id ) { global $db; $res = $db->query( "SELECT id FROM books WHERE author_id=?", array( $id ) ); $ids = array(); while( $res->fetchInto( $row ) ) { $ids []= $row[0]; } return $ids; } function get_book( $id ) { global $db; $res = $db->query( "SELECT * FROM books WHERE id=?", array( $id ) ); while( $res->fetchInto( $row ) ) { return $row; } return null; } $author_id = get_author_id( 'Jack Herrington' ); $books = get_books( $author_id ); foreach( $books as $book_id ) { $book = get_book( $book_id ); var_dump( $book ); } ?>
Nếu bạn nhìn vào mã ở dưới cùng, bạn có khả năng suy nghĩ đến chính mình,
"Ôi, điều này thực sự sạch sẽ." Trước tiên, nhận được
id, tác giả, rồi nhận được một danh sách các cuốn sách, sau đó
nhận được thông tin về mỗi cuốn sách. Chắc chắn, nó sạch sẽ -- nhưng nó có
hiệu quả không? Không. Hãy nhìn xem chúng ta phải thực hiện bao nhiêu các
truy vấn để lấy ra chỉ các sách của Jack Herrington. Một truy vấn để nhận
được một
id, một truy vấn khác để nhận được một
danh sách các cuốn sách, sau đó một truy vấn cho mỗi cuốn sách. Năm truy
vấn cho ba cuốn sách!
Giải pháp này là có một hàm thực hiện một số lượng lớn truy vấn, như liệt kê dưới đây.
##### Liệt kê 16. Get_good.php
<?php require_once('DB.php'); $dsn = 'mysql://root:password@localhost/good_books'; $db =& DB::Connect( $dsn, array() ); if (PEAR::isError($db)) { die($db->getMessage()); } function get_books( $name ) { global $db; $res = $db->query( "SELECT books.* FROM authors,books WHERE books.author_id=authors.id AND authors.name=?", array( $name ) ); $rows = array(); while( $res->fetchInto( $row ) ) { $rows []= $row; } return $rows; } $books = get_books( 'Jack Herrington' ); var_dump( $books ); ?>
Bây giờ lấy ra danh sách yêu cầu chỉ một truy vấn, nhanh. Nó có nghĩa là tôi có khả năng sẽ phải có một số các kiểu các phương thức này với các tham số khác nhau, nhưng thực sự không có sự lựa chọn nào. Nếu bạn muốn có một ứng dụng PHP có thể so sánh được với nhau, bạn phải sử dụng hiệu quả cơ sở dữ liệu và điều đó có nghĩa là các truy vấn thông minh hơn.
Vấn đề với ví dụ này là nó quá rõ ràng. Thông thường, các kiểu của vấn đề
*n+1* hay *n*n* nhạy cảm hơn nhiều. Và chúng chỉ xuất hiện
khi người quản trị cơ sở dữ liệu chạy một trình định hình truy vấn trên hệ
thống của bạn khi nó có vấn đề về hiệu năng.
## Kết luận
Các cơ sở dữ liệu là các công cụ mạnh và -- như tất cả các công cụ mạnh mẽ -- chúng có thể bị lạm dụng nếu bạn không biết cách sử dụng chúng cho đúng. Thủ thuật phía sau việc xác định và giải quyết các vấn đề này là hiểu rõ hơn về công nghệ bên dưới. Quá lâu, tôi đã nghe các nhà mã hóa logic nghiệp vụ than thở rằng họ không muốn phải hiểu cơ sở dữ liệu hoặc mã SQL. Họ bao bọc cơ sở dữ liệu trong các đối tượng và tự hỏi tại sao hiệu năng lại kém đến như vậy.
Họ không nhận ra rằng sự hiểu biết SQL là nguyên tắc cơ bản để chuyển cơ sở
dữ liệu từ một hoàn cảnh khó khăn thành một đồng minh mạnh. Nếu bạn sử
dụng cơ sở dữ liệu hàng ngày, nhưng SQL không phù hợp với bạn, hãy đọc
*The Art of SQL* (Nghệ thuật SQL). Đây là hướng dẫn thiết thực,
được viết rõ ràng để nhận được nhiều nhất bên ngoài một cơ sở dữ liệu.
## Tài nguyên
### Học tập
[(Nghệ thuật SQL), của Stephane Faroult và Peter Robson, là một cuốn sách phải đọc đối với các lập trình viên, những người sử dụng cơ sở dữ liệu trong các ứng dụng của họ.](http://ibmdw.safaribooksonline.com/JVXSL.asp?x=1&mode=section&sortKey=rank&sortOrder=desc&view=section&xmlid=0596008945&k=20&g=&srchText=The+Art+of+SQL&code=&h=0&m=&l=1&j=list&catid=&s=1&b=1&f=1&t=1&c=1&u=1&r=&o=1&n=1&d=1&p=1&a=0&page=0) *The Art of SQL* [PHP.net](http://php.net)là điểm khởi đầu cho tất cả mọi thứ PHP. [Tài liệu PEAR DB](http://pear.php.net/db)là một tài nguyên xuất sắc. [Tài liệu các chức năng PDO](http://php.net/pdo)có thể đưa bạn lên đến tốc độ trên PHP Data Objects (PDO- Các đối tượng dữ liệu PHP). [MySQL.org](http://mysql.org/)có tài liệu hướng dẫn xuất sắc với các ví dụ hiển thị cách sử dụng một cơ sở dữ liệu tốt hơn.
- Truy cập
[tài nguyên dự án PHP của developerWorks IBM](http://www.ibm.com/developerworks/opensource/top-projects/php.html?S_TACT=105AGY75)để tìm hiểu thêm về PHP.
- Theo sát với
[các sự kiện kỹ thuật và webcast của developerWorks](http://www.ibm.com/developerworks/offers/techbriefings/?S_TACT=105AGY75).
- Hãy xem các hội nghị, các cuộc triển lãm
thương mại, webcast sắp tới và
[các sự kiện](http://www.ibm.com/developerworks/views/opensource/events.jsp?S_TACT=105AGY75)trên thế giới mà các nhà phát triển mã nguồn mở của IBM đang quan tâm.
- Truy cập vào
[lĩnh vực mã nguồn mở](http://www.ibm.com/developerworks/opensource?S_TACT=105AGY75)của developerWorks với các thông tin hướng dẫn rộng lớn, các công cụ và dự án để giúp bạn phát triển với các công nghệ mã nguồn mở và sử dụng chúng với các sản phẩm của IBM.
- Để nghe các cuộc phỏng vấn và thảo luận
thú vị với các nhà phát triển phần mềm, hãy xem
[developerWorks podcasts](http://www.ibm.com/developerworks/podcast/?S_TACT=105AGY75).
### Lấy sản phẩm và công nghệ
- Đổi mới dự án
phát triển nguồn mở tiếp theo của của bạn với
[phần mềm dùng thử IBM](http://www.ibm.com/developerworks/downloads/?S_TACT=105AGY75), có sẵn để tải xuống hoặc trên đĩa DVD.
### Thảo luận
- Dành tâm trí cho cộng đồng
developerWorks bằng cách tham gia vào
[các blog của developerWorks](http://www.ibm.com/developerworks/blogs/?S_TACT=105AGY75).
## Bình luận
[Vùng dữ liệu trên developerWorks](http://www.ibm.com/developerworks/vn/views/data/libraryview.jsp)
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
[Vùng mã nguồn mở trên developerWorks](http://www.ibm.com/developerworks/vn/views/opensource/libraryview.jsp)
Xem các bài viết về HTML, CSS, JavaScript,...
[Điện toán đám mây](http://www.ibm.com/developerworks/vn/views/cloud/libraryview.jsp)
Tìm hiểu về điện toán đám mây

Content-Language: en-US

Content-Type: text/html; charset=UTF-8


text:
Chiều 29-12, Công đoàn Tổng Công ty Khánh Việt đã đến thăm Lữ đoàn 146, Vùng 4, Quân chủng Hải quân và gửi tặng bộ đội Trường Sa 500kg thịt đà điểu trị giá hơn 100 triệu đồng nhằm động viên cán bộ, chiến sĩ đang làm nhiệm vụ canh giữ biển đảo của Tổ quốc nhân dịp Tết Bính Thân 2016.
GPĐKKD số 4200486169 do Sở KHĐT tỉnh Khánh Hòa cấp ngày 05/11/2011
GP Thiết lập trang thông tin điện tử số 08/GP-STTTT do Sở TTTT tỉnh Khánh Hòa cấp ngày 28/09/2015
Khatoco Tổng công ty Khánh Việt
Chịu trách nhiệm quản lý nội dung: Lê Tiến Anh - Chủ tịch Hội đồng Thành viên kiêm Tổng Giám đốc Tổng công ty Khánh Việt

Set-Cookie: language=vi-VN; path=/; HttpOnly

Cache-Control: private


text:
KhoaHoc.com.vn tạm dừng hoạt động, kính mong bạn đọc thông cảm.
Xin chân thành cảm ơn bạn đọc đã ủng hộ KhoaHoc.com.vn.
Trong khi chờ đợi, quý khách có thể mua sắm một vài thứ cần dùng cho gia đình
Y TẾ
GIA DỤNG
THỂ THAO
ĐỒ SƯỞI


text:
Trong chiến dịch tìm kiếm máy bay Malaysia mất tích, ông Hà Kiến Trung nói, Trung Quốc đến nay đã cử 6 tàu, bao gồm 4 tàu tuần tra và 2 tàu chiến của hải quân. Hai tàu chiến này là tàu đổ bộ Tỉnh Cương Sơn và tàu chiến Miên Dương, trước đó đã được Việt Nam cho phép tiến vào vùng Biển Đông, phối hợp cùng các nước tìm kiếm, cứu hộ máy bay mất tích.
Thứ trưởng TQ cho biết Trung Quốc đã lên kế hoạch phạm vi tìm kiếm của 6 tàu trên. Ngày mai, nước này sẽ triển khai thêm 3 tàu tuần tra, đồng thời huy động tàu buôn hỗ trợ.
Ông Hà Kiến Trung khẳng định Trung Quốc vẫn duy trì liên lạc và phối hợp với Malaysia và Việt Nam.
Tàu đổ bộ Tỉnh Cương Sơn tham gia tìm máy bay mất tích.
Hôm 10/3, người phát ngôn Bộ Ngoại giao Trung Quốc Tần Cương hối thúc Malaysia đẩy nhanh việc tìm kiếm chuyến bay MH370 mất tích với 239 người, trong đó có 153 người Trung Quốc.
"Chúng tôi hy vọng Malaysia có thể hiểu tâm trạng củaTrung Quốc, đặc biệt là tâm trạng của gia đình hành khách Trung Quốc và tăng tốc độ điều tra cũng như nỗ lực tìm kiếm và cứu hộ hơn nữa" ông Tần Cương nói tại cuộc họp báo hàng ngày.
"Chiếc máy bay mất tích thuộc hãng hàng không Malaysia, vì vậy Malaysia phải có trách nhiệm chính trong việc tìm kiếm và cứu nạn”.
Bộ Công an Trung Quốc cũng đã cử người đến Malaysia để điều tra việc hai người sử dụng hộ chiếu bị đánh cắp để lên trên máy bay, "nhưng chúng tôi không thể xác định ai đang sử dụng hộ chiếu này”, ông Tần nói.
"Khi việc điều tra vẫn được tiến hành, vẫn còn quá sớm để kết luận, mọi người cần bình tĩnh và tránh phát tán thông tin sai lệch" người phát ngôn nói.
Clip tàu chiến Trung Quốc tìm máy bay Boeing 777 mất tích:
Linh An
Tin liên quan
Video Thế giới xem nhiều
- May bay MalaysiarnMay Bay
- Vu may bay roi
- Tin may bay roi
- May bay bi mat tich
- Tin mới nhat ve may bay mat tich
- Máy bay roai
- Tim thay May Bay mat tich
- May Bay Malaysia Roi
- Vu may bay mat tich
- Tai nan May Bay
- May bay Malaysia Mat Tich
- MH370
- máy bay malaysia mất tích
- máy bay Malaysia
- máy bay mất tích
- may bay mat tich
- roi may bay
- may bay roi
- Boeing 777
- Malaysia Airlines
Đọc tin tức sự kiện tin mới ,nhanh và hay nhất trong ngày tại chuyên mục:Tin tức 24h
Mời quý độc giả đọc báo qua RSS để có thêm nhiều thông tin hơn.
Tin Tiêu điểm mới nhất
-
Malaysia bác tin người dùng hộ chiếu giả có ‘đặc điểm châu Á’
-
Vụ máy bay rơi: Xúc động lời cầu nguyện con gái tiếp viên trưởng
-
Có người Malaysia nhìn thấy chiếc máy bay mất tích
-
Báo Trung Quốc chỉ trích Malaysia quá chậm chạp
-
Điều tra máy bay mất tích theo hướng bị nổ trên không
-
Máy bay mất tích: 'Gương mặt châu Á' và 2 vé một chiều
Gia đình pháp luật
-
Bộ Quốc phòng: '9 người phi hành đoàn Casa- 212 đã hy sinh'
-
Du học sinh Việt bị bắt tại Nhật vì một lí do không thể chấp nhận
-
Đánh ghen, đổ mực lên người ở Vĩnh Phúc: Uẩn khúc dần sáng tỏ
-
Kỳ Hân khoe ảnh 'độc' Mạc Hồng Quân bán nude
-
[video] Kết quả tìm kiếm các quân nhân và máy bay CASA gặp nạn
-
Thanh Thảo bật khóc khi nhắc đến Dương Triệu Vũ và hai chữ hạnh phúc
Việc làm
-
Nhà tuyển dụng công nghệ nào được yêu thích nhất tại Việt Nam?
-
Người lao động cần cảnh giác khi quyết định đến Singapore làm việc
-
Cho người khác mượn hồ sơ nhân thân đi xin việc có được phép gộp sổ BHXH?
-
Cho thuê cơ thể: Chấp nhận rủi ro lớn để có thu nhập cao
-
Phong thủy nhà ở giúp công việc thuận lợi
-
Những nghề độc kiếm bộn tiền giới trẻ đang theo đuổi

markdown:
Trong chiến dịch tìm kiếm
**máy bay Malaysia mất tích**, ông Hà Kiến Trung nói, Trung Quốc đến nay đã cử 6 tàu, bao gồm 4 tàu tuần tra và 2 tàu chiến của hải quân. Hai tàu chiến này là tàu đổ bộ Tỉnh Cương Sơn và tàu chiến Miên Dương, trước đó đã được Việt Nam cho phép tiến vào vùng Biển Đông, phối hợp cùng các nước tìm kiếm, cứu hộ **máy bay mất tích**.
Thứ trưởng TQ cho biết Trung Quốc đã lên kế hoạch phạm vi tìm kiếm của 6 tàu trên. Ngày mai, nước này sẽ triển khai thêm 3 tàu tuần tra, đồng thời huy động tàu buôn hỗ trợ.
Ông Hà Kiến Trung khẳng định Trung Quốc vẫn duy trì liên lạc và phối hợp với Malaysia và Việt Nam.
##
*Tàu đổ bộ Tỉnh Cương Sơn tham gia tìm máy bay mất tích.*
Hôm 10/3, người phát ngôn Bộ Ngoại giao Trung Quốc Tần Cương hối thúc Malaysia đẩy nhanh việc tìm kiếm chuyến bay MH370 mất tích với 239 người, trong đó có 153 người Trung Quốc.
"Chúng tôi hy vọng Malaysia có thể hiểu tâm trạng củaTrung Quốc, đặc biệt là tâm trạng của gia đình hành khách Trung Quốc và tăng tốc độ điều tra cũng như nỗ lực tìm kiếm và cứu hộ hơn nữa" ông Tần Cương nói tại cuộc họp báo hàng ngày.
"Chiếc máy bay mất tích thuộc hãng hàng không Malaysia, vì vậy Malaysia phải có trách nhiệm chính trong việc tìm kiếm và cứu nạn”.
Bộ Công an Trung Quốc cũng đã cử người đến Malaysia để điều tra việc hai người sử dụng hộ chiếu bị đánh cắp để lên trên máy bay, "nhưng chúng tôi không thể xác định ai đang sử dụng hộ chiếu này”, ông Tần nói.
"Khi việc điều tra vẫn được tiến hành, vẫn còn quá sớm để kết luận, mọi người cần bình tĩnh và tránh phát tán thông tin sai lệch" người phát ngôn nói.
## Clip tàu chiến Trung Quốc tìm máy bay Boeing 777 mất tích:
**Linh An**
|
|
Mời bạn đọc cùng làm báo với Nguoiduatin.vn, viết tin bài, bày tỏ quan điểm về mọi mặt của cuộc sống gửi về hộp thư
### Tin liên quan
### Video Thế giới xem nhiều
![ ](http://www.nguoiduatin.vn/tracking-126567.gif?a=1466896010)
[May bay MalaysiarnMay Bay](http://www.nguoiduatin.vn/tag/May-bay-MalaysiarnMay-Bay) [Vu may bay roi](http://www.nguoiduatin.vn/tag/Vu-may-bay-roi) [Tin may bay roi](http://www.nguoiduatin.vn/tag/Tin-may-bay-roi) [May bay bi mat tich](http://www.nguoiduatin.vn/tag/May-bay-bi-mat-tich) [Tin mới nhat ve may bay mat tich](http://www.nguoiduatin.vn/tag/Tin-mới-nhat-ve-may-bay-mat-tich) [Máy bay roai](http://www.nguoiduatin.vn/tag/Máy-bay-roai) [Tim thay May Bay mat tich](http://www.nguoiduatin.vn/tag/Tim-thay-May-Bay-mat-tich) [May Bay Malaysia Roi](http://www.nguoiduatin.vn/tag/May-Bay-Malaysia-Roi) [Vu may bay mat tich](http://www.nguoiduatin.vn/tag/Vu-may-bay-mat-tich) [Tai nan May Bay](http://www.nguoiduatin.vn/tag/Tai-nan-May-Bay) [May bay Malaysia Mat Tich](http://www.nguoiduatin.vn/tag/May-bay-Malaysia-Mat-Tich) [MH370](http://www.nguoiduatin.vn/tag/MH370) [máy bay malaysia mất tích](http://www.nguoiduatin.vn/tag/máy-bay-malaysia-mất-tích) [máy bay Malaysia](http://www.nguoiduatin.vn/tag/máy-bay-Malaysia) [máy bay mất tích](http://www.nguoiduatin.vn/tag/máy-bay-mất-tích) [may bay mat tich](http://www.nguoiduatin.vn/tag/may-bay-mat-tich) [roi may bay](http://www.nguoiduatin.vn/tag/roi-may-bay) [may bay roi](http://www.nguoiduatin.vn/tag/may-bay-roi) [Boeing 777](http://www.nguoiduatin.vn/tag/Boeing-777) [Malaysia Airlines](http://www.nguoiduatin.vn/tag/Malaysia-Airlines)
Đọc
[tin tức](http://www.nguoiduatin.vn/) sự kiện [tin mới ](http://www.nguoiduatin.vn/),nhanh và hay nhất trong ngày tại chuyên mục: [Tin tức 24h ](http://www.nguoiduatin.vn/gl/24h-qua)
Mời quý độc giả
[đọc báo](http://www.nguoiduatin.vn/) qua [RSS](http://www.nguoiduatin.vn/trang-chu.rss) để có thêm nhiều thông tin hơn.
### Tin Tiêu điểm mới nhất
-
[Malaysia bác tin người dùng hộ chiếu giả có ‘đặc điểm châu Á’](http://www.nguoiduatin.vn/malaysia-bac-tin-nguoi-dung-ho-chieu-gia-co-dac-diem-chau-a-a126556.html)
-
[Vụ máy bay rơi: Xúc động lời cầu nguyện con gái tiếp viên trưởng](http://www.nguoiduatin.vn/vu-may-bay-roi-xuc-dong-loi-cau-nguyen-con-gai-tiep-vien-truong-a126555.html)
-
[Có người Malaysia nhìn thấy chiếc máy bay mất tích](http://www.nguoiduatin.vn/co-nguoi-malaysia-nhin-thay-chiec-may-bay-mat-tich-a126538.html)
-
[Báo Trung Quốc chỉ trích Malaysia quá chậm chạp](http://www.nguoiduatin.vn/bao-trung-quoc-chi-trich-malaysia-qua-cham-chap-a126530.html)
-
[Điều tra máy bay mất tích theo hướng bị nổ trên không](http://www.nguoiduatin.vn/dieu-tra-may-bay-mat-tich-theo-huong-bi-no-tren-khong-a126528.html)
-
[Máy bay mất tích: 'Gương mặt châu Á' và 2 vé một chiều](http://www.nguoiduatin.vn/may-bay-mat-tich-guong-mat-chau-a-va-2-ve-mot-chieu-a126525.html)
[Gia đình pháp luật](http://giadinhphapluat.vn)
-
[Bộ Quốc phòng: '9 người phi hành đoàn Casa- 212 đã hy sinh'](http://giadinhphapluat.vn/bo-quoc-phong-9-nguoi-phi-hanh-doan-casa-212-da-hy-sinh-p37654.html?utm_source=detail.nguoiduatin.vn&utm_medium=Exchange)
-
[Du học sinh Việt bị bắt tại Nhật vì một lí do không thể chấp nhận](http://giadinhphapluat.vn/du-hoc-sinh-viet-bi-bat-tai-nhat-vi-mot-li-do-khong-the-chap-nhan-p37670.html?utm_source=detail.nguoiduatin.vn&utm_medium=Exchange)
-
[Đánh ghen, đổ mực lên người ở Vĩnh Phúc: Uẩn khúc dần sáng tỏ](http://giadinhphapluat.vn/danh-ghen-do-muc-len-nguoi-o-vinh-phuc-uan-khuc-dan-sang-to-p37668.html?utm_source=detail.nguoiduatin.vn&utm_medium=Exchange)
-
[Kỳ Hân khoe ảnh 'độc' Mạc Hồng Quân bán nude](http://giadinhphapluat.vn/ky-han-khoe-anh-doc-mac-hong-quan-ban-nude-p37672.html?utm_source=detail.nguoiduatin.vn&utm_medium=Exchange)
-
[[video] Kết quả tìm kiếm các quân nhân và máy bay CASA gặp nạn](http://giadinhphapluat.vn/ket-qua-tim-kiem-cac-quan-nhan-va-may-bay-casa-gap-nan-p37667.html?utm_source=detail.nguoiduatin.vn&utm_medium=Exchange)
-
[Thanh Thảo bật khóc khi nhắc đến Dương Triệu Vũ và hai chữ hạnh phúc](http://giadinhphapluat.vn/thanh-thao bat-khoc-khi-nhac-den-duong-trieu-vu-va-hai-chu-hanh-phuc-p37615.html?utm_source=detail.nguoiduatin.vn&utm_medium=Exchange)
[Việc làm](http://vieclam.nguoiduatin.vn)
-
[Nhà tuyển dụng công nghệ nào được yêu thích nhất tại Việt Nam?](http://vieclam.nguoiduatin.vn/thi-truong/nha-tuyen-dung-cong-nghe-nao-duoc-yeu-thich-nhat-tai-viet-nam-990)
-
[Người lao động cần cảnh giác khi quyết định đến Singapore làm việc](http://vieclam.nguoiduatin.vn/thi-truong/nguoi-lao-dong-can-canh-giac-khi-quyet-dinh-den-singapore-lam-viec-977)
-
[Cho người khác mượn hồ sơ nhân thân đi xin việc có được phép gộp sổ BHXH?](http://vieclam.nguoiduatin.vn/thi-truong/cho-nguoi-khac-muon-ho-so-nhan-than-di-xin-viec-co-duoc-phep-gop-so-bhxh-979)
-
[Cho thuê cơ thể: Chấp nhận rủi ro lớn để có thu nhập cao](http://timviectot.vn/cho-thue-co-the-rui-do-lon-thu-nhap-cao.html)
-
[Phong thủy nhà ở giúp công việc thuận lợi](http://timviectot.vn/phong-thuy-nha-giup-cong-viec-thuan-loi.html)
-
[Những nghề độc kiếm bộn tiền giới trẻ đang theo đuổi](http://timviectot.vn/nghe-doc-kiem-bon-tien-gioi-tre-theo-duoi.html)


text:
Địa chỉ:
Số 1 Đinh Lễ - 44 Tràng Tiền, Quận Hoàn Kiếm, Hà Nội .
ĐT: 04.3936.2151.
Fax:04.39341591
Ai Và Ky Ở Xứ Sở Những Con Số Tàng Hình (Tiểu Thuyết Toán Hiệp)
Tác giả:
GS. Ngô Bảo Châu, Nguyễn Phương Văn
Hội chứng tự kỉ-Sách dành cho cha mẹ
Tác giả:
nhiều tác giả
Almanach Những Nền Văn Minh Thế Giới
Đàn ông và đàn ông
Tác giả:
Rei Kimura(Tạ Thu Hà dịch)
Ai là quán quân
Tác giả:
Quỳnh Tân(biên soạn)
Official Guide to the New Toefl Ibt
Tác giả:
Educational Testing
NHÀ XUẤT BẢN QUÂN ĐỘI NHÂN DÂN:Cơ quan xuất bản chuyên ngành tổng hợp quân sự của Đảng uỷ Quân sự Trung ương và Bộ Quốc phòng,thành lập 11/7/1950.Nhiệm vụ chính:Xuất bản các loại sách kinh điển chủ nghĩa Mác-Lê nin về chiến tranh,quân đội và khoa học quân sự;tác phẩm quân sự chính trị của Chủ tịch Hồ Chí Minh và các nhà lãnh đạo Đảng,Nhà nước,Quân đội;lịch sử Quân đội nhân dân,lịch sử kháng chiến;hồi ký của các tướng lĩnh;sách về anh hùng,đơn vị anh hùng lực lượng vũ trang,Bà mẹ Việt Nam anh hùng;tiểu thuyết về truyền thống Quân đội nhân dân.Huân chương Độc lập hạng Ba,Huân chương Quân công hạng Nhất,Huân chương chiến công hạng Nhất.Trụ sở:23 Lý Nam Đế-Hà Nội.Có chi nhánh tại TP Hồ Chí Minh.
Địa chỉ: Số 1 Đinh Lễ - 44 Tràng Tiền, Quận Hoàn Kiếm, Hà Nội
Điện thoại :
04.3936.2151 .
Fax :
04.39341591
Email :
info@savina.com.vn


text:
THÁNH ANTÔN,
(St Anthony)
ÝViện phụ, ngày 17/01
Mc 2, 1-12
Thánh Antôn, viện phụ thọ tới 105 tuổi. Một tuổi đời thật sung mãn được Chúa chúc lành. Ca nhập lễ trong ngày lễ thánh Antôn đã ca ngợi người công chính như sau:" Người công chính vươn lên tựa cây dừa tươi tốt. Lớn mạnh tựa hương bá Libăng. Ðược trồng nơi nhà Chúa. Giữa khuôn viên đền thánh Chúa ta "( Tv 91, 13-14 ).
Thánh Antôn sinh tại Cosma bên Ai Cập trong một gia đình quí phái. Thánh nhân được ấp ủ trong bầu khí ấm cúng của gia đình. Thánh nhân đã được Chúa chuẩn bị kỹ càng vì thế cha mẹ của Ngài lần lượt ra đi, Ngài phải bao bọc đứa em gái. Hai anh em luôn thương yêu nhau và nâng đỡ, giúp nhau sống giữa cuộc đời. Khỏang năm 270, một buổi sáng tới nhà thờ, thánh nhân nghe được tiếng Chúa qua đoạn Tin Mừng Mt 19, 21:" Nếu con muốn trở nên trọn lành, hãy về bán hết gia tài, phân phát cho kẻ nghèo khó". Lời Tin Mừng này đã làm cho chàng thanh niên giầu có tiu ngỉu vì chàng có lắm tiền, lắm của. Nhưng, đối với Antôn lời Phúc âm này tưởng như Chúa đang nói với chính mình, Antôn đã quyết tâm thực hiện. Thánh nhân chia ruộng đất cho những bà con nghèo khó lối xóm, bán tất cả gia sản mình đang có, phân phát tất cả cho những bà con nghèo. Antôn gửi em gái yêu quí của mình vào một cộng đồng trinh nữ, còn Ngài quyết tâm dấn bước đi theo tiếng Chúa gọi. Sau nhiều ngày vất vả, lang thang, thánh nhân đã gặp một vị tu hành và xin dựng lều gần vị khổ tu để học tập cuộc sống tu với vị tu hành ấy. Các nhân đức và cuộc sống của Ngài đã lan tỏa khắp nơi, được các bạn hữu mến chuộng. Ma quỉ luôn rình mò cám dỗ Ngài, nhưng Ngài đãÝ luôn chiến thắng chúng nhờ lời cầu nguyện và sự hy sinh của Ngài. Năm 35 tuổi, Antôn quyết tâm đi vào sa mạc để sống đời khổ tu và kết hợp hoàn toàn, mật thiết với Thiên Chúa. Tiếng tăm nhân đức và sự khôn ngoan của Ngài lan tỏa rất xa. Nhiều khách thập phương đã kéo đến xin Ngài chỉ giáo. Năm 305, thánh nhân bỏ đời ẩn tu và thiết lập các tu viện, Ngài đã qui tụ được rất nhiều môn đệ. Thánh nhân cũng ao ước được phúc tử vì đạo. Chúa muốn dùng Ngài qua cuộc sống để làm gương và hướng dẫn người khác vì thế vào năm 327, hoàng đế Maximinô DainÝ ra sắc chỉ cấm đạo công giáo. Thánh Antôn tới Alexandria động viên và khích lệ những người sắp lãnh nhận vì danh Chúa Kitô, thánh nhân đã ở lại đó cho tới khi cơn cấm cách chấm dứt. Thánh nhân dựng lều tại sườn núi Gokzin, suốt ngày tiếp khách và làm nhiều phép lạ như chữa bệnh, trừ quỉ và nói ngôn sứ .
Với một lòng yêu mến Chúa dạt dào, thánh Antôn đã làm gương cho nhiều người về đời sống thánh thiện và các nhân đức siêu việt của Người. Thánh nhân qua đời ngày 17/01/356 . Vào năm 561, xác thánh nhân được cải táng trong nhà thờ kính thánh Gioan tiền hô tại Alexandria. Các Giáo Hội Trung Ðông đã sùng kính thánh Antôn đầu tiên, tràn qua Âu Châu và Giáo Hội đã chính thức tôn phong Ngài lên bậc hiển thánh.
Lạy Chúa, Chúa đã cho thánh Antôn, viện phụ, sống một đời phi thường trong sa mạc để phụng sự Chúa. Xin Chúa nhận lời người nguyện giúp cầu thay,cho chúng con biết quên mình để một niềm yêu mến Chúa trên hết mọi sự ( Lời nguyện nhập lễ, lễ thánh Antôn, viện phụ ).

markdown:
**THÁNH ANTÔN,** **(St Anthony)**
ÝViện phụ, ngày 17/01
Mc 2, 1-12
Thánh Antôn, viện phụ thọ tới 105 tuổi. Một tuổi đời thật sung mãn được Chúa chúc lành. Ca nhập lễ trong ngày lễ thánh Antôn đã ca ngợi người công chính như sau:" Người công chính vươn lên tựa cây dừa tươi tốt. Lớn mạnh tựa hương bá Libăng. Ðược trồng nơi nhà Chúa. Giữa khuôn viên đền thánh Chúa ta "( Tv 91, 13-14 ).
Thánh Antôn sinh tại Cosma bên Ai Cập trong một gia đình quí phái. Thánh nhân được ấp ủ trong bầu khí ấm cúng của gia đình. Thánh nhân đã được Chúa chuẩn bị kỹ càng vì thế cha mẹ của Ngài lần lượt ra đi, Ngài phải bao bọc đứa em gái. Hai anh em luôn thương yêu nhau và nâng đỡ, giúp nhau sống giữa cuộc đời. Khỏang năm 270, một buổi sáng tới nhà thờ, thánh nhân nghe được tiếng Chúa qua đoạn Tin Mừng Mt 19, 21:" Nếu con muốn trở nên trọn lành, hãy về bán hết gia tài, phân phát cho kẻ nghèo khó". Lời Tin Mừng này đã làm cho chàng thanh niên giầu có tiu ngỉu vì chàng có lắm tiền, lắm của. Nhưng, đối với Antôn lời Phúc âm này tưởng như Chúa đang nói với chính mình, Antôn đã quyết tâm thực hiện. Thánh nhân chia ruộng đất cho những bà con nghèo khó lối xóm, bán tất cả gia sản mình đang có, phân phát tất cả cho những bà con nghèo. Antôn gửi em gái yêu quí của mình vào một cộng đồng trinh nữ, còn Ngài quyết tâm dấn bước đi theo tiếng Chúa gọi. Sau nhiều ngày vất vả, lang thang, thánh nhân đã gặp một vị tu hành và xin dựng lều gần vị khổ tu để học tập cuộc sống tu với vị tu hành ấy. Các nhân đức và cuộc sống của Ngài đã lan tỏa khắp nơi, được các bạn hữu mến chuộng. Ma quỉ luôn rình mò cám dỗ Ngài, nhưng Ngài đãÝ luôn chiến thắng chúng nhờ lời cầu nguyện và sự hy sinh của Ngài. Năm 35 tuổi, Antôn quyết tâm đi vào sa mạc để sống đời khổ tu và kết hợp hoàn toàn, mật thiết với Thiên Chúa. Tiếng tăm nhân đức và sự khôn ngoan của Ngài lan tỏa rất xa. Nhiều khách thập phương đã kéo đến xin Ngài chỉ giáo. Năm 305, thánh nhân bỏ đời ẩn tu và thiết lập các tu viện, Ngài đã qui tụ được rất nhiều môn đệ. Thánh nhân cũng ao ước được phúc tử vì đạo. Chúa muốn dùng Ngài qua cuộc sống để làm gương và hướng dẫn người khác vì thế vào năm 327, hoàng đế Maximinô DainÝ ra sắc chỉ cấm đạo công giáo. Thánh Antôn tới Alexandria động viên và khích lệ những người sắp lãnh nhận vì danh Chúa Kitô, thánh nhân đã ở lại đó cho tới khi cơn cấm cách chấm dứt. Thánh nhân dựng lều tại sườn núi Gokzin, suốt ngày tiếp khách và làm nhiều phép lạ như chữa bệnh, trừ quỉ và nói ngôn sứ .
Với một lòng yêu mến Chúa dạt dào, thánh Antôn đã làm gương cho nhiều người về đời sống thánh thiện và các nhân đức siêu việt của Người. Thánh nhân qua đời ngày 17/01/356 . Vào năm 561, xác thánh nhân được cải táng trong nhà thờ kính thánh Gioan tiền hô tại Alexandria. Các Giáo Hội Trung Ðông đã sùng kính thánh Antôn đầu tiên, tràn qua Âu Châu và Giáo Hội đã chính thức tôn phong Ngài lên bậc hiển thánh.
Lạy Chúa, Chúa đã cho thánh Antôn, viện phụ, sống một đời phi thường trong sa mạc để phụng sự Chúa. Xin Chúa nhận lời người nguyện giúp cầu thay,cho chúng con biết quên mình để một niềm yêu mến Chúa trên hết mọi sự ( Lời nguyện nhập lễ, lễ thánh Antôn, viện phụ ).


text:
TCCS - Hiệp định thương mại tự do (FTA viết tắt của chữ tiếng Anh Free trade agreement) về cơ bản, là hiệp định trong đó các nước tham gia ký kết thỏa thuận dành cho nhau những ưu đãi, đó là các hàng rào thương mại kể cả thuế quan và phi thuế quan đều được loại bỏ, song mỗi nước thành viên vẫn được tự do quyết định những chính sách thương mại độc lập của mình đối với các nước không phải thành viên của hiệp định.
FTA có thể là song phương (được ký kết giữa 2 nước) hoặc đa phương (ký giữa nhiều nước). Tuy nhiên, dù là song phương hay đa phương, FTA thường đem lại lợi ích rất lớn cho các nước thành viên trong việc thúc đẩy thương mại, tận dụng những lợi thế so sánh của nhau. Không những thế, do có phạm vi hợp tác rộng, FTA còn xúc tiến tự do hóa đầu tư, hợp tác chuyển giao công nghệ, hiệu suất hóa thủ tục hải quan và nhiều dịch vụ khác.
Từ những năm đầu của thập niên 90 thế kỷ XX, song song với quá trình toàn cầu hóa, chủ nghĩa khu vực phát triển mạnh mẽ cả về lượng và chất, FTA ngày càng trở thành xu hướng phổ biến đến mức dù muốn hay không các nước đều phải xoáy vào cuộc chơi. Ngay cả những nước như Mỹ, Nhật Bản, EU trước đây tỏ ra thờ ơ với FTA mà dành nhiều sự quan tâm cho WTO và hệ thống thương mại đa phương, thì nay cũng đã có sự thay đổi. Sau nhiều năm chỉ có FTA với Ca-na-đa và Mê-hi-cô trong Khu vực mậu dịch tự do Bắc Mỹ (NAFTA) và FTA song phương với I-xra-en, gần đây Mỹ đã có thêm FTA song phương với Xin-ga-po và Chi-lê (năm 2003), hiện tiếp tục đàm phán với các đối tác khác ở châu Á, Trung Mỹ... Còn Nhật Bản lần đầu tiên ký một FTA đầy đủ với Xin-ga-po (vào năm 2002), sau đó đã ký với hàng loạt các nước ASEAN khác và hiện đang đàm phán FTA song phương với Việt Nam và Thụy Sĩ. Nhật Bản cũng đã hoàn tất FTA với toàn khối ASEAN (tồn tại song song với các FTA riêng rẽ với một số thành viên của ASEAN). EU cũng không đứng ngoài cuộc. Tính đến nay, trên thế giới đã có tới vài trăm FTA được ký kết. Riêng ở châu Á, số FTA được ký giữa các nước châu Á với nhau đã tăng từ mức 3 thỏa thuận (năm 2000) lên mức 56 thỏa thuận (tính đến cuối tháng 8-2009), đáng kể phải nói đến FTA giữa ASEAN với Trung Quốc, ASEAN với Ấn Độ, Hàn Quốc, Nhật Bản... đã biến ASEAN trở thành trung tâm của một môi trường tự do thương mại rộng lớn nhất trong lịch sử thương mại của khu vực.
FTA ngày càng trở nên phổ biến bởi những lợi ích kinh tế mà nó mang lại, nhất là trong bối cảnh bế tắc của các vòng đàm phán do WTO chủ trương, khiến các nước đã phải chuyển hướng sang hợp tác song phương và liên kết khu vực nhằm tìm giải pháp cho phát triển thương mại hàng hóa và dịch vụ. Điều này lại tiếp tục dẫn tới việc những nước không tham gia FTA hoặc tham gia chậm sẽ bị gạt khỏi cuộc chơi, nên dường như FTA trở thành một xu hướng chung. Ngoài ra, tham gia FTA còn tạo cho các nước một sự “yên tâm” hơn khi có những bất ổn trong kinh tế, thương mại toàn cầu, cũng như đem lại lợi ích chính trị cho các nước tham gia qua việc nâng cao vị thế của họ trong đàm phán.
Tính đến nay, Việt Nam đã cùng các nước ASEAN ký kết và triển khai thực hiện 3 FTA là Hiệp định Khu vực thương mại tự do ASEAN (AFTA), Hiệp định Khu vực thương mại tự do ASEAN - Trung Quốc (ACFTA) và Hiệp định Khu vực thương mại tự do ASEAN - Hàn Quốc (AKFTA). Gần đây các hiệp định khác như Hiệp định đối tác kinh tế toàn diện ASEAN - Nhật Bản (AJCEP), Hiệp định thương mại tự do ASEAN - Niu Di-lân, ASEAN - Ấn Độ... cũng đều đã hoàn tất. Về FTA song phương, cuối năm 2008 Việt Nam đã đàm phán với Chi-lê và đã tiến hành được đến vòng đàm phán thứ 3, dự kiến sắp tới sẽ ký kết nhằm đẩy nhanh thương mại song phương giữa hai nước.
Nhìn chung mục đích ký kết FTA của Việt Nam cũng giống như các nước khác là mong muốn tăng cường xuất khẩu, tạo sức hấp dẫn để thu hút vốn đầu tư nước ngoài, tăng cường vị thế và gây dựng hình ảnh đất nước trên trường quốc tế. FTA còn có tác dụng gia tăng các sức ép để đổi mới, nâng cao năng lực cạnh tranh. Tuy nhiên, sự đa dạng và phức tạp của quy tắc xuất xứ trong các FTA có thể sẽ gây nhiều khó khăn cho các doanh nghiệp trong quá trình thực hiện FTA. Sự tương đồng về lợi thế cạnh tranh, cũng như chênh lệch về trình độ phát triển của các nước tham gia cũng dễ dẫn đến sự cạnh tranh gay gắt hoặc là có các rào cản lớn để các bên đàm phán được một FTA toàn diện.
Chính vì vậy, Việt Nam rất cần phải nghiên cứu kỹ, có chiến lược về vấn đề này trước xu hướng gia tăng FTA trên thế giới, như: tiêu chuẩn lựa chọn đối tác, mức độ và sự chuẩn bị của các ngành để tham gia FTA, việc chuẩn bị các nguồn lực.../.
© Bản quyền thuộc về Tạp chí Cộng Sản.
Địa chỉ: Số 28, Trần Bình Trọng - TP.Hà Nội.
Điện thoại: 04 39429753 - Fax: 04 39429754
Email: baodientu@tccs.org.vn
Designed by ACOMM
Cơ quan Thường trực tại miền Trung - Tây Nguyên:
Số 26 Trần Phú, thành phố Đà Nẵng
Điện thoại: 080 51301; Fax: 080 51 303
Cơ quan Thường trực tại miền Nam:
Số 19 Phạm Ngọc Thạch, phường 6, quận 3, Thành phố Hồ Chí Minh
Điện thoại: 080 84083; Fax: 080 84081
Văn phòng đại diện tại thành phố Cần Thơ
Số 86 Nguyễn Trãi, phường Cái Khế,quận Ninh Kiều, TP Cần Thơ
Điện thoại/Fax: (0710)6250868
Giấy phép số 259/GP-TTĐT ngày 08-12-2010 của Bộ Thông tin và Truyền thông về thiết lập trang thông tin điện tử tổng hợp trên Internet.


text:
Điều trị triệt để bệnh herpes sinh dục
Xin cho em hỏi:Bệnh herpes sinh dục có chữa hết triệt để được không?trong khoảng 1 năm nay cứ khoảng 2 đến 3 tháng là tôi bị nổi mụn nước ngay dương vât....sau đó thành chùm rồi khô...mỗi lần bị như vậy ngứa và rất khó chiu.....em có đến bác sĩ chuyện khoa da liễu chữa hết nhưng lâu lâu vẫn tái phat.Một năm có khi bị tới 5 lần,xin cho tôi hỏi có cách nào chữa trị khỏi hẳn không. Thành thật cảm ơn .(tran trung nghi)
Trả lời: Herpes sinh dục là một bệnh có khả năng lây nhiễm qua đường tình dục cao. Nguyên nhân là do virus Herpes simplex (HSV). Các virus này xâm nhập vào cơ thể qua những lỗ hổng trên da hoặc trên màng nhầy của bạn.
Bệnh đặc trưng với những triệu chứng như đau, ngứa, khó chịu ở vùng cơ quan sinh dục. Đường lây truyền chủ yếu là do quan hệ tình dục. Virus này hầu như không thể lây truyền qua bàn cầu ngồi, khăn tắm hoặc những vật sử dụng chung với người bị nhiễm, do chúng rất dễ bị chết trong vòng 1 giờ sau khi rời khỏi cơ thể ký chủ.
HSV gây nhiễm ở cả nam và nữ. Chưa có liệu trình điều trị cụ thể cho các trường hợp nhiễm virus tái phát, thường gây ra những nỗi đau khổ tế nhị cho người mắc bệnh. Nhiễm Herpes sinh dục hầu như luôn luôn có liên quan với quan hệ tình dục. Nếu bạn hoặc người phối ngẫu bị nhiễm HSV, bạn có thể kiểm soát được sự lây truyền của virus bằng cách thực hiện các bước bảo vệ cho chính bạn và người phối ngẫu của bạn.
Dấu hiệu và triệu chứng :
Đau và ngứa da vùng cơ quan sinh sinh dục.
Những mụn nước, bọng nước hoặc những vết loét da.
Các dấu hiệu khởi đầu là đau và ngứa, thường xảy ra sau 2-7 ngày sau khi nhiễm virus. Vài giờ đến vài ngày sau giai đoạn đầu này thì vết loé bắt đầu xuất hiện. Ở nữ, vết loét có thể xuất hiện ở vùng âm đạo, cơ quan sinh dục ngoài, mông, hậu môn, hoặc bên trong cổ tử cung. Ở nam, vết loét có thể ở dương vật, bìu, mông, hậu môn, đùi, niệu đạo,…
Các vết loét gây ra đau đớn rất nhiều khi đi tiểu. Vết loét đầu tiên chỉ là một chỗ sưng đỏ nhỏ, mềm, đau, rồi trở nên mọng nước trong vòng một vài ngày. Sau đó chúng vỡ miệng ra trở thành vết loét, gây rỉ dịch hoặc chảy máu. Sau 3-4 ngày vết loét đóng mài (vảy) và dần dần lành lại. Bạn phải chịu đựng những đau đớn và nhiều cảm giác khó chịu khác ở vùng sinh dục cho đến khi sạch virus. Trong giai đoạn bộc phát, có thể có các triệu chứng nhiễm virus thông thường giống bệnh cúm, gồm sốt, nhức đầu và nổi hạch bẹn.
Một số yếu tố có thể gây bộc phát trở lại, bao gồm:
- Stress
- Kinh nguyệt (nếu là nữ, tất nhiên)
- Suy nhược cơ thể
- Bệnh tật
- Kích ứng hay dị ứng da
- Phẫu thuật
- Quan hệ tình dục quá mạnh
Một số trường hợp, virus nhiễm vào rất hoạt động và có thể lây truyền ngay cả khi không hề có triệu chứng. Tuy nhiên trường hợp này không phổ biến lắm.
Nguyên nhân
Có hai loại virus Herpes simplex. HSV type 1 (HSV-1) gây tổn thương vùng da và niêm mạc miệng, môi. HSV type 2 (HSV-2) là loại gây Herpes sinh dục. Virus lây truyền trực tiếp từ da qua da trong quá trình quan hệ tình dục. HSV-2 có tính lây nhiễm rất cao nếu bạn đang có những vết loét do herpes trên da (giai đoạn hoạt động), nhưng nếu bạn không ở giai đoạn này vẫn có thể lây nhiễm cho người khác. Nhiễm HSV-2 rất thường gặp trong cộng đồng. Hàng triệu người Việt nam hiện nay đang bị nhiễm Herpes sinh dục, trong đó có không ít người không có triệu chứng hoặc vì lý do tế nhị không đến khám và chẩn đoán ở bệnh viện.
Biến chứng
Ở người trưởng thành, ngoài vết loét da, Herpes sinh dục không gây ra các biến chứng gì nặng nề khác. Khi mẹ mang thai bị Herpes sinh dục với các vết loét da có thể lây qua cho con trong quá trình đứa trẻ được sinh ra qua ngã âm đạo. Trường hợp này, Herpes sinh dục có thể gây tổn thương não, mờ mắt hoặc tử vong cho trẻ. Nhiễm Herpes sinh dục từ mẹ qua con thường gặp hơn nếu mẹ bị nhiễm và bộc phát lần đầu khi mang thai hoặc đang ở trong giai đoạn hoạt động của herpes sinh dục.
Điều trị
Hiện chưa có liệu trình điều trị cho herpes sinh dục. Tuy nhiên có thể dùng thuốc ức chế virus như Acyclovir (Zovirax), Famciclorvir (Famvir) và Valacyclovir (Valtrex) có thể giúp vết loét lành nhanh chóng hơn cũng như hạn chế tái phát. Có thể dùng trong đợt bộc phát hoặc sau khi bộc phát (phòng ngừa đợt kế tiếp).
Phòng ngừa
Tương tự như với các bệnh lây truyền qua đường tình dục khác. Mấu chốt là ở chỗ tránh sự lây lan của virus HSV, nhất là trong giai đoạn có sang thương loét. Một khi bị herpes sinh dục, bạn sẽ có nguy cơ cao mắc các bệnh lây truyền qua đường tình dục khác, kể cả HIV và AIDS.
Để phòng tránh Herpes sinh dục, tốt nhất là bạn nên quan hệ tình dục với chỉ một người chắc chắn không bị nhiễm. Nếu không, bạn nên:
- Dùng bao cao su khi quan hệ tình dục.
- Quan hệ tình dục an toàn trong những lúc không có triệu chứng.
- Giới hạn số người phối ngẫu.
Hãy cẩn thận
Nếu bạn đang bị Herpes sinh dục thể hoạt động, cần:
- Tránh quan hệ tình dục
- Giữ cho vết loét sạch sẽ và khô ráo
- Tránh đụng chạm đến vết loét, và rửa tay kỹ sau khi tiếp xúc với vết loét.
Hãy ghi nhớ rằng, virus cũng có thể lây truyền gay cả khi bạn hoàn toàn không có triệu chứng bệnh. Hãy đợi đến khi các vết loét hoàn toàn lành lặn trước khi quan hệ tình dục trở lại. Tốt nhất là nên bảo vệ bằng bao cao su.
Bạn nên kiên trì điều trị theo những hướng dẫn ở trên nhằm chữa triệt để như bạn mong muốn!
Chúc bạn năm mới an khang, hạnh phúc!
Lưu ý: Chữa bệnh theo chỉ định của Bác sĩ

markdown:
# Điều trị triệt để bệnh herpes sinh dục
Xin cho em hỏi:Bệnh herpes sinh dục có chữa hết triệt để được không?trong khoảng 1 năm nay cứ khoảng 2 đến 3 tháng là tôi bị nổi mụn nước ngay dương vât....sau đó thành chùm rồi khô...mỗi lần bị như vậy ngứa và rất khó chiu.....em có đến bác sĩ chuyện khoa da liễu chữa hết nhưng lâu lâu vẫn tái phat.Một năm có khi bị tới 5 lần,xin cho tôi hỏi có cách nào chữa trị khỏi hẳn không. Thành thật cảm ơn .(tran trung nghi)
** Trả lời: ** Herpes sinh dục là một bệnh có khả năng lây nhiễm qua đường tình dục cao. Nguyên nhân là do virus Herpes simplex (HSV). Các virus này xâm nhập vào cơ thể qua những lỗ hổng trên da hoặc trên màng nhầy của bạn.
Bệnh đặc trưng với những triệu chứng như đau, ngứa, khó chịu ở vùng cơ quan sinh dục. Đường lây truyền chủ yếu là do quan hệ tình dục. Virus này hầu như không thể lây truyền qua bàn cầu ngồi, khăn tắm hoặc những vật sử dụng chung với người bị nhiễm, do chúng rất dễ bị chết trong vòng 1 giờ sau khi rời khỏi cơ thể ký chủ.
HSV gây nhiễm ở cả nam và nữ. Chưa có liệu trình điều trị cụ thể cho các trường hợp nhiễm virus tái phát, thường gây ra những nỗi đau khổ tế nhị cho người mắc bệnh. Nhiễm Herpes sinh dục hầu như luôn luôn có liên quan với quan hệ tình dục. Nếu bạn hoặc người phối ngẫu bị nhiễm HSV, bạn có thể kiểm soát được sự lây truyền của virus bằng cách thực hiện các bước bảo vệ cho chính bạn và người phối ngẫu của bạn.
**Dấu hiệu và triệu chứng :**
Đau và ngứa da vùng cơ quan sinh sinh dục.
Những mụn nước, bọng nước hoặc những vết loét da.
Các dấu hiệu khởi đầu là đau và ngứa, thường xảy ra sau 2-7 ngày sau khi nhiễm virus. Vài giờ đến vài ngày sau giai đoạn đầu này thì vết loé bắt đầu xuất hiện. Ở nữ, vết loét có thể xuất hiện ở vùng âm đạo, cơ quan sinh dục ngoài, mông, hậu môn, hoặc bên trong cổ tử cung. Ở nam, vết loét có thể ở dương vật, bìu, mông, hậu môn, đùi, niệu đạo,…
Các vết loét gây ra đau đớn rất nhiều khi đi tiểu. Vết loét đầu tiên chỉ là một chỗ sưng đỏ nhỏ, mềm, đau, rồi trở nên mọng nước trong vòng một vài ngày. Sau đó chúng vỡ miệng ra trở thành vết loét, gây rỉ dịch hoặc chảy máu. Sau 3-4 ngày vết loét đóng mài (vảy) và dần dần lành lại. Bạn phải chịu đựng những đau đớn và nhiều cảm giác khó chịu khác ở vùng sinh dục cho đến khi sạch virus. Trong giai đoạn bộc phát, có thể có các triệu chứng nhiễm virus thông thường giống bệnh cúm, gồm sốt, nhức đầu và nổi hạch bẹn.
**Một số yếu tố có thể gây bộc phát trở lại, bao gồm:**
- Stress
- Kinh nguyệt (nếu là nữ, tất nhiên)
- Suy nhược cơ thể
- Bệnh tật
- Kích ứng hay dị ứng da
- Phẫu thuật
- Quan hệ tình dục quá mạnh
Một số trường hợp, virus nhiễm vào rất hoạt động và có thể lây truyền ngay cả khi không hề có triệu chứng. Tuy nhiên trường hợp này không phổ biến lắm.
**Nguyên nhân**
Có hai loại virus Herpes simplex. HSV type 1 (HSV-1) gây tổn thương vùng da và niêm mạc miệng, môi. HSV type 2 (HSV-2) là loại gây Herpes sinh dục. Virus lây truyền trực tiếp từ da qua da trong quá trình quan hệ tình dục. HSV-2 có tính lây nhiễm rất cao nếu bạn đang có những vết loét do herpes trên da (giai đoạn hoạt động), nhưng nếu bạn không ở giai đoạn này vẫn có thể lây nhiễm cho người khác. Nhiễm HSV-2 rất thường gặp trong cộng đồng. Hàng triệu người Việt nam hiện nay đang bị nhiễm Herpes sinh dục, trong đó có không ít người không có triệu chứng hoặc vì lý do tế nhị không đến khám và chẩn đoán ở bệnh viện.
**Biến chứng**
Ở người trưởng thành, ngoài vết loét da, Herpes sinh dục không gây ra các biến chứng gì nặng nề khác. Khi mẹ mang thai bị Herpes sinh dục với các vết loét da có thể lây qua cho con trong quá trình đứa trẻ được sinh ra qua ngã âm đạo. Trường hợp này, Herpes sinh dục có thể gây tổn thương não, mờ mắt hoặc tử vong cho trẻ. Nhiễm Herpes sinh dục từ mẹ qua con thường gặp hơn nếu mẹ bị nhiễm và bộc phát lần đầu khi mang thai hoặc đang ở trong giai đoạn hoạt động của herpes sinh dục.
**Điều trị**
Hiện chưa có liệu trình điều trị cho herpes sinh dục. Tuy nhiên có thể dùng thuốc ức chế virus như Acyclovir (Zovirax), Famciclorvir (Famvir) và Valacyclovir (Valtrex) có thể giúp vết loét lành nhanh chóng hơn cũng như hạn chế tái phát. Có thể dùng trong đợt bộc phát hoặc sau khi bộc phát (phòng ngừa đợt kế tiếp).
**Phòng ngừa**
Tương tự như với các bệnh lây truyền qua đường tình dục khác. Mấu chốt là ở chỗ tránh sự lây lan của virus HSV, nhất là trong giai đoạn có sang thương loét. Một khi bị herpes sinh dục, bạn sẽ có nguy cơ cao mắc các bệnh lây truyền qua đường tình dục khác, kể cả HIV và AIDS.
Để phòng tránh Herpes sinh dục, tốt nhất là bạn nên quan hệ tình dục với chỉ một người chắc chắn không bị nhiễm. Nếu không, bạn nên:
- Dùng bao cao su khi quan hệ tình dục.
- Quan hệ tình dục an toàn trong những lúc không có triệu chứng.
- Giới hạn số người phối ngẫu.
**Hãy cẩn thận**
Nếu bạn đang bị Herpes sinh dục thể hoạt động, cần:
- Tránh quan hệ tình dục
- Giữ cho vết loét sạch sẽ và khô ráo
- Tránh đụng chạm đến vết loét, và rửa tay kỹ sau khi tiếp xúc với vết loét.
Hãy ghi nhớ rằng, virus cũng có thể lây truyền gay cả khi bạn hoàn toàn không có triệu chứng bệnh. Hãy đợi đến khi các vết loét hoàn toàn lành lặn trước khi quan hệ tình dục trở lại. Tốt nhất là nên bảo vệ bằng bao cao su.
Bạn nên kiên trì điều trị theo những hướng dẫn ở trên nhằm chữa triệt để như bạn mong muốn!
Chúc bạn năm mới an khang, hạnh phúc!
![ Thuốc biệt dược](http://img.thuocbietduoc.com.vn/images/news/logotbd.jpg)
Lưu ý: Chữa bệnh theo chỉ định của Bác sĩ