1. Trang chủ
  2. » Cao đẳng - Đại học

CHỦ ĐỀ 3: PHÂN TÍCH, THIẾT KẾ VÀ CÀI ĐẶT CSDL( LẬP TRÌNH WEB )

143 501 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 143
Dung lượng 921,24 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Cơ sở dữ liệu ứng dụng: Một cơ sở dữ liệu ứng dụng có thể có các loại file sau: • Primary Files: Mỗi CSDL phải có ít nhất một tập tin Primary Data File với phần mở rộng là .MDF.. Ràn

Trang 1

THIẾT KẾ VÀ LẬP TRÌNH WEB

TRƯỜNG ĐẠI HỌC NHA TRANG

Chủ đề 3 PHÂN TÍCH, THIẾT KẾ VÀ CÀI ĐẶT CƠ SỞ DỮ LIỆU

CHO ỨNG DỤNG WEB

Trang 2

1 Các triết lý xây dựng Website

- Mục đích, nội dung của Website cần thiết kế

- Xác định đối tượng độc giả của Website

- Thiết lập các chủ đề

- Thiết kế các khối thông tin chủ yếu sẽ cung cấp

Trang 3

2 Phân tích, thiết kế, cài đặt và lập trình cơ sở dữ liệu cho bài toán

Trang 4

2.2 Thiết kế bài toán

- Thiết kế giao diện

- Thiết kế dữ liệu

- Thiết kế xử lý

Trang 5

3 Hệ quản trị CSDL SQL Server

- SQL (Structured Query Language) là ngôn ngữ chuẩn được thiết kế để truy vấn và quản lý dữ

liệu trên hệ quản trị CSDL quan hệ.

- Đối với hệ quản trị CSDL SQL Server thì ngôn ngữ dùng để tương tác với cơ sở dữ liệu là T – SQL Ngôn ngữ T – SQL trên SQL Server bao gồm nhiều câu lệnh khác nhau, có thể chia thành 3 nhóm:

• Ngôn ngữ định nghĩa dữ liệu (DDL - Data Definition Language): với các lệnh cho phép tạo, thay đổi

cấu trúc và xóa bỏ các đối tượng cơ sở dữ liệu như: view, table, database,…

• Ngôn ngữ thao tác dữ liệu (DML - Data Manipulation Language): với các lệnh như SELECT /

INSERT /UPDATE /DELETE cho phép lấy về dữ liệu cụ thể, thay đổi giá trị của dữ liệu

• Ngôn ngữ điều khiển dữ liệu (DCL): với các lệnh cho phép hay ngăn chặn người dùng thao tác

dữ liệu.

Trang 6

Cơ sở dữ liệu trong SQL Server

- Cơ sở dữ liệu hệ thống:

master: Ghi nhận thông tin cấp hệ thống, thông tin khởi tạo SQL Server và thiết lập

cấu hình SQL Server Database này cũng ghi nhận tất cả các tài khoản đăng nhập, sự tồn tại của các Database khác, vị trí tập tin chính cho tất cả Database người dùng.

tempdb: Giữ các bảng tạm, các storedd procedure tạm, Được dùng cho các nhu cầu

lưu trữ tạm của SQL Server.

model: là khuôn mẫu cho tất cả các CSDL khác được tạo trên hệ thống kể cả tempdb

Database model phải được tồn tại trên hệ thống, bởi vì nó được dùng để tạo lại tempdb

Trang 7

- Cơ sở dữ liệu ứng dụng:

 Một cơ sở dữ liệu ứng dụng có thể có các loại file sau:

• Primary Files: Mỗi CSDL phải có ít nhất một tập tin Primary Data File với

phần mở rộng là MDF Tập tin này ngoài nhiệm vụ cất trữ dữ liệu thuần túy còn nhiệm vụ lưu trữ thông tin liên quan đến cấu trúc và đặc điểm của chính CSDL đó (lưu trong các system tables).

• Secondary Files: Mỗi CSDL có thể không có hoặc có nhiều Secondary

