You are on page 1of 19

Bài tập Khóa và Phủ tối thiểu

Câu 1: Cho lược đồ quan hệ (U, F), với U=(ABCDEGH)

F={AB → CDE; AC → BCG; BD → G; ACH → HE; CG → BDE}

và K=(ACGH).

Hỏi K có là khóa của lược đồ không?

Ta có : (ACGH)+ = ACGHBED = U => K là siêu khóa

Loại A: (CGH)+ = CGH BDE ≠ U => không loại được A

Loại C: (AGH)+ = AGH ≠ U => không loại được C

Loại G: (ACH)+ = ACHEBGD = U => loại được G →khóa K = ACH

Vậy K=(ACGH) không phải là khóa.

Câu 2: Cho lược đồ (U, F) với U=(ABCDE), F={DE → A, B → C, E → AD}

a) Tìm một khóa của lược đồ

b) Tìm tất cả các khóa của lược đồ

a)

K = ABCDE

Loại A: (BCDE)+ = BCDEA = U → loai được A→K = BCDE

Loại B: (CDE)+ = CDEA ≠ U →không loại được B→ K = BCDE

Loại C: (BDE)+ = BDECA = U→ loại được C→K = BDE

Loại D: (BE)+ = BECAD = U →loại được D→ K = BE

Loại E: (B)+ = BC →không loại được E→ K = BE

Vậy khóa K = BE

b)
Trái: B, D, E

Phải: A, C, D

Gốc: B, E

Trung gian: D

Ta có: (BE)+ = BECAD = U →Vậy khóa là K = BE

Câu 3: Cho lược đồ quan hệ R(A,B,C,D,E,F,G,H,I,J) và tập phụ thuộc hàm sau
đây: F = {AB→ C, A → DE, B → F, F → GH, D→ IJ}

a) Tính bao đóng của các tập thuộc tính sau trên F: AC, AF

b) Các phụ thuộc hàm sau có được suy dẫn từ F hay không? AB → H, A → J,
AB→ I

c) Tìm tất cả các khóa của lược đồ quan hệ

d) Tìm phủ tối thiểu của tập phụ thuộc hàm F

e) R thuộc chuẩn mấy? nếu chưa là chuẩn 3 hãy đưa về chuẩn 3.

a)

(AC)+ = ACDE

(AF)+ = AFDEGHIJ

b)

Ta có:

+AB→H :

AB → B (phản xạ)

B→F => AB → F (bắc cầu)

F→GH => F → H (phân rã) => AB → H (bắc cầu)


+) A→J:

A →DE => A → D (phân rã)

D → IJ => D → J => A → J (bắc cầu)

+)AB → J:

AB → A (phản xạ)

A → DE => A → D (phân rã)

D → IJ => D → J (phân ra)

A → J (bắc cầu ) => AB → J (bắc cầu)

c)

Trái: A, B, D, F

Phải: C , D, E, F, G, H, I, J

Gốc: A, B

Trung gian: ∅

(AB)+ =ABCDEFGHIJ = U => AB là khóa

d)

Đặt F = ∅

F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

-)Loại bỏ dư thừa thuộc tính:

+) Xét AB → C, loại A: (B)+ = BFGH không chưa C, không loại được A

Loại B: (A)+ = ADEIJ không chưa C, không loại được B

=> F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

-)Loại bỏ dư thừa phụ thuộc hàm:

1)Xét AB→C: (AB)+ = ABDEFGHIJ, không chứa C, không, loại được AB→C
F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

2)Xét A→D: A+ = AE, không chứa D, không loại được A→D

F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

3)Xét A→E: A+ = ADIJ, không chứa E, không loại được A→E

F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

4)Xét B→F: B+ = B, không chưa F, không loại được B→F

F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

5)Xét F→G: F+ = FH, không chưa G, không loại được F→G

F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

6)Xét F→H: F+ = FG, không chứa H, không loại được F→H

F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

7) Xét D→I: D+ = DJ, không chứa I, không loại được D→I

F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

8) Xét D→J: D+ = DJ không chứa J, không loại được D→J

Vậy phủ tối thiểu là: F = (AB→C, A→D, A→E, B→F, F→G, F→H, D→I, D→J)

e)

–Xét khóa AB: là chuẩn 1

A→D, có D không là thuộc tính khóa, A là tập con của khóa => Vi phạm chuẩn 2

Vậy chuẩn cao nhất của R là chuẩn 1.

–Đứa về chuẩn 3:

+ AB→C: R1 ( ABC )

+ A→DE: R2 ( ADE)

+ B→F: R3 ( BF )
+ F→GH: R4 ( FGH )

+ D→IJ: R5 (DIJ )

Vậy R tách ra thành: R1 ( ABC ) , R2 ( ADE), R3 ( BF ) , R4 ( FGH ), R5 (DIJ ).

Bài 4: Cho lược đồ quan hệ R(A,B,C,D,E,F,G,H,I,J) và tập phụ thuộc hàm sau đây:
F= { AB→ C, BD → EF, AD → GH, A → I , H → J }

a) Tính bao đóng của các tập thuộc tính sau trên F: AC, AF

b) Các phụ thuộc hàm sau có được suy dẫn từ F hay không? AB → H, A → J,
AB→ I

c) Tìm tất cả các khóa của lược đồ quan hệ

d) Tìm phủ tối thiểu của tập phụ thuộc hàm F

e) R thuộc chuẩn mấy? nếu chưa là chuẩn 3 hãy đưa về chuẩn 3.

a)

Ta có : (AC)+ = ACI

(AF)+ = AFI

b)

–Xét AB→H:

+ (AB)+ = ABCI, không chứa H nên AB → H không được suy dẫn từ F.

–Xét A→J:

+ A+ = A, không chứa J => A→J không được suy dẫn từ F.

–Xét AB→I: AB→A (phản xạ)

A→I => AB→I (bắc cầu)

c)

Trái: A, B, D, H
Phải: C, E, F, G, H, I, J

Gốc: A, B, D

Trung gian: H

Xét (ABDH)+ = ABDHCEFGIJ = U

Vậy ABDH là khóa của U

d)

Đặt F=∅

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

-Loại bỏ dư thừa thuộc tính:

1)Xét AB→C: loại A: B+ = B, không chưa C, không loại được A

Loại B: A+ = AI, không chứa C, không loại được B

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

2)Xét BD→E: loại B: D+ = D, không chứa E, không loại được D

Loại D: B+ = B, không chứa E, không loại được B

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

3)Xét BD→F: loại B: D+ = D, không chứa F, không loại được D

Loại D: B+ = B, không chứa F, không loại được B

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

4)Xét AD→G: loại A: D+ = D, không chứ G, không loại được A

Loại D: A+ = AI, không chứa G, không loại được D

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

5)Xét AD→H: : loại A: D+ = D, không chứ G, không loại được A

Loại D: A+ = AI, không chứa G, không loại được D


F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

-loại bỏ dư thừa phụ thuộc hàm:

1)Xét AB→C: AB+ = ABI, không chứa C, không loại được AB→C

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

2)Xét BD→E: BD+ = BDF, không chứa E, không loại được BD→E

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

3)Xét BD→F: BD+ =BDE, không chứa F, không loại được BD→F

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

4)Xét AD→G: AD+ = ADHIJ, không chứa G, không loại được AD→G.

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

5)Xét AD→H: AD+ = ADGI, không chứa H, không loại được AD→H

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J

6)Xét A→I: A+ = A, không chứa I, không loại được A→I

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

7)Xét H→J: H+ = H, không chứa J, không loại được H→J

F = {AB→C, BD→E, BD→F, AD→G, AD→H, A→I, H→J}

Vậy phụ thuộc hàm tối thiểu là: F = {AB→C, BD→E, BD→F, AD→G, AD→H,
A→I, H→J}

e,

–Xét khóa ABD: là chuẩn 1

+ AB→C, có C không là thuộc tính khóa, AB là tập khóa của khóa

=> Vị phạm chuẩn 2 =>R là chuẩn 1

Vậy chuẩn cao nhât của R là chuẩn 1.


–Đưa về chuẩn 3:

+ AB→C: R1(ABC)

+ BD→EF: R2 (BDEF)

+ AD→GH: R3 ( ADGH )

+ A→I: R4 ( AI )

+ H→J: R5 (HJ )

Vậy R tách thành: R1(ABC), R2 (BDEF), R3 ( ADGH ), R4 ( AI ) , R5 (HJ ).

Bài 5: Xét quan hệ R(A,B,C,D,E) và tập các phụ thuộc hàm sau:

F= {AB → C, CD → E, DE → B}

a) Tìm một khóa của lược đồ quan hệ trên

b) Tìm tất cả các khóa của lược đồ quan hệ

c) Tìm phủ tối thiểu cho lược đồ

