6. Bố cục luận văn
3.2. XÂY DỰNG KỊCH BẢN CHUYỂN ĐỔI CƠ SỞ DỮ LIỆU
Với giả thiết hệ thống quản lý đa dạng thực vật đã tồn tại và đang hoạt động với CSDL bao gồm số lƣợng lớn bản ghi, luận văn cần thực hiện chuyển đổi CSDL từ mô hình dữ liệu quan hệ truyền thống sang CSDL quan hệ đƣợc thiết kế theo AM.
CSDL chứa dữ liệu nguyên thuỷ đƣợc thiết kế theo mô hình ER có tên ER. CSDL đƣợc thiết kế theo AM có tên AM. Từ ban đầu, các định danh của các tập thực thể đƣợc chọn kiểu dữ liệu int. Vì thế, có thể sử dụng các bộ giá trị khoá làm các bộ giá trị cho anchor trong AM. Rõ ràng, với mỗi loại thuộc tính cũng nhƣ mối quan hệ theo AM ta có cách chuyển đổi dữ liệu từ CSDL cũ theo ER sang CSDL mới theo AM khác nhau.
Nhƣ vậy, cần xây dựng kịch bản (script) để tự động hóa tối đa quá trình chuyển đổi CSDL này. Sự tƣơng ứng giữa các bảng theo ER và AM (xem phụ lục C).
Có thể tham khảo kịch bản đầy đủ ở phụ lục D. Bảng 3.15 đƣa ra một số trƣờng hợp tiêu biểu.
Bảng 3.15 Một số trường hợp tiêu biểu cho kịch bản chuyển đổi CSDL
Tập thực
thể Thuộc tính
Script
Giới
Anchor INSERTMaGioi FROMINTO AM.dbo.GI_Gioi ER.dbo.Gioi (GI_ID) SELECT
DanhPhapKhoaHoc
INSERTINTO
AM.dbo.GI_GKH_Gioi_DanhPhapKhoaHoc(GI_GKH_ GI_ID,GI_GKH_Gioi_DanhPhapKhoaHoc)
SELECT MaGioi,DanhPhapKhoaHoc FROM
ER.dbo.Gioi
TenGoiTiengViet
INSERTINTO
AM.dbo.GI_GTV_Gioi_TenGoiTiengViet(GI_GTV_GI_ ID,GI_GTV_Gioi_TenGoiTiengViet)
SELECT MaGioi,TenGoiTiengViet FROM ER.dbo.Gioi WHERE TenGoiTiengViet IS NOT NULL
Gioi_DacDiem
INSERTINTO
AM.dbo.GI_GDI_Gioi_DacDiem(GI_GDI_GI_ID,GI_G DI_Gioi_DacDiem,GI_GDI_ChangedAt)
SELECT MaGioi,DacDiem,GETDATE() FROM
ER.dbo.Gioi WHERE DacDiem IS NOT NULL
Ngành
…
Mối quan hệ 1-n giữa giới và ngành
INSERTINTO
AM.dbo.GI_Gom_NG_Thuoc(GI_ID_gom,NG_ID_thuo c) SELECT MaGioi,MaNganh FROM ER.dbo.Nganh
Loài
…
PhanHang INSERTINTO
A_PHA_HAN_ID,LA_PHA_ChangedAt)
SELECT
ER.dbo.MaLoai,AM.dbo.HAN_Hang.HAN_ID,GETDA TE()FROM ER.dbo.Loai
INNERJOIN HAN_Hang ON ER.dbo.Loai.PhanHang = AM.dbo.HAN_Hang.HAN_Hang Phân bố theo khu bảo tồn Mối quan hệ n-n giữa phân bố và khu
bảo tồn
INSERTINTO
AM.dbo.TT_tai_BT_gom(BT_ID_gom,TT_ID_tai,TT_ta i_BT_gom_ChangedAt)
SELECT MaPhanBo,MaKhuBaoTon,GETDATE()
FROM ER.dbo.PhanBoTheoKhuBaoTon
Phƣờng Xã
…
Mối quan hệ 1-n giữa quận huyện và
phƣờng xã
INSERTINTO
AM.dbo.QH_co_PX_thuoc(QH_ID_co,PX_ID_thuoc)
SELECT MaQuanHuyen,MaPhuongXa FROM
ER.dbo.PhuongXa Mối quan hệ n-n
giữa phân bố và phƣờng xã
INSERTINTO
AM.dbo.PX_gom_TT_thuoc(PX_ID_gom,TT_ID_thuoc, PX_gom_TT_thuoc_ChangedAt)
SELECT MaPhuongXa,MaPhanBo,GETDATE()FROM
ER.dbo.PhanBoTheoKhuHanhChinh Tài khoản … Knot GioiTinh INSERTINTO AM.dbo.GTI_CacGioiTinh(GTI_CacGioiTinh)
SELECTDISTINCT GioiTinh FROM ER.dbo.TaiKhoan
GioiTinh
INSERTINTO AM.dbo.TK_GTI_TaiKhoan_GioiTinh (TK_GTI_TK_ID,TK_GTI_GTI_ID) SELECT
ER.dbo.MaTaiKhoan,AM.dbo.GTI_CacGioiTinh.GTI_I D FROM ER.dbo.TaiKhoan
INNERJOIN AM.dbo.GTI_CacGioiTinh ON
ER.dbo.TaiKhoan.GioiTinh =