Data File Các tập tin này chỉ thuần túy lưu trữ dữ liệu và có phần mở rộng là NDF

Trang 8

• Log Files: Mỗi CSDL phải có ít nhất một transaction log file (có phần mở

rộng là LDF) Log file làm nhiệm vụ lưu trữ thông tin liên quan các giao dịch (transaction) thực hiện trên CSDL đó Thông tin này một phần phục vụ cho thao tác Roll Back khi có lỗi giao dịch xảy ra

• Các tập tin CSDL được tổ chức thành file group (nhóm) theo nguyên tắc:

Một CSDL có thể có một hay nhiều file group Trong đó bắt buộc phải có một file group chính gọi là PRIMARY

Trang 9

• Mỗi file group có thể chứa một hay nhiều file (.MDF, NDF) Trong đó phải

có ít nhất 1 tập tin Primary File (.MDF) nằm trong group chính PRIMARY

• Các tập tin Log không thuộc về một file group nào cả.

Trang 10

Tạo CSDL:

Sử dụng lệnh CREATE DATABASE

CREATE DATABASE <Tên CSDL>

[ON PRIMARY <Khai báo tập tin MDF>, [<Khai báo tập tin NDF>,]…]

[FILEGROUP <Tên file group> <Khai báo tập tin NDF>, [<Khai báo tập tin NDF>,]…]

[LOG ON <Khai báo tập tin LDF>, [<Khai báo tập tin LDF>,]…]

Trang 12

Sử dụng Management Tool

R_Click Database → New Database …

Trang 13

Đặt tên CSDL → OK

Trang 15

Kiểu dữ liệu của SQL Server:

bigint Số nguyên 8 byte

binary[(n)] Dữ liệu nhị phân có kích thước cố định n byte Kích thước lưu trữ

là n+4 byte Với 1<n<8000 bit Dữ liệu số nguyên nhận các giá trị 0, 1 hoặc NULL

char[(n)] Dữ liệu ký tự, có chiều dài n ký tự, không hỗ trợ Unicode Với độ

Trang 16

float Dữ liệu số động có phạm vi từ -1.79E+308 đến 1.79E+308

image Dữ liệu nhị phân có chiều dài thay đổi, dài hơn 8000 byte và

tối đa là 2^31-1 byte.

int Dữ liệu số nguyên từ -2^31 đến 2^31-1 Chiếm 4 byte.

money Dữ liệu kiểu tiền tệ từ -2^63 đến 2^63 Chiếm 8byte.

nchar[(n)] Dữ liệu ký tự, có chiều dài cố định n ký tự Có hỗ trợ Unicode

Với 1<n<4000 Chiếm 2n byte.

ntext Dữ liệu ký tự có chiều dài thay đổi, với chiều dài tối đa là

2^30-1 ký tự Hỗ trợ unicode.

Trang 17

real Dữ liệu số thực động, phạm vi từ - 3.4E+38 đến 3.4E+38 Chiếm 4

byte.

smalldatetime Dữ liệu ngày giờ từ 1/1/1900 đến 6/6/2079 Chiếm 4 byte.

smallint Dữ liệu số nguyên từ -2^15 đến 2^15-1 Chiếm 2 byte.

smallmoney Dữ liệu kiểu tiền tệ từ -2^31 đến 2^31 Chiếm 4 byte.

sql_variant Cho phép giữ các giá trị của các kiểu dữ liệu khác nhau (tất cả các

kiểu dữ liệu hệ thống khác).

text Dữ liệu ký tự có chiều dài thay đổi, dài hơn 8000byte Có thể lưu tới

2^31 ký tự Không hỗ trợ Unicode.

timestamp Cột timestamp được cập nhật tự động mỗi khi dòng được thêm hoặc

được cập nhật Mỗi bảng chỉ có thể có 1 cột timestamp Kích thước lưu trữ là 8 byte.

Trang 18

Mã loại SP – Khóa chính Tên loại SP

Tên thuộc tính Kiểu dữ liệu Giải thích MaSP

