1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo cuối kì môn học Cơ sở dữ liệu - Đại học Bách Khoa Hà Nội

40 3 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Báo cáo cuối kì môn học Cơ sở dữ liệu - Đại học Bách Khoa Hà Nội khoa Toán Tin. Báo cáo bao gồm các vấn đề sau: Thiết kế mô hình dữ liệu: thiết kế mô hình ER (Entity-Relationship) để mô tả các thực thể, thuộc tính, và mối quan hệ giữa các thực thể. Sau đó, chuyển mô hình ER sang mô hình quan hệ. Tạo cơ sở dữ liệu: Sử dụng hệ quản trị cơ sở dữ liệu như MySQL để tạo bảng, định nghĩa các khóa chính, khóa ngoại, và các ràng buộc toàn vẹn dữ liệu. Thao tác dữ liệu: Sinh viên sẽ viết các câu lệnh SQL để thêm, xóa, sửa, và truy vấn dữ liệu từ cơ sở dữ liệu.

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA TOÁN TIN

Trang 2

TABLE OF CONTENTS

1.1 MỤC TIÊU HỆ THỐNG 1

1.2 QUY TRÌNH NGHIỆP VỤ 1

1.3 YÊU CẦU DỮ LIỆU BAN ĐẦU 1

CHƯƠNG II: CHỨC NĂNG CỦA HỆ THỐNG32.1 QUẢN LÝ THÔNG TIN NGƯỜI DÙNG 3

2.2 QUẢN LÝ CÁC LẦN ĐĂNG NHẬP MẠNG XÃ HỘI 3

2.3 QUẢN LÝ CÁC BÀI ĐĂNG 3

3.2 ÁNH XẠ MÔ HÌNH TTLK SANG MÔ HÌNH DLQH 4

THIẾT KẾ CSDL BẰNG THUẬT TOÁN64.1 XÁC ĐỊNH CÁC THUỘC TÍNH VÀ PHỤ THUỘC HÀM 6

4.2 QUY TRÌNH TÌM KHÓA CỦA LƯỢC ĐỒ QUAN HỆ 7

5.2 RÀNG BUỘC DỮ LIỆU 24

Trang 3

5.3 SƠ ĐỒ EER 28

Trang 4

LỜI MỞ ĐẦU

Trong thời đại số hóa hiện nay, mạng xã hội đã trở thành một phần không thể thiếutrong cuộc sống hàng ngày của con người Chúng không chỉ là công cụ giao tiếp mà cònlà nền tảng cho nhiều hoạt động kinh tế, xã hội và văn hóa Việc quản lý hoạt động củangười dùng trên các nền tảng này đòi hỏi một hệ thống cơ sở dữ liệu mạnh mẽ và hiệuquả để đảm bảo tính toàn vẹn, bảo mật và khả năng mở rộng.

Đề tài "Quản lý hoạt động người dùng trên mạng xã hội" nhằm mục đích nghiêncứu và xây dựng một hệ thống cơ sở dữ liệu đáp ứng được các yêu cầu phức tạp trongviệc quản lý thông tin người dùng, các mối quan hệ xã hội, các hoạt động tương tác nhưbài đăng, bình luận, lượt thích, và các yếu tố khác Hệ thống này không chỉ giúp theodõi và phân tích hành vi người dùng mà còn hỗ trợ các nhà quản trị trong việc đưa ra cácquyết định chiến lược, nâng cao trải nghiệm người dùng và tối ưu hóa các hoạt động trênnền tảng.

Báo cáo này sẽ trình bày các bước thiết kế cơ sở dữ liệu từ việc phân tích yêu cầu,mô hình hóa dữ liệu, thiết kế lược đồ cơ sở dữ liệu, cho đến triển khai và kiểm thử Quađó, chúng tôi hy vọng sẽ cung cấp một cái nhìn toàn diện về quy trình xây dựng cơ sởdữ liệu và những thách thức có thể gặp phải trong việc quản lý dữ liệu người dùng trênmạng xã hội.

Kết quả của đề tài không chỉ có giá trị học thuật mà còn mang lại những ứng dụngthực tiễn, góp phần vào việc phát triển các nền tảng mạng xã hội hiện đại và bền vững.

Mặc dù đã rất cẩn thận trong việc phân tích và chuẩn bị báo cáo nhưng chắc chắnvẫn không tránh khỏi những sai sót Em cũng xin chân thành cảm ơn cô Nguyễn ThịThanh Huyền đã tận tình hướng dẫn em trong quá trình học tập để em có thể hoàn thànhbáo cáo một cách tốt nhất.

