Bài tập lớn số – Đề Trang Bài tập lớn số ĐỀ Cho ERD ánh xạ sau: user(user_id, email, full_name, profile_pic, dob, gender, town, phone) registered_user(user_id, salt, password) facebook_user(user_id, facebook_id) google_user(user_id, google_id) country(country_id, country_name) state(state_id, country_id, state_name) city(city_id, city_name) city_in_country(city_id, country_id) city_in_state(city_id, state_id) street(street_id, street_name, city_id) place(place_id, name, lat, lng, address_number, street_id, parent_place_id, creator_id) place_comment(comment_id, place_id, user_id, comment) tagged_place_comment (comment_id, user_id, text, pos) route(route_id, place_depart, place_dest, vehicle, distance, note) route_comment(comment_id, route_id, user_id, comment) tagged_route_comment(comment_id, user_id, text, pos) place_pic(pic_id, place_id, url, timestamp, caption, description) tagged_pic(pic_id, user_id, x, y) place_pic_comment(comment_id, pic_id, user_id, comment) tagged_place_pic_comment(comment_id, user_id, text, pos) Hệ Cơ Sở Dữ Liệu – HK2 / 2014 – 2015 SinhVienZone.com Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin https://fb.com/sinhvienzonevn Bài tập lớn số – Đề Trang Hệ Cơ Sở Dữ Liệu – HK2 / 2014 – 2015 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin SinhVienZone.com https://fb.com/sinhvienzonevn Bài tập lớn số – Đề Trang PHẦN 1: TẠO CSDL TRÊN ORACLE (4đ) I Tạo bảng liệu ràng buộc thể sơ đồ (3đ) Ch V nghi ( ng bu UNIQUE NOT NULL) y user(user_id, email, full_name, profile_pic, dob, gender, town, phone) a user_id có dạng [RE|FB|GG][0-9]10, ó loạ ời dùng RE, FB, GG lầ ợ ứng với loại tài khoản trên, hệ thống tự ă ố thứ tự ó b email UNIQUE, NOT NULL c full_name NOT NULL d dob kiểu DATE có dạng YYYY/MM/DD e gender [Male|Female|Other] f phone có dạng +84([0-9]9[0-9|] g Yêu cầu KSTN: email có dạng biểu thức quy sau ^[a-zA-Z09._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}$ registered_user(user_id, salt, password) a salt password NOT NULL b salt chuỗi kí tự khơng bao gồm kí tự ặc biệt, UNIQUE, ợc sinh ngẫu nhiên ời dùng cập nhật password c password phả ợc nối với salt ă MD5 V cập nhật w = ‘12345’ = ‘zzz’ ố { ‘12345zzz’ { ă MD5 { ‘af7af8388c1062dfbf0f66b6b7032035’ ồi { f w facebook_user(user_id, facebook_id) a facebook_id UNIQUE, NOT NULL google_user(user_id, google_id) a google_id UNIQUE, NOT NULL country(country_id, country_name) a country_id kiểu kí tự ộ dài state(state_id, country_id, state_name) a state_id kiểu kí tự ộ dài 10 city(city_id, city_name) a city_id kiểu số yê ộ dài 32 city_in_country(city_id, country_id) city_in_state(city_id, state_id) 10 street(street_id, street_name, city_id) a country_name, state_name, city_name, stree_name NOT NULL 11 place(place_id, name, lat, lng, address_number, street_id, parent_place_id, creator_id) a name, lat, lng, address_number, street_id NOT NULL b lat, lng kiểu số thực Hệ Cơ Sở Dữ Liệu – HK2 / 2014 – 2015 SinhVienZone.com Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin https://fb.com/sinhvienzonevn Bài tập lớn số – Đề Trang c address_number có dạng ([0-9]+[A-Z|][/|])+[bis|] 12 place_comment(comment_id, place_id, user_id, comment) 13 tagged_place_comment (comment_id, user_id, text, pos) 14 route(route_id, place_depart, place_dest, vehicle, distance, note) 15 route_comment(comment_id, route_id, user_id, comment) 16 tagged_route_comment(comment_id, user_id, text, pos) 17 place_pic(pic_id, place_id, url, timestamp, caption, description) 18 tagged_pic(pic_id, user_id, x, y) 19 place_pic_comment(comment_id, pic_id, user_id, comment) 20 tagged_place_pic_comment(comment_id, user_id, text, pos) a _comment, cộ NOT NULL { | ‘’ b tagged_ _comment, text có giá trị mặ ị { ‘’ mặ ịnh ó | ị II Tạo Index (1đ) Các truy vấn ị ể (PLACE) ờng tìm kiếm theo toạ ộ ột vị í } x y ì | ị ểm nằm vùng hình vng có px, py trung tâm, cạnh a o Vd: cho px, py, tìm tất | ị ểm có lat [px – a/2, px + a/2] lng [py – a/2, py + a/2] mã ờng street_id D y y x yx u PHẦN 2: STORE PROCEDURE, FUNCTION, TRIGGER (3đ) I Trigger (1.5đ) Đảm bảo user_id thuộc nhiề ại tài khoản (registered, facebook, google) Đảm bảo CITY vừa thuộc STATE vừa thuộc COUNTRY Đảm bảo distance ROUTE chênh lệch 5Km tính theo khoảng cách lat, lng PLACE Đảm bảo ràng buộc PLACE chứa PLACE khác, street_id PLACE ó ải giống (*) Yêu cầ KSTN (*) Đảm bảo không xuất chu trình quan hệ chứa PLACE II Store Procedure/Function (1.5đ) Cho bảng thống kê user_statistic(user_type, user_count) Viết thủ tục thống kê số ợng loạ ời dùng vào bảng ( _ y = [‘ ’ ‘f ’ ‘ ’]) Cho bảng thống kê place_statistic(place_id, popularity) Viết thủ tục thống kê mức phổ biến ịa ểm (tính theo số comment) (*) Yêu cầu KSTN: (*) Mức phổ biến tính theo số user bị tag comment Hệ Cơ Sở Dữ Liệu – HK2 / 2014 – 2015 SinhVienZone.com Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin https://fb.com/sinhvienzonevn Bài tập lớn số – Đề Trang PHẦN 3: THAO TÁC CƠ SỞ DỮ LIỆU (3đ) I Insert (1.5đ) T n vi c nh p D II u Update (0.25đ) Cập nhậ t USER Cập nhật street_id PLACE Cập nhật note distance ROUTE III Delete (0.25đ) y x USER hợp thành công thất bại IV y x y ụ cho u ờng Select (1.5đ) Liệt kê thông tin nhữ Liệt kê thông tin nhữ 40Km (*) Đếm số comment, số Yêu cầu KSTN: (*) phả tính theo lat, lng) Chú ý: S y ị ị ểm có thành phố ‘ C í M ể | ị ể ‘Suố T ê ’ ’ ò | í ợc tag từ ị ểm ợc thực cách (truy vấn theo distance tự I II Hệ Cơ Sở Dữ Liệu – HK2 / 2014 – 2015 SinhVienZone.com ó III y u Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin https://fb.com/sinhvienzonevn ... số comment) (*) Yêu cầu KSTN: (*) Mức phổ biến tính theo số user bị tag comment Hệ Cơ Sở Dữ Liệu – HK2 / 2014 – 2015 SinhVienZone. com Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin https://fb .com/ sinhvienzonevn... street_id NOT NULL b lat, lng kiểu số thực Hệ Cơ Sở Dữ Liệu – HK2 / 2014 – 2015 SinhVienZone. com Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin https://fb .com/ sinhvienzonevn Bài tập lớn số – Đề Trang c...Bài tập lớn số – Đề Trang Hệ Cơ Sở Dữ Liệu – HK2 / 2014 – 2015 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin SinhVienZone. com https://fb .com/ sinhvienzonevn Bài tập lớn số – Đề Trang PHẦN