TenSP Dongia

nvarchar(10) nvarchar(40) money

Mã sản phẩm – Khóa chính Tên sản phẩm

Đơn giáSANPHAM

Trang 19

Tạo bảng:

Chọn đối tượng Tables trong

CSDL cần thiết kế → R_Click

→ New Table …

Trang 20

- Nhập tên thuộc tính tại Column Name

- Thiết kế kiểu dữ liệu tại Data Type

- Thiết lập khóa chính: Chọn thuộc tính làm khóa chính → R_Click →

Set Primary Key

Trang 21

Lưu ý:

- Thay đổi thiết kế bảng: Chọn bảng cần thay đổi → R_Click → Design

- Xóa bảng: Chọn bảng cần xóa → R_Click → Delete

Trang 22

Lược đồ - Database Diagrams

• Ý nghĩa: Dùng để thiết lập mối quan hệ giữa các bảng, kiểm tra sự liên

kết dữ liệu giữa các thuộc tính khoá ngoại của các bảng dữ liệu.

Trang 23

- Các mối quan hệ:

Quan hệ một - một: Quan hệ giữa hai bảng được thiết lập khi trường quan

hệ đều là khóa chính ở cả hai bảng

Quan hệ một - nhiều: Quan hệ giữa hai bảng mà khóa chính trong một bảng

được kết nối với trường (thuộc tính) là khoá ngoại của một bảng khác

Trang 24

Nhập dữ liệu trực tiếp vào bảng

Chọn bảng cần nhập liệu →

R_Click → Edit Top 200 Rows

→ Nhập dữ liệu vào các cột của

bảng

Lưu ý, khi nhập dữ liệu vào các bảng nên chú ý các ràng buộc toàn vẹn:

Trang 25

Thiết kế bảng bằng lệnh T – SQL:

Tạo bảng:

CREATE TABLE <Tên bảng>

