Professional Documents
Culture Documents
Nhom11 BaiTapTuan1 2
Nhom11 BaiTapTuan1 2
sang mô hình CSDL hướng tài liệu (Document Database): bằng nhiều kiểu mô hình khác
nhau và nêu giả thiết để thấy được lý do tại sao thiết kế lưu trữ theo mô hình đó
Bài 1:
Users
_id: <Object> ,
first_name: "varchar",
surname: “varchar",
cell: ‘int’,
city: "varchar",
location_x: float ,
location_y: float ,
Professions
{
_id: <Object>,
Profession: "banking"
Cars
_id:<Object>
model’:’varchar’
year:date
user_id:’Object’
Giải thích :
Chúng em sử dụng mô hình này khi mình thường xuyên truy vấn đến hai collections
( User , Professions) , còn collection Cars thì không cần truy vấn đến nó nhiều cho nên
mình đề xuất mô hình này .
Users
_id: <Object> ,
first_name: "varchar",
surname: “varchar",
cell: ‘int’,
city: "varchar",
location_x: float ,
location_y: float ,
Cars
_id:<Object>
model’:’varchar’
year:date
Professions
_id: <Object>,
Profession: "banking"
user_id:<Object>
Mô hình 3:
Giải thích: Nhúng document car vào trong document user để tiện cho việc quản lý Cars.
Tách profession để truy vấn với tốc độ nhanh.
Mô hình 4:
Giải thích: Nhúng tất cả document vào trong 1 document user để tiện cho việc quản lý tất
cả các thông tin. Không bị trùng lặp dữ liệu quá nhiều, tiết kiệm bộ nhớ.
Bài 2:
Student {
_id: <Object>,
Name:’String’
Courses {
_id:<Object>,
Name : ‘String’
}
Dùng mô hình này vì : em nếu truy vấn 2 collections cùng 1 lúc (Students, Courses)
Students {
_id: <Object>,
Name:’String’
Courses {
_id:<Object>,
Name : ‘String’
Em dùng mô hình này vì hệ thống thường xuyên truy vấn thông tin nhanh hơn vì nó
không có liên kết với collection khác nên tốc độ truy vấn dữ liệu sẽ nhanh hơn .
Bài 3:
Mô hình 1 :
Name: "Fido",
Food: "Dry",
},
Name: "Rex",
Food: "Wet",
},
Name: "Bubbles",
Food: "Dry",
},
{
Name: "Cujo",
Food: "Wet",
Tag#: 1573,
Height(in): 15,
Weight(lbs): 21
},
Tag#: 2684,
Height(in): 9,
Weight(lbs): 7
},
Tag#: 3795,
Height(in): 27,
Weight(lbs): 130
},
Tag#: 4806,
Height(in): 6,
Weight(lbs): 5
Tag#: 1573,
Name: "Fido",
Breed: "Beagle",
Age: 1.5
},
Tag#: 2684,
Name: "Rex",
Breed: "Pekingese",
Color: "While",
Age: 9
},
Tag#: 3795,
Name: "Bubbles",
Breed: "Rottwller",
Color: "Black",
Age: 5
},
{
Tag#: 4806,
Name: "Cujo",
Breed: "Chihuahua",
Color: "Gold",
Age: 4
Ưu điểm: dễ thực hiện các lệnh truy vấn, các câu truy vấn có tốc độ thực hiện nhanh
chóng.
Nhược điểm: mô hình quá ròm rà, dài, dữ liệu bị trùng lắp quá nhiều
Tag#: 1573,
Name: "Fido",
Breed: "Beagle",
Age: 1.5
Food: "Dry",
Height(in): 15,
Weight(lbs): 21
},
{
Tag#: 2684,
Name: "Rex",
Breed: "Pekingese",
Color: "White",
Age: 9
Food: "Wet",
Height(in): 9,
Weight(lbs): 7
},
Tag#: 3795,
Name: "Bubbles",
Breed: "Rottweiler",
Color: "Black",
Age: 5
Food: "Dry",
Height(in): 27,
Weight(lbs): 130
},
Tag#: 4806,
Name: "Cujo",
Breed: "Chihuahua",
Color: "Gold",
Age: 4
Food: "Wet",
Height(in): 6,
Weight(lbs): 5
Bài 4:
TRUCK
{
TNUM: <Object>,
BASENUM:INT,
TYPENUM:{
TYPEDESC: { Array}
TMILES:float,
TBOUGHT:date,
TSERIAL:string
BASE{
BASENUM:<Object>,
BASECITY: ‘’String’’,
BASESTATE:”String”,
BASEPHON:String,
BASEMGR:String
Em dùng mô hình này là vì : khi cần truy vấn thông tin dữ liệu cùng 1 lúc thì ta sẽ đơn
giản hóa tra cứu dữ liệu, tiết kiệm thời gian.
TRUCK[{
TNUM:<Object>
BASE{
BASENUM:<Object>,
BASECITY: ‘’String’’,
BASESTATE:”String”,
BASEPHON:String,
BASEMGR:String
TMILES:float,
TBOUGHT:date,
TSERIAL:string
TYPE{
TYPENUM:<Object>
TYPEDESC:STRING
TNUM:<Object>
Giải thích:
Chúng em sử dụng mô hình này khi mình thường xuyên truy vấn đến hai collections (
Truck , Base ) , còn collection Type thì không cần truy vấn đến nó nhiều cho nên mình
đề xuất mô hình này
Bài 5:
USER{
WORK_POSITIONS : ARRAY
_ID:’OBJECT’
POSITIONS:’VARCHAR’
SALARY:’FLOAT’
}
UNIVERSITY
_ID:’OBJECT’
NAME:’VARCHAR’
INDEX:’INT’
USER_ID:’OBJECT’
Giải thích :
Chúng em sử dụng mô hình này khi mình thường xuyên truy vấn đến hai collections
( User , Work_Position ) , còn collection UNIVERSITY thì không cần truy vấn đến nó
nhiều cho nên mình đề xuất mô hình này
USER{
_ID : ‘OBJECT’
ADDRESS:’VARCHAR’
UNIVERSITY : ARRAY
_ID:’OBJECT’
NAME:’VARCHAR’
INDEX:’INT’
}
WORK_POSITIONS
_ID:’OBJECT’
POSITIONS:’VARCHAR
SALARY:’FLOAT’
USER_ID:’OBJECT’
Giải thích :
Chúng em sử dụng mô hình này khi mình thường xuyên truy vấn đến hai collections
( User , Univercity) , còn collection Work_position thì không cần truy vấn đến nó nhiều
cho nên mình đề xuất mô hình này