e) R đã là chuẩn BCNF chưa? nếu chưa là chuẩn BCNF hãy đưa về chuẩn BCNF.

a)

Đặt K = ABCDE

+) Loại A: (BCDE)+ = BDCE ≠ U => K = ABCDE

+)Loại B: (ACDE)+ = ACDEB = U => K = ACDE

+)Loại C: (ADE)+ = ADEBC = U => K = ADE

+)Loại D: (AE)+ = AE ≠ U => K = ADE

+)Loại E: (A)+ = A ≠ U => K = ADE

Vậy khóa của U là ADE.

b)

Trái: A, B, C, D, E
Phải: B, C, E

Gốc: A, D

Trung gian: B, C, E

ADB ADBC ADBCE


ADC ADBE
ADE ADCE

Vậy các khóa của lược đồ quan hệ là: ADB, ADC, ADE.

c) F= {AB → C, CD → E, DE → B}

Đặt F = ∅

F= {AB → C, CD → E, DE → B}

-Loại bỏ dư thuộc tính:

1)Xét AB → C: Loại A: B+ = B, không chứa C, không loại được A

Loại B: A+ = A, không chứa C, không loại được B

F= {AB → C, CD → E, DE → B}

2)Xét CD → E: Loại C: D+ = D, không chứa E, không loại được C

Loại D: C+ = C, không chứa E, không loại được D

F= {AB → C, CD → E, DE → B}

3)Xét DE → B: Loại D: E+ = E, không chứa B, không loại được D

Loại E: D+ = D, không chứa B, không loại được E

F= {AB → C, CD → E, DE → B}

-Loại bỏ dư thừa phụ thuộc hàm:

1)Xét AB → C: AB+ = AB, không chứa C, không loại được AB → C

F= {AB → C, CD → E, DE → B}
2)Xét CD → E: CD+ = CD, không chứa E, không loại được CD → E

F= {AB → C, CD → E, DE → B}

3)Xét DE → B: DE+ = DE, không chứa B, không loại được DE → B

Vậy phụ thuộc hàm tối thiểu là: F= {AB → C, CD → E, DE → B}

e)

–Xét AB → C:

AB+ = AB ≠ U => AB không là siêu khóa.

=> vi phạm chuẩn BCNF

Vậy R không là chuẩn BCNF.

Bài 6: Cho lược đồ quan hệ R(U, F) với U = ABCDEHIKJ

F = {C →EHI, HI → ABC, AC → DJ, EC → AB}

a) Tìm tất cả các khóa của lược đồ quan hệ trên

b) Tìm phủ tối thiểu cho lược đồ

c) R thuộc chuẩn mấy? nếu chưa là chuẩn 3 hãy đưa về chuẩn 3.

a)Trái: A, C, E, H, I

Phải: A, B, C, D, E, H, I, J

Gốc: K

Trung gian: A, C, E, H, I

–Xét K+ = K ≠ U

KA KAC KCH KACE KAHI KACEH KACEHI


KC KAE KCI KACH KCEH KAEHI
KE KAH KEH KACI KCEI KACHI
KH KAI KEI KAEH KCHI KACEI
KI KCE KHI KAEI KEHI KCEHI
Vậy khóa là KC, KHI.
b) F = {C →EHI, HI → ABC, AC → DJ, EC → AB}

Đặt F = ∅

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, AC → D, AC → J,

EC →A, EC → B}

–Loại bỏ dư thừa thuộc tính:

1) Xét HI → A: Loại H: I+ = I, không chứa A, không loại được H

Loại I: H+ = H, không chứa A, không loại được I

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, AC → D, AC → J,

EC →A, EC → B}

2) Xét HI → B: Loại H: I+ = I, không chứa B, không loại được H

Loại I: H+ = H, không chứa B, không loại được I

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, AC → D, AC → J,

EC →A, EC → B}

3) Xét HI → C: Loại H: I+ = I, không chứa C, không loại được H

Loại I: H+ = H, không chứa C, không loại được I

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, AC → D, AC → J,

EC →A, EC → B}

4)Xét AC → D: Loại A: C+ = CEHIABJ, chứa A, loại được A

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, C → D, AC → J,

EC →A, EC → B}

5)Xét AC → J: Loại A: C+ = CEHIABJ, chứa J, loại được A

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, C → D, C → J,

EC →A, EC → B}
6)Xét EC →A: Loại E: C+ = CEHIABJ, chứa A, loại được E

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, C → D, C → J,

C →A, EC → B}

7)Xét EC → B: Loại E: C+ = CEHIABJ, chứa B, loại được E

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, C → D, C → J,

C →A, C → B}

–Loại bỏ dư thừa phụ thuộc hàm:

1)Xét C → E: C+ = CHIDJAB, không chứa E, không loại được C → E

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, C → D, C → J,

C →A, C → B}

2)Xét C → H: C+ = CEIDJAB, không chứa H, không loại được C → H

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, C → D, C → J,

C →A, C → B}

3)Xét C→ I: C+ = CEHDJAB, không chứa I, không loại được C→ I

F = {C → E, C → H, C→ I, HI → A, HI → B, HI → C, C → D, C → J,

C →A, C → B}

4)Xét HI → A: HI+ = HIBCEDJAB, chứa A, loại được HI → A

F = {C → E, C → H, C→ I, HI → B, HI → C, C → D, C → J,

C →A, C → B}

5)Xét HI → B: HI+ = HICEDJAB, chứa B, loại dược HI → B

F = {C → E, C → H, C→ I, HI → C, C → D, C → J,

C →A, C → B}

6)Xét HI → C: HI+ = HI, không chứ C, không loại được HI → C


F = {C → E, C → H, C→ I, HI → C, C → D, C → J, C →A, C → B}

7)Xét C → D: C+ = CEHIJAB, không chứa D, không loại được C → D

F = {C → E, C → H, C→ I, HI → C, C → D, C → J, C →A, C → B}

8)Xét C → J: C+ = CEHIDAB, không chứa J, không loại được C → J

F = {C → E, C → H, C→ I, HI → C, C → D, C → J, C →A, C → B}

9)Xét C → A: C+ = CEHIDJB, không chứa A, không loại được C → A

F = {C → E, C → H, C→ I, HI → C, C → D, C → J, C →A, C → B}

10)Xét C → B: C+ = CEHIDJA, không chứa A, không loại được C → B

Vậy phủ tối thiểu của lược đồ là: F = {C → E, C → H, C→ I, HI → C, C → D,

C → J, C →A, C → B}

c)

–Xét khóa KC: là chuẩn 1

C → E, có E không là thuộc tính khóa, C là tập con của khóa

=> Vi phạm chuẩn 2 => R là chuẩn 1

– Xét khóa KHI: là chuẩn 1

HI → C, có C không là thuộc tính khóa, HI là tập con của khóa

=> Vi phạm chuẩn 2 => R là chuẩn 1

Vậy chuẩn cao nhất của R là chuẩn 1

–Đưa về chuẩn 3:

+ C →EHI: R1(CEHI)

+ HI →C: R2(HIC)

+ AC →DJ: R3(ACDJ)

+ C →AB: R4(CAB)
Vậy R tách thành : R1(CEHI), R2(HIC), R3(ACDJ), R4(CAB), R5(KC)

Bài 7: Cho lược đồ quan hệ (U, F) với U=(ABCDEGHIK)

F={ACK → BCH; CH → BD; DG → BDE; ABCE → CD}

a) Hãy tìm một khóa của lược đồ trên

b) Tập (CDGH) có phải là khóa của lược đồ đã cho hay không?

c) Hãy tìm tất cả các khóa?

d) Tìm phủ tối thiểu cho lược đồ F

e) R thuộc chuẩn mấy? nếu chưa là chuẩn 3 hãy đưa về chuẩn 3.

a)

K=ABCDEGHIK

1) (BCDEGHIK)+ = BCDEGHIK ≠ U, không loại được A => K= ABCDEGHIK

2) (ACDEGHIK)+ = ACDEGHIKB = U, loại được B => K=ACDEGHIK

3) (ADEGHIK)+ = ADEGHIKB ≠ U, không loại được C => K=ACDEGHIK

4) (ACEGHIK)+ = ACEGHIKBD = U, loại được D => K=ACEGHIK

5) (ACGHIK)+ = ACGHIKBDE = U, loại được E => K=ACGHIK

6) (ACHIK)+ = ACHIKBD ≠ U, không loại được G => K=ACGHIK

7) (ACGIK)+ = ACGIKBHDE = U, loại được H => K=ACGIK

8) (ACGK)+ = ACGKBHDE ≠ U, không loại được I => K=ACGIK

9) (ACGI)+ = ACGI ≠ U, không loại được K => K=ACGIK

Vậy khóa là K=ACGIK

b)

Ta có: (CDGH)+ = CDGHBE ≠ U


=> Tập CDGH không phải là khóa của lược đồ