(

<tên cột 1> <kiểu dữ liệu> [<các ràng buộc cột 1>]

<tên cột 2> <kiểu dữ liệu> [<các ràng buộc cột 2>]

Trang 26

Ví dụ:

CREATE TABLE NHANVIEN

(

MaNV varchar (10) PRIMARY KEY ,

HoNV nvarchar (30) NOT NULL,

TenNV nvarchar (20) NOT NULL,

GioiTinh bit DEFAULT (1),

NgaySinh Date NOT NULL,

DiaChi nvarchar (100) NOT NULL,

DienThoai nvarchar (15) NULL

Trang 27

CÁC LOẠI RÀNG BUỘC:

Các ràng buộc được xây dựng nhằm đảm bảo dữ liệu nhập tuân theo đúng các yêu cầu của người thiết kế CSDL

a Ràng buộc CHECK

- Ràng buộc CHECK được sử dụng nhằm chỉ định điều kiện hợp lệ đối với

dữ liệu mỗi khi có dữ liệu được thêm vào bảng hoặc dữ liệu trong bảng được cập nhật

- Ràng buộc CHECK có cú pháp như sau:

[CONSTRAINT tên_ràng_buộc] CHECK (điều_kiện)

Trang 28

Ví dụ, tạo bảng SANPHAM có ràng buộc Đơn giá có giá trị lớn hơn hoặc bằng 0

CREATE TABLE SANPHAM

(

MaSP nvarchar (10) PRIMARY KEY ,

TenSP nvarchar (40) NOT NULL,

DonGia money NOT NULL,

MaLoaiSP nvarchar (10) NOT NULL,

CONSTRAINT CHK_DG CHECK (DonGia >= 0)

)

Trang 29

Trong trường hợp không cần sử dụng tên của ràng buộc, chúng

ta có thể định nghĩa ràng buộc CHECK ngắn gọn như sau:

CREATE TABLE SANPHAM

(

MaSP nvarchar (10) PRIMARY KEY ,

TenSP nvarchar (40) NOT NULL,

DonGia money NOT NULL CHECK (DonGia >=0),

MaLoaiSP nvarchar (10) NOT NULL

)

Trang 30

b Ràng buộc Primary Key

- Ràng buộc PRIMARY KEY được sử dụng để định nghĩa khoá chính của bảng

- Ràng buộc PRIMARY KEY là cơ sở cho việc đảm bảo tính toàn vẹn dữ liệu trong bảng cũng như toàn vẹn tham chiếu

- Để khai báo một ràng buộc PRIMARY KEY, ta sử dụng cú pháp như sau: [CONSTRAINT tên_ràng_buộc] PRIMARY KEY [(danh_sách_cột)]

Trang 31

Ví dụ, với bảng SANPHAM, ta có thể dùng lệnh như sau:

(

MaSP nvarchar (10),

TenSP nvarchar (40) NOT NULL,

DonGia money NOT NULL CHECK (DonGia > 0),

MaLoaiSP nvarchar (10) NOT NULL,

CONSTRAINT PK_SP PRIMARY KEY ( MaSP )

)

Lưu ý, trong trường hợp không cần tên ràng buộc, ta có thể khai báo

PRIMARY KEY sau thuộc tính làm khóa chính.

Trang 32

c Ràng buộc Foreign Key

- FOREIGN KEY là một cột hay một sự kết hợp của nhiều cột được sử dụng

để tạo ra mối liên kết dữ liệu giữa hai bảng

- Trong một bảng có thể có nhiều FOREIGN KEY và có thể chứa giá trị NULL

- FOREIGN KEY có chức năng dùng để kiểm soát dữ liệu chứa trong các bảng có có liên kết dữ liệu

Trang 34

- SET NULL: Cập nhật lại giá trị khoá ngoại của dòng trong bảng con thành NULL nếu dòng được tham chiếu trong bảng cha bị xóa (nếu cột khóa ngoại cho phép nhận giá trị NULL)

- SET DEFAULT: Cập nhật lại giá trị khoá ngoại của dòng trong bảng con thành giá trị mặc định của cột nếu dòng được tham chiếu trong bảng

Trang 35

Ví dụ, tạo bảng SANPHAM trong đó MaSP là khóa chính, MaLoaiSP là khóa ngoại, điều kiện ràng buộc DonGia lớn hơn hoặc bằng 0.

CREATE TABLE SANPHAM

(

MaSP nvarchar (10),

TenSP nvarchar (40) NOT NULL,

DonGia money NOT NULL CHECK ( DonGia >= 0),

MaLoaiSP nvarchar (10) NOT NULL,

CONSTRAINT PK_SP PRIMARY KEY ( MaSP ),

CONSTRAINT FK_L_SP FOREIGN KEY ( MaLoaiSP) REFERENCES LOAISP (MaLoaiSP)

ON DELETE CASCADE

ON UPDATE CASCADE

Trang 36

CREATE TABLE SANPHAM

(

MaSP nvarchar (10) PRIMARY KEY ,

TenSP nvarchar (40) NOT NULL,

DonGia money NOT NULL CHECK (DonGia >= 0),

MaLoaiSP nvarchar (10) NOT NULL FOREIGN KEY REFERENCES LOAISP

(MaLoaiSP)

ON DELETE CASCADE

Trang 37

d Ràng buộc UNIQUE

- Ràng buộc UNIQUE đảm bảo giá trị của một dòng tại một hay nhiều cột tham gia ràng buộc là duy nhất

- Để khai báo một ràng buộc UNIQUE, ta sử dụng cú pháp như sau:

[CONSTRAINT <tên ràng buộc> UNIQUE [(<danh sách cột>)]

Trang 38

Ví dụ, tạo bảng LOAISP trong đó MaLoaiSP là khóa chính, TenLoaiSP không có giá trị trùng nhau:

CREATE TABLE LOAISP

(

MaLoaiSP nvarchar (10) PRIMARY KEY ,

TenLoaiSP nvarchar (40) NOT NULL,

CONSTRAINT U_TenLoai UNIQUE ( TenLoaiSP )

)

Hoặc:

CREATE TABLE LOAISP

(

MaLoaiSP nvarchar (10) PRIMARY KEY ,

TenLoaiSP nvarchar (40) NOT NULL UNIQUE

Trang 39

MaNV varchar(10) PRIMARY KEY,

HoTenNV nvarchar(40) NOT NULL,

GioiTinh bit DEFAULT(1),

DiaChi nvarchar(100) NOT NULL

)

Trang 40

Sửa đổi thiết kế bảng:

- Khi muốn thay đổi cấu trúc một bảng ta dùng lệnh ALTER TABLE Câu lệnh này cho phép thực hiện được các thao tác sau:

• Bổ sung một cột vào bảng

• Xoá một cột khỏi bảng

• Thay đổi định nghĩa của một cột trong bảng

• Xoá bỏ hoặc bổ sung các ràng buộc cho bảng

Trang 41

Cú pháp của câu lệnh ALTER TABLE như sau trong các trường hợp như sau:

Thêm cột vào bảng ALTER TABLE <tên_bảng>

ADD <định_nghĩa_cột>

Sửa cột trong bảng ALTER TABLE <tên_bảng>

ALTER COLUMN <tên_cột> <kiểu_dữ_liệu> [NULL | NOT NULL]

Xóa một trong bảng ALTER TABLE <tên_bảng>

DROP COLUMN <tên_cột>

Thêm ràng buộc vào bảng ALTER TABLE <tên_bảng>

ADD CONSTRAINT <tên_ràng_buộc >

<định_nghĩa_ràng_buộc >

Xóa ràng buộc ALTER TABLE <tên_bảng>

Trang 42

Một số lưu ý:

- Nếu bổ sung thêm một cột vào bảng và trong bảng đã có ít nhất một bản ghi thì cột mới cần bổ sung phải cho phép chấp nhận giá trị NULL hoặc phải có giá trị mặc định

- Muốn xoá một cột đang được ràng buộc bởi một ràng buộc hoặc đang được tham chiếu bởi một khoá ngoài, ta phải xoá ràng buộc hoặc khoá ngoại trước sao cho trên cột không còn bất kỳ một ràng buộc và không còn được tham chiếu bởi bất kỳ khoá ngoại nào

- Nếu bổ sung thêm ràng buộc cho một bảng đã có dữ liệu và ràng buộc cần

bổ sung không được thoả mãn bởi các bản ghi đã có trong bảng thì câu lệnh

Trang 43

Một số ví dụ:

- Bổ sung thêm thuộc tính Email vào bảng NHANVIEN:

ALTER TABLE NHANVIEN

ADD Email nvarchar (50) NULL

- Thay đổi kích thước thuộc tính Email:

ALTER TABLE NHANVIEN

ALTER COLUMN Email nvarchar (40) NULL

- Xóa thuộc tính Email trong bảng NHANVIEN:

ALTER TABLE NHANVIEN

DROP COLUMN Email

Trang 44

Xóa bảng:

- Ta có thể xoá nó ra khỏi cơ sở dữ liệu bằng câu lệnh DROP TABLE Câu lệnh này cũng đồng thời xoá tất cả dữ liệu, ràng buộc, chỉ mục,… liên quan đến bảng

đó

- Câu lệnh có cú pháp như sau:

DROP TABLE <tên bảng>

- Câu lệnh DROP TABLE không thể thực hiện được nếu bảng cần xoá đang được tham chiếu bởi một ràng buộc FOREIGN KEY Trong trường hợp này, ràng

Trang 45

(N‘QA01', N‘Quấn áo')

Hoặc:

INSERT INTO LOAISP VALUES ( N‘QA01' , N‘Quấn áo' )

Trang 46

b Lệnh Update

- Ý nghĩa: Dùng để sửa đổi dữ liệu.

- Cú pháp:

UPDATE <Tên bảng>

SET <Tên_cột_1=Biểu_thức_1, Tên_cột_2=Biểu_thức_2,… > [ WHERE <điều kiện>]

• Ví dụ: Tìm mã loại SP là: QA01, thay đổi tên loại SP thành “Quần áo hàng chất lượng cao”

UPDATE LOAISP SET TenLoaiSP=N' Quần áo hàng chất lượng cao ' WHERE

MaLoaiSP=N'QA01'

Trang 47

c Lệnh Delete

- Ý nghĩa: Xoá một số hàng trong bảng

- Cú pháp:

DELETE FROM <Tên bảng> WHERE <Điều kiện>

Ví dụ, Xoá hàng dữ liệu trong bảng LOAISP có mã loạiSP là ‘QA01’

DELETE LOAISP WHERE MaLoaiSP=N‘QA01'

Trang 48

Truy vấn cơ bản:

SELECT [ALL | DISTINCT] [TOP <số lượng>] <Danh sách chọn> [INTO

<Tên bảng mới>]

FROM <Danh sách bảng/Khung_nhìn>

[WHERE <Điều kiện>]

[GROUP BY <Danh sách cột>

[HAVING <Điều kiện>]]

[ORDER BY <Cột sắp xếp>]

Trang 50

- Lưu ý: Trong mệnh đề WHERE thường sử dụng:

• Các toán tử logic (AND, OR, NOT)

• Các toán tử so sánh (>, <, =,>=,<=,<>,!>,!<)

• Kiểm tra giới hạn của dữ liệu (BETWEEN, NOT BETWEEN)

Trang 51

• Kiểm tra danh sách: (IN, NOT IN)

• Kiểm tra khuôn dạng dữ liệu: (LIKE)

• Chuỗi ký tự bất kỳ gồm 0 hoặc nhiều ký tự %

• Ký tự đơn bất kỳ _

• Ký tự đơn bất kỳ trong giới hạn [] ([a-f] hoặc [abcdef])

• Ký tự đơn bất kỳ không trong giới hạn [^] ([^a-f] hoặc [^abcdef])

• Kiểm tra giá trị NULL

Trang 52

Một số ví dụ:

- SELECT * FROM NhaCungCap WHERE MaNhaCungCap=1

- SELECT * FROM NhaCungCap WHERE MaNhaCungCap>1 AND

MaNhaCungCap<5

- SELECT * FROM NhaCungCap WHERE MaNhaCungCap BETWEEN 1 AND 5

- SELECT * FROM NhaCungCap WHERE MaNhaCungCap IN (2, 3, 4)

- SELECT * FROM NhaCungCap WHERE TenNhaCungCap LIKE N‟LÊ%‟

- SELECT * FROM NhaCungCap WHERE Fax IS NULL

Trang 53

c Mệnh đề ORDER BY

- Mặc định, các dòng dữ liệu trong kết quả của câu truy vấn tuân theo thứ tự của chúng trong bảng dữ liệu hoặc được sắp xếp theo chỉ mục (nếu trên bảng có chỉ mục).

- Trong trường hợp muốn dữ liệu được sắp xếp theo chiều tăng hoặc giảm của giá trị của một hoặc nhiều trường, ta sử dụng thêm mệnh đề ORDER BY trong câu lệnh SELECT

• ASC: tăng dần

• DESC: giảm dần

Ví dụ:

Trang 54

d Mệnh đề GROUP BY và HAVING

- Mệnh đề GROUP BY được sử dụng nhằm phân hoạch các dòng dữ liệu trong bảng thành các nhóm dữ liệu, và trên mỗi nhóm dữ liệu thực hiện tính toán các giá trị thống kê như tính tổng, tính giá trị trung bình,

- Mệnh đề HAVING được sử dụng nhằm chỉ định điều kiện đối với các giá trị thống kê được sản sinh từ các hàm gộp tương tự như cách thức mệnh đề WHERE

- Mệnh đề HAVING thường không thực sự có nghĩa nếu như không sử dụng kết hợp với mệnh đề GROUP BY

- Một điểm khác biệt giữa HAVING và WHERE là trong điều kiện của

Ngày đăng: 22/02/2019, 19:07

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm