L IM ĐU ỞẦ
2.2.1 Cỏc ràng b uc Not-Null ộ
M t ràng bu c đ n gi n g n k t v i m t thu c tớnh là NOT NULL. Hi uộ ộ ơ ả ắ ế ớ ộ ộ ệ qu c a nú là c m cỏc b mà trong đú giỏ tr c a thu c tớnh này là NULL.ả ủ ấ ộ ị ủ ộ
Ràng bu c độ ược mụ t b ng cỏc t khoỏ NOT NULL đi sau mụ t c aả ằ ừ ả ủ thu c tớnh trong l nh CREATE TABLEộ ệ
Vớ d 2.6ụ : Gi s quan h D ÁN đũi h i thu c tớnh Mós DV là xỏcả ử ệ Ự ỏ ộ ố đ nh. Khi đú ta cú mụ t c a thu c tớnh trong dũng 5) c a vớ d 2.4 đị ả ủ ộ ủ ụ ược thay đ i nh sau:ổ ư
5) Mós ĐV INT REFERENCES Đ NV (Mós ĐV) NOT NULLố Ơ Ị ố Thay đ i này cú nhi u h qu , ch ng h n:ổ ề ệ ả ẳ ạ
- Chỳng ta khụng th thờm vào quan h Studio m t b giỏ tr b ng cỏchể ệ ộ ộ ị ằ ch ra ba thu c tớnh TờnDA, Mós DA, Đ ađi mDA b i vỡ b thờm vào sỉ ộ ố ị ể ở ộ ẽ cú giỏ tr NULL cho thành ph n Mós ĐV.ị ầ ố
. Chỳng ta khụng th s d ng chớnh sỏch set-null trong hoàn c nh gi ngể ử ụ ả ố nh dũng 6) c a vớ d 2.4, b i vỡ nú yờu c u h th ng gỏn c giỏ tr NULLư ủ ụ ở ầ ệ ố ả ị cho Mós ĐV đ b o toàn ràng bu c khoỏ ngoài.ố ể ả ộ
2.2.2 Cỏc ràng bu c ki m tra (CHECK) d a trờn thu c tớnhộ ể ự ộ
Cỏc ràng bu c ph c t p h n cú th g n v i m t mụ t thu c tớnh b ng tộ ứ ạ ơ ể ắ ớ ộ ả ộ ằ ừ khoỏ CHECK sau đú là m t đi u ki n ph i tho món đ i v i m i giỏ trộ ề ệ ả ả ố ớ ọ ị c a thu c tớnh này. Đi u ki n đủ ộ ề ệ ược đ t trong d u ngo c. Trờn th c t ,ặ ấ ặ ự ế m t ràng bu c CHECK d a trờn thu c tớnh gi ng nh m t h n ch đ nộ ộ ự ộ ố ư ộ ạ ế ơ gi n trờn cỏc giỏ tr , nh là vi c li t kờ cỏc giỏ tr h p th c ho c là m tả ị ư ệ ệ ị ợ ứ ặ ộ b t phấ ương trỡnh s h c. Tuy nhiờn, v nguyờn t c, đi u ki n cú th làố ọ ề ắ ề ệ ể b t kỳ cỏi gỡ cú th đi sau WHERE trong m t truy v n SQL. Đi u ki nấ ể ộ ấ ề ệ này cú th tham chi u đ n thu c tớnh b ràng bu c b ng cỏch s d ng tờnể ế ế ộ ị ộ ằ ử ụ c a thu c tớnh đú trong bi u th c c a nú. Tuy nhiờn, n u đi u ki n thamủ ộ ể ứ ủ ế ề ệ chi u đ n cỏc quan h khỏc ho c cỏc thu c tớnh khỏc c a quan h thỡ quanế ế ệ ặ ộ ủ ệ h ph i đệ ả ược đ a vào trong m nh đ FROM c a m t truy v n con (ngayư ệ ề ủ ộ ấ c n u quan h đả ế ệ ược tham chi u đ n là m t quan h ch a thu c tớnh bế ế ộ ệ ứ ộ ị ki m tra).ể
M t ràng bu c CHECK d a trờn thu c tớnh độ ộ ự ộ ược ki m tra khi m t b nàoể ộ ộ đ y nh n m t giỏ tr m i cho thu c tớnh này. Giỏ tr m i cú th đấ ậ ộ ị ớ ộ ị ớ ể ược đ aư vào b ng m t s a đ i đ i v i b ho c cú th là m t ph n c a b đằ ộ ử ổ ố ớ ộ ặ ể ộ ầ ủ ộ ược thờm vào. N u giỏ tr m i vi ph m ràng bu c thỡ phộp s a đ i b lo i b .ế ị ớ ạ ộ ử ổ ị ạ ỏ
Chỳng ta s th y trong vớ d 2.7, ràng bu c CHECK d a trờn thu c tớnh sẽ ấ ụ ộ ự ộ ẽ khụng được ki m tra n u m t s a đ i c s d li u khụng làm thay đ iể ế ộ ử ổ ơ ở ữ ệ ổ giỏ tr c a thu c tớnh g n v i ràng bu c. H n ch đú cú th d n đ n ràngị ủ ộ ắ ớ ộ ạ ế ể ẫ ế bu c tr nờn b vi ph m. Trộ ở ị ạ ước tiờn ta hóy xột m t vớ d đ n gi n vộ ụ ơ ả ề ki m tra d a trờn thu c tớnh. ể ự ộ
Vớ d 2.7ụ Gi s chỳng ta mu n đũi h i r ng cỏc Mó s ĐV ch g m cúả ử ố ỏ ằ ố ỉ ồ m t ch s . Ta cú th s a đ i dũng 5) c a vớ d 2.4, m t mụ t c a lộ ữ ố ể ử ổ ủ ụ ộ ả ủ ược đ đ i v i quan h D ÁN nh sau:ồ ố ớ ệ Ự ư
4) Mós DA INT REFERENCES Đ NV (Mós DA)ố Ơ Ị ố CHECK (Mós DA < 10) ố
Vi c đ c p đ n cỏc thu c tớnh khỏc c a quan h ho c cỏc quan h khỏcệ ề ậ ế ộ ủ ệ ặ ệ trong đi u ki n là đề ệ ược phộp. Đ làm đi u đú, trong đi u ki n ph i cúể ề ề ệ ả truy v n con. Nh chỳng ta đó núi, đi u ki n cú th là b t kỳ cỏi gỡ cú thấ ư ề ệ ể ấ ể đi sau WHERE trong m t l nh select-from-where c a SQL. Tuy nhiờn,ộ ệ ủ chỳng ta c n nh n th y r ng vi c ki m tra ràng bu c ch đầ ậ ấ ằ ệ ể ộ ỉ ược k t h pế ợ v i thu c tớnh c n ki m tra ch khụng ph i v i m i quan h ho c thu cớ ộ ầ ể ứ ả ớ ỗ ệ ặ ộ tớnh k ra trong ràng bu c. K t qu là m t đi u ki n ph c t p cú th trể ộ ế ả ộ ề ệ ứ ạ ể ở thành sai n u m t ph n t nào đú khỏc v i thu c tớnh c n ki m tra thayế ộ ầ ử ớ ộ ầ ể đ i…ổ
Vớ d 2.8ụ Chỳng ta cú th gi thi t r ng ta cú th thay th m t ràng bu cể ả ế ằ ể ế ộ ộ toàn v n tham chi u b ng m t ràng bu c CHECK d a trờn thu c tớnh đũiẹ ế ằ ộ ộ ự ộ h i s t n t i c a giỏ tr đỏ ự ồ ạ ủ ị ược tham chi u. Sau đõy là m t s c g ng saiế ộ ự ố ắ l m nh m thay th đũi h i r ng giỏ tr c a Mós DA trong m t bầ ằ ế ỏ ằ ị ủ ố ộ ộ (TờnDA, Mós DA, Đ ađi mDA, Mós ĐV) c a quan h D ÁN ph i xu tố ị ể ố ủ ệ Ự ả ấ hi n trong thành ph n Mós ĐV c a m t b nào đ y c a quan hệ ầ ố ủ ộ ộ ấ ủ ệ Đ NV . Gi s dũng 5) c a vớ d 2.4 đƠ Ị ả ử ủ ụ ược thay th b ng:ế ằ
4) Mós ĐV INT CHECK (Mós ĐV IN(SELECT Mós ĐV FROMố ố ố Đ NV ) Ơ Ị
L nh này là m t ràng bu c CHECK d a trờn thu c tớnh h p l nh ng taệ ộ ộ ự ộ ợ ệ ư hóy xem xột hi u qu c a nú. ệ ả ủ
• N u ta c g ng chốn m t b m i vào D ÁN và b đú cú giỏ tr c aế ố ắ ộ ộ ớ Ự ộ ị ủ Mós ĐV khụng là mó s c a m t đ n v nào c , khi đú phộp chốn bố ố ủ ộ ơ ị ả ị lo i b .ạ ỏ
• N u ta c g ng c p nh t thành ph n Mós ĐV c a m t b D ÁN, vàế ố ắ ậ ậ ầ ố ủ ộ ộ Ự giỏ tr m i khụng ph i là m t giỏ tr c a thu c tớnh Mós ĐV trong m tị ớ ả ộ ị ủ ộ ố ộ b nào c c a Đ NV , phộp c p nh t b lo i b . ộ ả ủ Ơ Ị ậ ậ ị ạ ỏ
• Tuy nhiờn, n u chỳng ta thay đ i quan h Đ NV b ng cỏch lo i bế ổ ệ Ơ Ị ằ ạ ỏ m t b giỏ tr , thay đ i đú là khụng nhỡn th y đ i v i ràng bu cộ ộ ị ổ ấ ố ớ ộ CHECK trờn. Nh v y, phộp lo i b đở ư ậ ạ ỏ ược ch p nh n m c dự ràngấ ậ ặ bu c CHECK d a vào thu c tớnh trờn Mós ĐV bõy gi b vi ph m.ộ ự ộ ố ờ ị ạ
2.2.3 Cỏc ràng bu c ki m tra (CHECK)d a trờn b giỏ tr .ộ ể ự ộ ị
Đ khai bỏo m t ràng bu c trờn cỏc b c a m t b ng R, khi chỳng ta đ nhể ộ ộ ộ ủ ộ ả ị nghĩa b ng đú b ng l nh CREATE TABLE, chỳng ta cú th thờm vào danhả ằ ệ ể sỏch cỏc khai bỏo thu c tớnh, khoỏ và khoỏ ngoài t khoỏ CHECK theo sauộ ừ là m t đi u ki n đ t trong d u ngo c. Đi u ki n này cú th là b t c cỏiộ ề ệ ặ ấ ặ ề ệ ể ấ ứ gỡ cú th xu t hi n trong m nh đ WHERE. Nú để ấ ệ ệ ề ược cài đ t nh là m tặ ư ộ đi u ki n v m t b trong b ng R, và cỏc thu c tớnh c a R cú th đề ệ ề ộ ộ ả ộ ủ ể ược tham chi u đ n b ng tờn trong bi u th c này. Tuy nhiờn, cũng nh đ i v iế ế ằ ể ứ ư ố ớ cỏc ràng bu c CHECK d a trờn thu c tớnh, đi u ki n cũng cú th đ c pộ ự ộ ề ệ ể ề ậ đ n cỏc quan h khỏc ho c cỏc b giỏ tr khỏc c a cựng quan h R trongế ệ ặ ộ ị ủ ệ ở cỏc truy v n con.ấ
Đi u ki n c a m t ràng bu c CHECK d a trờn b đề ệ ủ ộ ộ ự ộ ược ki m tra m i khiể ỗ m t b độ ộ ược chốn vào R và m i khi m t b c a R đỗ ộ ộ ủ ượ ậc c p nh t và đậ ược đỏnh giỏ đ i v i b đố ớ ộ ượ ậc c p nh t ho c b m i đậ ặ ộ ớ ược chốn vào. N u đi uế ề ki n là sai đ i v i b đú thỡ ràng bu c b vi ph m và phộp chốn ho c phộpệ ố ớ ộ ộ ị ạ ặ c p nh t sinh ra s vi ph m đú s b lo i b . Tuy nhiờn, n u đi u ki n đậ ậ ự ạ ẽ ị ạ ỏ ế ề ệ ề c p đ n m t quan h nào đú (th m chớ đ n chớnh R) trong m t truy v nậ ế ộ ệ ậ ế ộ ấ con, và m t thay đ i đ i v i quan h này gõy ra vi c đi u ki n tr thànhộ ổ ố ớ ệ ệ ề ệ ở sai đ i v i m t b nào đú c a R thỡ ki m tra khụng ngăn c m thay đ i đú.ố ớ ộ ộ ủ ể ấ ổ Nh v y, gi ng nh m t CHECK d a trờn thu c tớnh, m t CHECK d aư ậ ố ư ộ ự ộ ộ ự trờn b là khụng th y độ ấ ược đ i v i cỏc quan h khỏc. ố ớ ệ
M c dự cỏc ki m tra d a trờn b cú th g m cỏc đi u ki n r t ph c t pặ ể ự ộ ể ồ ề ệ ấ ứ ạ nh ng nờn trỏnh trư ường h p đú b i vỡ nú cú th b vi ph m dợ ở ể ị ạ ưới cỏc đi uề ki n nào đ y. N u cỏc ki m tra d a trờn b ch ch a cỏc thu c tớnh c aệ ấ ế ể ự ộ ỉ ứ ộ ủ b c n ki m tra thỡ nú luụn luụn đỳng.ộ ầ ể
Vớ d 2.9ụ Chỳng ta vi t l nh CREATE TABLE đ i v i quan hế ệ ố ớ ệ GIÁOVIấN, trong đú ta thờm vào m t ràng bu c: n u m t giỏo viờn làộ ộ ế ộ nam gi i thỡ tờn c a anh ta khụng đớ ủ ược b t đ u b ng “Ms.”:ắ ầ ằ
1) CREATE TABLE GIÁOVIấN ( 2) Tờn CHAR(30) PRIMARY KEY, 3) Đ ach VARCHAR(255),ị ỉ
4) Gi itớnh CHAR(1),ớ 5) Ngàysinh DATE,
6) CHECK (Gi itớnh = ‘F’ OR Tờn NOT LIKE ‘Ms.%’));ớ
Dũng 6) trờn mụ t ràng bu c. Đi u ki n c a ràng bu c này là đỳng đ iở ả ộ ề ệ ủ ộ ố v i cỏc giỏo viờn n ho c cỏc giỏo viờn khỏc cú tờn khụng b t đ u b ngớ ữ ặ ắ ầ ằ ‘Ms.’. Cỏc b làm cho đi u ki n tr thành sai là cỏc b cú gi i tớnh là namộ ề ệ ở ộ ớ và tờn b t đ u b ng ‘Ms.’. ắ ầ ằ
2.3 S A Đ I CÁC RÀNG BU CỬ Ổ Ộ
Cú th thờm, s a đ i, ho c lo i b cỏc ràng bu c t i m i th i đi m.ể ử ổ ặ ạ ỏ ộ ạ ọ ờ ể Cỏch di n đ t cỏc s a đ i đú ph thu c vào vi c ràng bu c liờn quan đ nễ ạ ử ổ ụ ộ ệ ộ ế m t thu c tớnh, m t b giỏ tr , m t b ng ho c m t lộ ộ ộ ộ ị ộ ả ặ ộ ược đ c s d li u.ồ ơ ở ữ ệ
2.3.1 Đ t tờn cho cỏc ràng bu c ặ ộ
Đ s a đ i ho c xoỏ m t ràng bu c đang t n t i đi u c n thi t là ràngể ử ổ ặ ộ ộ ồ ạ ề ầ ế bu c ph i cú m t tờn. Đ làm đi u đú, chỳng ta đ t trộ ả ộ ể ề ặ ước ràng bu c tộ ừ khoỏ CONSTRAINT và m t tờn cho ràng bu c này. ộ ộ
Vớ d 2.10ụ :
Tờn CHAR(30) CONSTRAINT Tờnlàkhúa PRIMARY KEY, Gi itớnh CHAR(1) CONSTRAINT Giỏ tr GTớ ị
CONSTRAINT Tờnđỳng
CHECK (Gi itớnh = ‘F’ OR Tờn NOT LIKE ‘Ms.%’),ớ
2.3.2 S a đ i cỏc ràng bu c trờn cỏc b ngử ổ ộ ả
Trong ph n trầ ước chỳng ta đó núi r ng ta cú th chuy n vi c ki m traằ ể ể ệ ể m t ràng bu c t t c kh c (immediate) sang ch m (deferred) v i l nhộ ộ ừ ứ ắ ậ ớ ệ SET CONSTRAINT. Cỏc thay đ i khỏc đ i v i cỏc ràng bu c đổ ố ớ ộ ược th cự hi n v i l nh ALTER TABLE. Chỳng ta cũng đó s d ng l nh này trongệ ớ ệ ử ụ ệ ph n trầ ước đ thờm ho c lo i b cỏc thu c tớnh.ể ặ ạ ỏ ộ
Cỏc l nh đú cũng cú th đệ ể ượ ử ục s d ng đ s a đ i cỏc ràng bu c. ALTERể ử ổ ộ TABLE được s d ng đ i v i c hai ki m tra: ki m tra d a trờn thu cử ụ ố ớ ả ể ể ự ộ tớnh và ki m tra d a trờn b . Chỳng ta cú th d ng m t ràng bu c v i tể ự ộ ể ừ ộ ộ ớ ừ khoỏ DROP và tờn c a ràng bu c b d ng. Chỳng ta cũng cú th thờm m tủ ộ ị ừ ể ộ ràng bu c v i t khoỏ ADD, ti p theo là ràng bu c độ ớ ừ ế ộ ược thờm vào. Tuy nhiờn, c n đ ý r ng chỳng ta ch cú th thờm m t ràng bu c vào m tầ ể ằ ỉ ể ộ ộ ộ b ng khi ràng bu c đú tho món đ i v i tr ng thỏi hi n t i c a b ng.ả ộ ả ố ớ ạ ệ ạ ủ ả Vớ d 2.11ụ : Ba l nh sau đõy làm d ng cỏc ràng bu c đ i v i quan hệ ừ ộ ố ớ ệ GIÁOVIấN:
ALTER TABLE GIÁOVIấN DROP CONSTRAINT Tờnlàkhúa ; ALTER TABLE GIÁOVIấN DROP CONSTRAINT Giỏtr GT ;ị ALTER TABLE GIÁOVIấN DROP CONSTRAINT Tờnđỳng ;
Bõy gi , gi s ta mu n khụi ph c l i cỏc ràng bu c đú, ta vi t cỏc l nhờ ả ử ố ụ ạ ộ ế ệ sau:
ALTER TABLE GIÁOVIấN ADD CONSTRAINT Tờnlàkhúa PRIMARY KEY (Tờn);
ALTER TABLE GIÁOVIấN ADD CONSTRAINT Giỏtr GTị CHECK (Gi itớnh IN (‘F’, ‘M’));ớ
ALTER TABLE GIÁOVIấN ADD CONSTRAINT RightTitle CHECK (Gi itớnh = ‘F’ OR Tờn NOT LIKE ‘Ms.%’ ;ớ
Cỏc ràng bu c này tr thành cỏc ràng bu c d a trờn b ch khụng cũn làộ ở ộ ự ộ ứ cỏc ràng bu c d a trờn thu c tớnh.ộ ự ộ 2.4 CÁC RÀNG BU C M C LỘ Ứ ƯỢC Đ VÀ CÁCỒ TRIGGER Cỏc d ng ph n t tớch c c m nh m nh t trong SQL khụng k t h p v iạ ầ ử ự ạ ẽ ấ ế ợ ớ cỏc b ho c cỏc thành ph n c a cỏc b c th . Cỏc ph n t này độ ặ ầ ủ ộ ụ ể ầ ử ược g iọ là cỏc kh ng đ nh (assertion) và cỏc trigger, chỳng là m t thành ph n c aẳ ị ộ ầ ủ lược đ c s d li u, ngang hàng v i cỏc quan h và cỏc khung nhỡn. ồ ơ ở ữ ệ ớ ệ . M t kh ng đ nh là m t bi u th c SQL cú giỏ tr lụ gic, nú ph i đỳng t iộ ẳ ị ộ ể ứ ị ả ạ m i th i đi m.ọ ờ ể
. M t trigger là m t lo t hành đ ng k t h p v i cỏc s ki n nào đú, ch ngộ ộ ạ ộ ế ợ ớ ự ệ ẳ h n nh chốn vào m t quan h c th , và chỳng đạ ư ộ ệ ụ ể ược th c hi n khi cỏcự ệ s ki n này x y ra.ự ệ ả
2.4.1 Cỏc kh ng đ nh (assertion)ẳ ị
Chu n SQL đ ngh m t d ng kh ng đ nh đ n gi n cho phộp chỳng taẩ ề ị ộ ạ ẳ ị ơ ả b t bu c m t đi u ki n nào đú. Gi ng nh cỏc ph n t lắ ộ ộ ề ệ ố ư ầ ử ược đ khỏc,ồ chỳng ta mụ t m t kh ng đ nh b ng l nh CREATE. D ng c a m tả ộ ẳ ị ằ ệ ạ ủ ộ kh ng đ nh là: ẳ ị
1. Cỏc t khúa CREATE ASSERTION,ừ 2. Tờn c a kh ng đ nhủ ẳ ị
3. T khúa CHECK, vàừ
4. M t đi u ki n độ ề ệ ược đ t trong d u ngo c.ặ ấ ặ Nh v y, d ng c a l nh này làư ậ ạ ủ ệ
CREATE ASSERTION < Tờn > CHECK < đi uki n > ề ệ
Đi u ki n trong assertion ph i đỳng khi assertion đề ệ ả ượ ạc t o ra và ph iả luụn luụn v n cũn đỳng; b t kỳ m t s a đ i c s d li u nào làm cho núẫ ấ ộ ử ổ ơ ở ữ ệ tr thành sai s b lo i b . Nh l i r ng cỏc ki u ràng bu c CHECK khỏcở ẽ ị ạ ỏ ớ ạ ằ ể ộ mà chỳng ta đó xột cú th b vi ph m dể ị ạ ưới m t s đi u ki n. ộ ố ề ệ
Cú m t s khỏc nhau gi a cỏch vi t cỏc ràng bu c CHECK d a trờn bộ ự ữ ế ộ ự ộ và cỏch vi t assertion. Cỏc ki m tra d a trờn b cú th tham chi u đ n cỏcế ể ự ộ ể ế ế thu c tớnh c a quan h cú ki m tra này xu t hi n trong mụ t c a nú. Vớộ ủ ệ ể ấ ệ ả ủ d , trong dũng 6) c a vớ d 2.8 chỳng ta s d ng cỏc thu c tớnh Gi i tớnhụ ủ ụ ử ụ ộ ớ và Tờn mà khụng núi chỳng đi đ n t đõu. Chỳng tham chi u đ n cỏcế ừ ế ế thành ph n c a m t b đầ ủ ộ ộ ược chốn vào ho c đặ ược c p nh t trong b ngậ ậ ả GIÁOVIấN b i vỡ b ng đú là m t trong cỏc b ng đở ả ộ ả ược mụ t trong l nhả ệ CREATE TABLE.
Đi u ki n c a m t assertion khụng cú đ c quy n nh v y. Cỏc thu cề ệ ủ ộ ặ ề ư ậ ộ tớnh b t kỳ đấ ược tham chi u đ n trong đi u ki n ph i đế ế ề ệ ả ược gi i thi uớ ệ trong assertion, thường là b ng vi c ch ra quan h c a chỳng trong m tằ ệ ỉ ệ ủ ộ bi u th c select-from-where. B i vỡ đi u ki n ph i cú m t giỏ tr lụgic,ể ứ ở ề ệ ả ộ ị vi c nhúm cỏc k t qu c a đi u ki n theo m t cỏch nào đú đ t o ra m tệ ế ả ủ ề ệ ộ ể ạ ộ l a ch n true/false đ n là vi c bỡnh thự ọ ơ ệ ường. Vớ d , chỳng ta cú th vi tụ ể ế đi u ki n nh là m t bi u th c s n xu t ra m t quan h mà NOTề ệ ư ộ ể ứ ả ấ ộ ệ EXISTS được ỏp d ng cho quan h đú; đi u đú cú nghĩa là, ràng bu c làụ ệ ề ộ quan h này luụn luụn r ng. M t cỏch khỏc, chỳng ta cú th ỏp d ng m tệ ỗ ộ ể ụ ộ phộp toỏn nhúm nh là SUM cho m t c t c a m t quan h và so sỏnh núư ộ ộ ủ ộ ệ v i m t h ng. Vớ d , chỳng ta cú th đũi h i r ng t ng luụn luụn bộ h nớ ộ ằ ụ ể ỏ ằ ổ ơ m t giỏ tr cú gi i h n nào đú. ộ ị ớ ạ
Vớ d 2.12ụ : Gi s chỳng ta mu n yờu c u r ng mu n tr thành ngả ử ố ầ ằ ố ở ười qu n lý c a m t đ n v thỡ ph i cú lả ủ ộ ơ ị ả ương ớt nh t là 4000. Ta s khai bỏoấ ẽ