Em xin chân thành cảm ơn!!!

Trang 5

CHƯƠNG I: BÀI TOÁN THỰC TẾ

1.1MỤC TIÊU HỆ THỐNG

Ngày nay việc sử dụng mạng xã hội là một điều không thể không tồn tại trong cuộcsống mỗi người Bên cạnh việc giúp tương tác giữa mọi người với nhau thì ngày nay việcsử dụng xã hội đã được ứng dụng rất nhiều trong kinh vậy nên việc có một hệ thống đểquản lý dữ liệu các hoạt động của người dùng trên mạng xã hội là vô cùng cần thiết vàcó tính ứng dụng cao.

Với mục tiêu quản lý các hoạt động tương tác của người dùng một các có hệ thốngvà đầy đủ các thông tin cần thiết từ đó có thể giúp các chuyên gia đưa ra những dự đoánvề thị trường cũng như các nhãn hàng có thể thấu hiểu insight người dùng từ đó áp dụngcác chiến dịch phù hợp Cuối cùng ta cũng có thể đánh giá chất lượng các chiến dịchquảng cáo mà các nhãn hàng thực hiệnt trên mạng xã hội này thông qua các thông tinthu nhập được từ hệ thống

1.2QUY TRÌNH NGHIỆP VỤ

Quy trình nghiệp vụ của hệ thống có thể được xác định qua các bước sau:• Người dùng tạo tài khoản và sẽ được tạo riêng một mã riêng.

• Lịch sử đăng nhập của người dùng sẽ đều được lưu lại trên hệ thống.

• Hệ thống sẽ lưu trữ mọi hoạt động của người dùng trên mạng xã hội Bao gồm:

– Các người dùng có thể theo dõi lẫn nhau Điều này cũng sẽ được lưu trữ trên

hệ thống.

– Hành động đăng bài trên mạng xã hội Các bài đăng này có thể bao gồm các

thành phần như: caption, hình ảnh, video.

– Các hành động tương tác với các bài đăng khác: thích, bình luận.

– Ngoài thích các bài đăng, người dùng có thể thích các bình luận Lịch sử này

cũng được lưu lại trên hệ thống.

– Người dùng có thể tạo các hashtag và sử dụng các hashtag này trong các bình

luận hoặc caption mô tả bài đăng.

1.3YÊU CẦU DỮ LIỆU BAN ĐẦU

Yêu cầu dữ liệu của hệ thống quản lý hoạt động người dùng trên mạng xã hội baogồm:

Trang 6

• User (người dùng): tên, giới tính, email, địa chỉ, thời gian tham gia mạng xã hội, urlảnh đại diện, bio giới thiệu.

• Post (bài đăng): địa chỉ check in, thời gian tạo, chế độ, url video trong bài đăng, urlảnh trong bài đăng, nội dung caption.