c)

Trái : A, C, K, H, D, G, B, E

Phải : B, C, H, D, E

Gốc = Trái – Phải: A, K, G, I

TG = Trái ∩ Phải : B, C, H, D, E

TG ≠ ∅

(AKGI)

= AKGI ≠ U

AKGI AKGIB AKGICD AKGIBC AKGIBD AKGIBCH AKGIBCHD


B C H E D E
AKGI AKGIB AKGICE AKGIBC AKGICH AKGIBCH
C H D D E
AKGI AKGIB AKGIHD AKGIBH AKGICH AKGIBHD
H D D E E
AKGI AKGIB AKGIBC AKGIDE AKGICD AKGIBCD
D E E E E
AKGI AKGIC AKGIHE AKGIBH AKGIHD AKGICHD
E H E E E
Vậy khóa là AKGIC

d)

B1: F = ∅

B2: F={ACK → B; ACK → H; CH → B; CH → D ; DG → B; DG → E;


ABCE→D}

B3: Loại bỏ dư thừa thuộc tính:

Xét ACK → B: loại A: (CK)+ = CK, không chứa B, không loại được A
loại C: (AK)+ = AK, không chứa B, không loại được C

loại K: (AC)+ = AC, không chứa B, không loại được K

=> F={ACK → B; ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE


→ D}

Xét ACK → H: loại A: (CK)+ = CK, không chứa H, không loại được A

loại C: (AK)+ = AK, không chứa H, không loại được C

loại K: (AC)+ = AC, không chứa H, không loại được K

=> F={ACK → B; ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE


→ D}

Xét CH → B: loại C: H+ = H, không chứa B, không loại được C

loại H: C+ = C, không chứa B, không loại được H

=> F={ACK → B; ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE


→ D}

Xét CH → D: loại C: H+ = H, không chứa D, không loại được C

loại H: C+ = C, không chứa D, không loại được H

=> F={ACK → B; ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE


→ D}

Xét DG → B: loại D: G+ = G, không chứa B, không loại được D

loại G: D+ = D, không chứa B, không loại được G

=> F={ACK → B; ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE


→ D}

Xét DG → E: loại D: G+ = G, không chứa E, không loại được D

loại G: D+ = D, không chứa E, không loại được G

=> F={ACK → B; ACK → H; CH → B; CH → D ; DG → B; DG → E;


ABCE→D}
Xét ABCE → D: loại A: (BCE)+ = BCE, không chứa D, không loại được A

loại B: (ACE)+ = ACE, không chứa D, không loại được B

loại C: (ABE)+ = ABE, không chứa D, không loại được C

loại E: (ABC)+ = ABC, không chứa D, không loại được E

=> F={ACK → B; ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE


→ D}

B4: Loại bỏ dư thừa phụ thuộc hàm:

1) Xét ACK → B: (ACK)+ = ACKHBD, chứa B, loại được ACK → B

=> F={ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE → D}

2) Xét ACK → H: (ACK)+ = ACK, không chứa H, không loại được ACK → H

=> F={ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE → D}

3) Xét CH → B: (CH)+ = CHD, không chứa B, không loại được CH → B

=> F ={ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE → D}

4) Xét CH → D: (CH)+ = CHB, không chứa D, không loại được CH → D

=> F ={ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE → D}

5) Xét DG → B: (DG)+ = DGE, không chứa B, không loại được DG → B

=> F ={ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE → D}

6) Xét DG → E: (DG)+ = DGB, không chứa E, không loại được DG → E

=> F ={ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE → D}

7) Xét ABCE → D: (ABCE)+ = ABCE, không chứa D, không loại được


ABCE →D

=> F ={ACK → H; CH → B; CH → D ; DG → B; DG → E; ABCE → D}

Vậy phủ tối thiểu: F ={ACK → H; CH → B; CH → D ; DG → B; DG → E;


ABCE → D}
e) Xét khóa AKGIC: là chuẩn 1

ACK → H, có H không là thuộc tính khóa, ACK là tập con của khóa

=> Vi phạm chuẩn 2 => R là chuẩn 1

Vậy chuẩn cao nhất của R là chuẩn 1

–Đưa về chuẩn 3:

+ ACK → H: R1(ACKH)

+ CH → BD: R2(CHBD)

+ DG → BE: R3(DGBE)

+ ABCE → D: R4 (ABCED)

Vậy R tách thành : R1(ACKH), R2(CHBD), R3(DGBE), R4(ABCED),


R5(AKGIC)

You might also like