• Hashtag: Nội dung hashag (có dạng #abc)

• Hashtag_post: Nội dung hashag (có dạng #abc) và mã bài post chứa hashtag• Hashtag_cmt: Nội dung hashag (có dạng #abc) vã mã comment chứa hashtag• Like (lượt thích): thời gian like, emotion (haha, wow, sad, angry, like, care)

• Comment (bình luận): nội dung bình luận, thời gian tạo bình luận, url ảnh đínhkèm, url video đính kèm, bài viết bình luận

• Login (lượt đăng nhập): thời gian, ip, thiết bị đăng

Trang 7

CHƯƠNG II: CHỨC NĂNG CỦA HỆ THỐNG

2.1QUẢN LÝ THÔNG TIN NGƯỜI DÙNG

Quản lý thông tin người dùng bao gồm các thông tin cơ bản và thời gian tạo tàikhoản xã hội.

Cho phép cập nhật thông tin của người dùng và nhiều tác vụ khác.

2.2QUẢN LÝ CÁC LẦN ĐĂNG NHẬP MẠNG XÃ HỘI

Quản lý các lần truy cập mạng xã hội của người dùng.

2.3QUẢN LÝ CÁC BÀI ĐĂNG

Quản lý thông tin các bài viết do người dùng đăng tải trên mạng xã hội.Cho phép truy vấn lịch sử đăng bài và các nội dung đi kèm.

Cho phép truy vấn đến mỗi lượt hashtag được sử dụng từ đó có thể suy ra nhữngvấn đề được người dùng quan tâm hiện nay.

Trang 8

CHƯƠNG III: THIẾT KẾ CSDL BẰNG MÔ HÌNH TTLK

3.1MÔ HÌNH THỰC THỂ LIÊN KẾT

Figure 3.1Relational Entity Diagram

3.2ÁNH XẠ MÔ HÌNH TTLK SANG MÔ HÌNH DLQH

users(user_id, name, gender, birthday, age, address, email, bio, avatar, created_at)logins(login_id, user_id, ip, device, created_at)

followss(follow_id, , followee_id, follower_id, created_at)

comments(cmt_id, user_id, cmt_text, created_at, vid_url, photo_url, created_at)like(like_id, user_id, cmt_id, post_id, created_at)

posts(post_id, user_id, caption, set, location, vid_url, photo_url, created_at)hashtagg(hashtag_id, h_text)

Trang 9

hashtag_post(hashtag_id, post_id, h_text)hashtag_cmt(hashtag_id, cmt_id, h_text)

∗ Chú thích: tên_bảng(khóa_chính, khóa ngoại, thuộc tính)

Trang 10

CHƯƠNG IV: THIẾT KẾ CSDL BẰNG THUẬT TOÁN

4.1XÁC ĐỊNH CÁC THUỘC TÍNH VÀ PHỤ THUỘC HÀM

– user_id, name, gender, birthday, age, email, address, bio, avatar, created_at,

fol-low_id, followee_id, follower_id, created_at, login_id, ip, device, created_at,like_id, emotion, created_at, cmt_id, cmt_text, vid_url, photo_url, created_at,hashtag_id, h_text, post_id, location, set, created_at, caption, vid_url, photo_url

– Trong đó:

* thuộc tính created_at là khác nhau* 2 thuộc tính photo_url là khác nhau* 2 thuộc tính vid_url là khác nhau

– Do một số thuộc tính như: gender, birthday, age, email, address, bio, creat_at,

vid_url, photo_url, ip, set, location có vai trò giống nhau nên ta sẽ tiến hànhlược bỏ để đơn giản hóa quá trình xác định phụ thuộc hàm và tìm khóa Vậytập thuộc tính còn lại là:

{user_id, name, follow_id, followee_id, follower_id, login_id, device, like_id, tion, cmt_id, cmt_text, hashtag_id, h_text, post_id, caption}

– Lược đồ quan hệ U = < α, F> Trong đó:

U = {user_id, name, follow_id, followee_id, follower_id, login_id, device, like_id,emtion, cmt_id, cmt_text, hashtag_id, h_text, post_id, location, caption}

Trang 11

4.2QUY TRÌNH TÌM KHÓA CỦA LƯỢC ĐỒ QUAN HỆ

* Tìm khóa: Đặt K={user_id, name, follow_id, followee_id, follower_id, login_id, vice, like_id, emtion, cmt_id, cmt_text, hashtag_id, h_text, post_id, location, caption}

Trang 13

T += { user_id, name, followee_id, follow_id, follower_id, login_id, emtion, cmt_id,cmt_text, hashtag_id, h_text, post_id, location, caption, device } = !U

Then K := T = {follow_id, login_id, like_id, cmt_text, hashtag_id, h_text, post_id, tion, caption, device }

loca-Bước 10:

T = K \ {cmt_text} = {hashtag_id, h_text, post_id, location, caption, device }

T += { user_id, name, followee_id, follow_id, follower_id, login_id, like_id, emtion,cmt_id, cmt_text, hashtag_id, h_text, post_id, location, caption, device } = U

Then K := T = {follow_id, login_id, like_id, hashtag_id, h_text, post_id, location, tion, device }

cap-Bước 11:

T = K \ {hashtag_id} = {hashtag_id, h_text, post_id, location, caption, device }

T += { user_id, name, followee_id, follow_id, follower_id, login_id, like_id, emtion,cmt_id, cmt_text, h_text, post_id, location, caption, device } = !U

Bước 12:

T = K \ {h_text} = {post_id, location, caption, device }

Trang 14

T += { user_id, name, followee_id, follow_id, follower_id, login_id, like_id, emtion,cmt_id, cmt_text, hash_tag, h_text, post_id, location, caption, device } = U

Then K := T = {follow_id, login_id, like_id, hashtag_id, post_id, location, caption, vice }

de-Tương tự ta bỏ được các thuộc tính: post_id, location, caption, device Cuối cùng tathu được các khóa của lược đồ quan hệ như sau:

K= { follow_id, login_id, like_id, hashtag_id }4.3TÌM PHỦ TỐI THIỂU

Bước 1: Tách vế phải của các phụ thuộc hàm

user_id → namelogin_id → user_idlogin_id → devicepost_id → user_idpost_id → locationpost_id → captionlike_id → user_idlike_id → emotionlike_id → post_idlike_id → cmt_idcmt_id → cmt_textcmt_id → post_idcmt_id → useruser_idfollow_id → followee_idfollow_id → follower_idhashtag_id → h_text

hashtag_id, post_id → h_texthashtag_id, cmt_id → h_text

Bước 2: Duyệt và bỏ đi các phụ thuộc hàm dư thừa, còn lại

user_id → namelogin_id → user_idlogin_id → devicepost_id → user_idpost_id → location

Trang 15

post_id → captionlike_id → user_idlike_id → emotionlike_id → post_idlike_id → cmt_idcmt_id → cmt_textcmt_id → post_idcmt_id → useruser_idfollow_id → followee_idfollow_id → follower_idhashtag_id → h_text

hashtag_id, post_id → h_texthashtag_id, cmt_id → h_text

Bước 3: Duyệt tập con của { follow_id, login_id, like_id, hashtag_id } cuối cùngthu được phủ tối thiểu là:

user_id → namelogin_id → user_idlogin_id → devicepost_id → user_idpost_id → locationpost_id → captionlike_id → user_idlike_id → emotionlike_id → post_idlike_id → cmt_idcmt_id → cmt_textcmt_id → post_idcmt_id → user_id

follow_id → followee_idfollow_id → follower_idhashtag_id → h_text

hashtag_id, post_id → h_texthashtag_id, cmt_id → h_text

Ta gộp các phụ thuộc hàm có cùng vế trái, kết quả thu được là các lược đồ con:• R1 (use_id: name)

• R2 (login_id: user_id, device)

Trang 16

• R3 (post_id: user_id, location, caption)

• R4 (like_id: user_id, emotion, post_id, cmt_id)• R5 (cmt_id: cmt_text, post_id, user_id)

• R6 (follow_id: followee_id, follower_id)• R7 (hashtag_id: h_text)

• R8 (hashtag_id: h_text, cmt_id)• R9 (hashtag_id: h_text, post_id)

Trong các lược đồ con vừa tách tồn tại lược đồ chứa khóa chính của lược đồ U ban đầunên các phép tách như trên là không bị mất mát thông

4.4KIỂM TRA VÀ ĐƯA VỀ DẠNG CHUẨN• Kiểm tra dạng chuẩn 1NF

– Các lược đồ ở trên đã đạt chuẩn 1NF vì các trường thuộc tính đều là các giá trị

nguyên tố (không bao gồm các thuộc tính ghép/đa trị).

• Kiểm tra dạng chuẩn 2NF

– Các lược đồ trên đã ở dạng chuẩn 1NF

– Các thuộc tính không phải phụ thuộc hàm đầy đủ vào khóa chính

→ Các lược đồ trên ở dạng chuẩn 2NF

• Kiểm tra dạng chuẩn 3NF

– Các lược đồ trên đã ở dạng chuẩn

– Mọi thuộc tính không khóa không phụ thuộc bắc cầu vào khóa

→ Vậy các lược đồ con trên ở dạng chuẩn 3NF

4.5HOÀN THIỆN CSDL

* Sau khi có các lược đồ con R1, R2, R3, R4, R5, R6, R7, R8, R9 ta đặt tên cho

các lược đồ con này để dễ hình dung:

users(user_id, name)

logins(login_id, user_id, device)

posts(post_id, user_id, caption, location)

Trang 17

likee(like_id, user_id, emotion, post_id, cmt_id)comments(cmt_id, cmt_text, post_id, user_id)followss(follow_id, followee_id, follower_id)hashtags (hashtag_id, h_text)

hashtag_post(hashtag_id, post_id, h_text)hashtag_cmt(hashtag_id, cmt_id, h_text)* Cập nhật khóa chính cho các bảng, ta được:

users(user_id, name)

logins(login_id, user_id, device)

posts(post_id, user_id, caption, location)

likee(like_id, user_id, emotion, post_id, cmt_id)comments(cmt_id, cmt_text, post_id, user_id)followss(follow_id, followee_id, follower_id)hashtags (hashtag_id, h_text)

hashtag_post(hashtag_id, post_id, h_text)hashtag_cmt(hashtag_id, cmt_id, h_text)

* Cập nhật các thuộc tính có vai trò giống nhau ban đầu bị loại bỏ:

users(user_id, name, birthday, age, gender, email, bio, avatar, address, created_at)logins(login_id, user_id, ip, device)

posts(post_id, user_id, caption, location, set, vid_url, photo_url, created_at)likee(like_id, user_id, emotion, post_id, cmt_id, created_at)

comments(cmt_id, cmt_text, post_id, user_id, vid_url, photo_url, created_at)followss(follow_id, followee_id, follower_id, created_at)

hashtags(hashtag_id, h_text)

hashtag_post(hashtag_id, h_text, post_id)hashtag_cmt(hashtag_id, h_text, cmt_id)

4.6SO SÁNH HAI PHƯƠNG PHÁP THIẾT KẾ CSDL

Sau khi thực hiện cả hai phương pháp sử dụng lý thuyết thiết kế và mô hình thựcthể liên kế để thiết kế cơ sở dữ liệu em đã rút ra những điều sau:

• Sử dụng lý thuyết thiết kế sẽ mạch lạc rõ ràng từng bước và đem lại sự chính xáccao do được chứng minh bằng các thuật toán, định lý toán học Bên cạnh đó phươngpháp khá phức tạp, chưa thông dụng với những người mới và dễ gây nhầm lẫn• Sử dụng mô hình thực thể liên kết dễ hình dung và dễ làm tuy nhiên độ chính xác

chưa cao dễ gây xung đột về mặt logic hoặc mất mát thông tin

Trang 18

CHƯƠNG V: TẠO LẬP VÀ CẬP NHẬT DỮ LIỆU

5.1TẠO LẬP CÁC BẢNG

Mô tả cơ sở dữ liệu: Cơ sở dữ liệu gồm 9 bảng với các thông tin như sau:

• Thông tin cá nhân của mỗi người dùng: mỗi người dùng có 1 mã người dùng duynhất và bao gồm các thông tin như: tên, email, ngày sinh, tuổi, địa chỉ, ngày thamgia, giới tính, bio, ảnh đại diện

• Thông tin đăng tải bài viết: mỗi bài sẽ có một mã bài viết riêng biệt, caption, chếđộ (công khai hoặc riêng tư), link ảnh, link video, thời gian đăng tải

• Thông tin của mỗi lượt like do người dùng tạo: mỗi lượt like sẽ có một mã riêng vàbao gồm các thông tin như: loại cảm xúc (like, love, care, sad, wow, angry), thờigian tạo, người tạo

• Thông tin của mỗi bình luận trong một bài viết: mỗi bình luận sẽ có một mã riêngvà bao gồm các thông tin như: nội dung bình luận, link ảnh đính kèm, link videođính kèm, mã bài viết được bình luận, mã người dùng tạo bình luận, thời gian tạo• Thông tin của mỗi hashtag được đính kèm tại caption hoặc phần bình luận: mỗi

hashtag sẽ có một mã riêng và bao gồm: nội dung hashtag

• Thông tin của mỗi lượt follow: mỗi lượt follow sẽ có một mã riêng và bao gồm cácthông tin như: mã người được follow, mã người follow và thời gian follow

• Thông tin của mỗi lượt đăng nhập bao gồm mã riêng biệt, thời gian đăng nhập, sốip và tên thiết

• Thông tin nơi mà mỗi hashtag được gắn tại: có thể tại phần bình luận hoặc phần bàiviết

Câu lệnh SQL để tạo bảng và cập nhật dữ liệu* Bảng users

Trang 19

Figure 5.1Bảng users

Figure 5.2Bảng users

Trang 20

* Bảng Logins

Figure 5.3Bảng logins

Figure 5.4Bảng logins

Trang 21

* Bảng Posts

Figure 5.5Bảng Posts

Figure 5.6Bảng Posts

Trang 23

Figure 5.9Bảng Likee

Figure 5.10Bảng Comments

Trong quá trình tạo bảng em quên thêm trường dữ liệu "post_id" cho bảng Commentsnên đã update thêm cho bảng

Trang 24

Figure 5.11Bảng Comments

Figure 5.12Bảng Comments

* Bảng Followss

Figure 5.13Bảng Followss

Trang 25

Figure 5.14Bảng Followss

* Bảng Hashtags

Figure 5.15Bảng Hashtagg

Trang 26

Figure 5.16Bảng Hashtagg

* Bảng Hashtag_post

Figure 5.17Bảng Hashtag_post

* Bảng Hashtag_cmt

Trang 27

Figure 5.18Bảng Hashtag_post

Figure 5.19Bảng Hashtag_cmt

Ngày đăng: 14/08/2024, 23:16

w