HQT2 Người dùng có thể sử dụng EC2 Amazon để khởi tạo nhiều tài nguyên máy chủ theo nhu cầu sử dụng, cấu hình mạng, bảo mật và dung lượng lưu trữ. EC2 cho phép người dùng tăng, giảm quy mô tùy thích để xử lý nhu cầu công việc một cách nhanh chóng với các đặc điểm nổi bật:
Môi trường ảo thực hiện các tính toán được gọi là instances.
Có các template cấu hình sẵn cho các instances, gọi là Amazon Machine Images, gồm các gói dịch vụ cần thiết cho máy chủ người dùng.
Instance type bao gồm các cấu hình khác nhau cho instances về CPU, dung lượng lưu trữ, bộ nhớ, hệ thống mạng.
Thông tin login của instances được bảo mật bằng cách dùng key pair AWS để lưu key public, còn người dùng sẽ lưu key private.
Khi bạn tạm dừng hoặc ngắt các instances, dữ liệu tạm thời sẽ bị xóa bỏ, gọi là instance store volumes.
Amazon Elastic Block Store (Amazon EBS volumes) được dùng để lưu trữ dung lượng liên tục cho dữ liệu người dùng.
Tài nguyên người dùng được lưu trữ ở nhiều vị trí khác nhau, ví dụ như Amazon EBS volumes và instance được gọi là regions and Availability Zones.
Dịch vụ tường lửa cho phép bạn tùy chỉnh các cổng, giao thức, các giải nguồn IP có thể tiếp cận instances bạn đang sử dụng.
Địa chỉ IPv4 tĩnh được gọi là Elastic IP addresses.
Bạn có thể gán các siêu dữ liệu cho tài nguyên Amazon EC2.
Hệ thống mạng ảo có thể được tách biệt với phần còn lại của hệ thống đám mây AWS. Người dùng có thể kết nối với mạng riêng của mình, gọi là Virtual Private Clouds.
Lưu trữ trên Amazon Simple Storage Service – Amazon S3
Amazon S3 là không gian để lưu trữ và trích xuất bất cứ dữ liệu nào ở bất cứ đâu. Dịch vụ lưu trữ này có độ bền và độ sẵn sàng cực kỳ cao, hiệu suất, tính bảo mật luôn dẫn đầu trong ngành, không giới hạn khả năng thay đổi quy mô với mức chi phí cực kỳ thấp.
HQT2 Người dùng có thể sử dụng EC2 Amazon để khởi tạo nhiều tài nguyên máy chủ theo nhu cầu sử dụng, cấu hình mạng, bảo mật và dung lượng lưu trữ. EC2 cho phép người dùng tăng, giảm quy mô tùy thích để xử lý nhu cầu công việc một cách nhanh chóng với các đặc điểm nổi bật:
Môi trường ảo thực hiện các tính toán được gọi là instances.
Có các template cấu hình sẵn cho các instances, gọi là Amazon Machine Images, gồm các gói dịch vụ cần thiết cho máy chủ người dùng.
Instance type bao gồm các cấu hình khác nhau cho instances về CPU, dung lượng lưu trữ, bộ nhớ, hệ thống mạng.
Thông tin login của instances được bảo mật bằng cách dùng key pair AWS để lưu key public, còn người dùng sẽ lưu key private.
Khi bạn tạm dừng hoặc ngắt các instances, dữ liệu tạm thời sẽ bị xóa bỏ, gọi là instance store volumes.
Amazon Elastic Block Store (Amazon EBS volumes) được dùng để lưu trữ dung lượng liên tục cho dữ liệu người dùng.
Tài nguyên người dùng được lưu trữ ở nhiều vị trí khác nhau, ví dụ như Amazon EBS volumes và instance được gọi là regions and Availability Zones.
Dịch vụ tường lửa cho phép bạn tùy chỉnh các cổng, giao thức, các giải nguồn IP có thể tiếp cận instances bạn đang sử dụng.
Địa chỉ IPv4 tĩnh được gọi là Elastic IP addresses.
Bạn có thể gán các siêu dữ liệu cho tài nguyên Amazon EC2.
Hệ thống mạng ảo có thể được tách biệt với phần còn lại của hệ thống đám mây AWS. Người dùng có thể kết nối với mạng riêng của mình, gọi là Virtual Private Clouds.
Lưu trữ trên Amazon Simple Storage Service – Amazon S3
Amazon S3 là không gian để lưu trữ và trích xuất bất cứ dữ liệu nào ở bất cứ đâu. Dịch vụ lưu trữ này có độ bền và độ sẵn sàng cực kỳ cao, hiệu suất, tính bảo mật luôn dẫn đầu trong ngành, không giới hạn khả năng thay đổi quy mô với mức chi phí cực kỳ thấp.
Smartbiz_He thong MES nganh may mac_2024juneSmartBiz
Cách Hệ thống MES giúp tối ưu Quản lý Sản xuất trong ngành May mặc như thế nào?
Ngành may mặc, với đặc thù luôn thay đổi theo xu hướng thị trường và đòi hỏi cao về chất lượng, đang ngày càng cần những giải pháp công nghệ tiên tiến để duy trì sự cạnh tranh. Bạn đã bao giờ tự hỏi làm thế nào mà những thương hiệu hàng đầu có thể sản xuất hàng triệu sản phẩm với độ chính xác gần như tuyệt đối và thời gian giao hàng nhanh chóng? Bí mật nằm ở hệ thống Quản lý Sản xuất (MES - Manufacturing Execution System).
Hãy cùng khám phá cách hệ thống MES đang cách mạng hóa ngành may mặc và mang lại những lợi ích vượt trội như thế nào.
1. ---Bài số 1: Viết hàm xếp loại dựa vào điểm
CREATE FUNCTION XEPLOAI (@Diem numeric(4,1)) RETURNS nvarchar(10)
AS
BEGIN
DECLARE @xl nvarchar(10)
SET @xl=CASE
WHEN @Diem>=8 THEN N'Giỏi'
WHEN @Diem>=7 THEN N'Khá'
WHEN @Diem>=5 THEN N'Trung bình'
ELSE N'Yếu'
END
RETURN @xl
END
---Ứng dụng: Hiển thị danh sách gồm: MaSV, DiemTBC, Xếp Loại của mỗi sinh viên và xuất ra bảng mới tên là DIEMTBC.
SELECT MaSV, SUM(DiemHP*Sodvht)/SUM(Sodvht) AS DiemTBC, dbo.XEPLOAI(SUM(DiemHP*Sodvht)/SUM(Sodvht)
AS ‘Xếp loại’IN TO DIEMTBC
FROM DMHOCPHAN INNER JOIN DIEMHP ON DMHOCPHAN.MaHP=DIEMHP.MaHP
GROUP BY MaSV
Bài số 4: Các dạng hàm liên quan đến tính toán trong CSDL
---1. Viết hàm tính điểm trung bình chung của sinh viên có mã chỉ định ở học kỳ bất kỳ.
1. CREATE FUNCTION DIEM_SV(@MaSV varchar(11),@HocKy char(2)) RETURNS numeric(4,1)
BEGIN
DECLARE @DiemTBC numeric(4,1)
IF NOT EXISTS (SELECT * FROM DIEMHP WHERE MaSV=@MaSV)
RETURN 0
ELSE
SET @DiemTBC=(
SELECT SUM(DiemHP*Sodvht)/SUM(Sodvht)
FROM DMHOCPHAN INNER JOIN DIEMHP ON DMHOCPHAN.MaHP=DIEMHP.MaHP
WHERE HocKy=@HocKy AND MaSV=@MaSV)
RETURN @DiemTBC
END
Thực hiện hàm
PRINT dbo.DIEM_SV(‘001’,1)
SELECT MaSV, HoTen, dbo.DIEM_SV(MaSV,1) FROM SINHVIEN
DẠNG 2: THỦTỤC
DẠNG BÀI 1: Tạo thủ tuc cập nhật, bổ sung , xoá dữ liệu.
---Bài số 1: Viết chương trình tính điểm trung bình chung theo từng học kỳ với mã lớp chỉ định.
Lời giải
CREATE PROCEDURE TinhDTBC
@HocKy char(3),@MaLop varchar(10) AS IF NOT EXISTS (SELECT * FROM SINHVIEN WHERE MaLop=@MaLop)
BEGIN
PRINT N'Lớp này không có sinh viên'
RETURN -1
END
SELECT HocKy, SINHVIEN.MaSV, HoTen,
SUM(DiemHP*Sodvht)/SUM(Sodvht) AS diemTBC
FROM DIEMHP
INNER JOIN DMHOCPHAN ON DIEMHP.MaHP=DMHOCPHAN.MAHP
INNER JOIN SINHVIEN ON SINHVIEN.MaSV=DIEMHP.MaSV
WHERE MaLop=@MaLop AND HocKy=@HocKy
GROUP BY HocKy, SINHVIEN.MaSV, HoTen
ORDER BY HocKy
GO
Thực hiện gọi thủ tục
EXEC TinhDTBC '1', 'CT12'
2. DẠNG 3: CON TRỎ
---Bài số 1: Tạo thủ tục đánh Số báo danh theo từng lớp chỉ định.
Trước hết thêm cột SBD vào bảng SINHVIEN
ALTER TABLE SINHVIEN
ADD SBD varchar(4)
Lời giải
CREATE PROCEDURE DanhSBD @MaLop varchar(5)
AS
DECLARE cur_SBD CURSOR
FOR SELECT MaSV
FROM SINHVIEN WHERE MaLop=@MaLop
ORDER BY MaLop, dbo.TACHTEN(HoTen)
OPEN cur_SBD
DECLARE @MaSV varchar(5),@i int
FETCH NEXT FROM cur_SBD INTO @MaSV
SET @i=1
WHILE @@fetch_status = 0
BEGIN
UPDATE SINHVIEN
SET SBD=RIGHT('0000'+LTRIM(STR(@i)),4)
WHERE MaSV=@MaSV
FETCH NEXT FROM cur_SBD INTO @MaSV
SET @i=@i+1
END
CLOSE cur_SBD
DEALLOCATE cur_SBD
Go
DẠNG 1: Tạo bẫy lỗi INSERT
---Bài số 1: Tạo một Trigger để kiểm tra tính hợp lệ của dữ liệu được nhập vào một bảng SINHVIEN là dữ liệu MaSV là không rỗng.
Lời giải
CREATE TRIGGER INSERTSINHVIEN
ON SINHVIEN
FOR INSERT
AS
IF ((SELECT MaSV FROM INSERTED) = '')
BEGIN
PRINT N'Mã sinh viên phải được nhập'
ROLLBACK TRANSACTION
END
---Bài số 2: Thực hiện việc kiểm tra rằng buộc khoá ngoại trong bảng SINHVIEN là mã lớp phải tồn tại trong bảng DMLOP.
Lời giải
CREATE TRIGGER SV_INSERT
ON SINHVIEN
FOR INSERT
AS
IF NOT EXISTS(SELECT * FROM DMLOP, INSERTED WHERE DMLOP.MaLop=INSERTED.MaLop)
BEGIN
PRINT N'Mã lớp không có trong danh mục'
ROLLBACK TRANSACTION
END
DẠNG 3: Bẫy lỗi UPDATE
---Bài số 1: Tạo một Trigger kiểm tra điều kiện cho cột Điểm là <=10
Lời giải
CREATE TRIGGER DiemUPDATE
ON DIEMHP
FOR UPDATE
AS
IF ((SELECT DiemHP FROM INSERTED) > 10)
BEGIN
PRINT N'Nhập lại điểm <=10'
ROLLBACK TRANSACTION
END
3. CAC HAM CO BAN
-- 1. sum
SELECT top 10* FROM tblHanghoa
SELECT sum(hh_soton) as soton FROM tblHanghoa
-- 2. avg
SELECT avg(HH_GIANHAP) as gianhaptrungbinh FROM tblHanghoa
-- ==> tinh gia trij hang ton kho
-- ton * giatrungbinh
SELECT sum(hh_soton) * avg(HH_GIANHAP) as tienhangtonkho FROM tblHanghoa
-- 3. count
SELECT count(hh_id) FROM tblHanghoa
-- SELECT * FROM tblNhomHanghoa
-- đếm số lượng nhóm hàng hóa được sử dụng trong bảng tblhanghoa
-- sử dụng DISTINCT
SELECT count(distinct hh_nhh_id) soluong FROM tblHanghoa
SELECT distinct hh_nhh_id FROM tblHanghoa
-- đếm số lượng hàng hóa trong 1 nhóm , dùng group by
SELECT hh_nhh_id , count(hh_nhh_id) soluong FROM tblHanghoa group by hh_nhh_id
--- Lưu ý: khi dùng sum, avg, count, nếu có các trường khác trong câu lệnh SELECT ===> các trường ko có
hàm đi kèm ==> toàn bộ đặt sau group by (mỗi trường cách nhau bởi dấu phẩy)
SELECT (SELECT nhh_ten FROM tblNhomHanghoa WHERE nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
FROM tblHanghoa group by hh_nhh_id
-- 4. min => lấy giá trị nhỏ nhất, max: giá trị lớn nhất
SELECT (SELECT hh_ma FROM tblhanghoa WHERE hh_giaban = ), min (hh_Giaban), max(hh_Giaban) FROM tblHanghoa
-- cần lấy các nhóm hàng hóa có số tồn từ < 2000 trở lên
SELECT (SELECT nhh_ten FROM tblNhomHanghoa WHERE nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
FROM tblHanghoa group by hh_nhh_id having sum(hh_soton) <2000
-- khồng dùng having, có thể dùng bảng tạm
SELECT * FROM (SELECT (SELECT nhh_ten FROM tblNhomHanghoa WHERE nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
FROM tblHanghoa group by hh_nhh_id
) t1 WHERE tongsotoncuanhom<2000
-- 5. tạo trường tự tăng ở đầu ra
-- identity(int, 1,1)
-- cách 1:
SELECT ROW_NUMBER() OVER(ORDER BY tennhom ASC) AS thutu, *
FROM (SELECT (SELECT nhh_ten FROM tblNhomHanghoa WHERE nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong, sum(hh_soton) tongsotoncuanhomFROM tblHanghoa group by hh_nhh_id
) t1
WHERE tongsotoncuanhom<2000
-- cách 2: dùng 1 bảng tạm, bảng này có trường tự tăng ==> đưa dữ liệu vào bảng tạm -- lấy dữ liệu ra =>
có trường tự tăng
DECLARE @T TABLE (thutu int identity(1,1) , tennhom nvarchar(1000), soluong float, tongton float)
INSERT INTO @t(tennhom, soluong, tongton)
SELECT tennhom, soluong, tongsotoncuanhom FROM (
SELECT (
SELECT nhh_ten FROM tblNhomHanghoa WHERE nhh_id = hh_nhh_id) tennhom
, count(hh_nhh_id) soluong
, sum(hh_soton) tongsotoncuanhom
FROM tblHanghoa group by hh_nhh_id
) t1 WHERE tongsotoncuanhom<2000
SELECT * FROM @t
4. ------------------
-- case when then end
SELECT top 20 hh_ma, hh_ten , HH_ACTIVE
, (case
when HH_ACTIVE =1 then N'Còn sử dụng'
when HH_ACTIVE =2 then N'Đang chờ nhập'
else N'Không được sử dụng'
end) active_ten
FROM tblHanghoa
---------------------
FUNCTION
use IT1PHUT_2021
go
SELECT top 10 * FROM tblHanghoa
-- 1. hàm trả về 1 giá trị
-- giá trị tồn = giá nhập * số tồn
CREATE FUNCTION fnTinhTienTon
(
@soton float, @gianhap float
)
RETURNS float
AS
BEGIN
RETURN @soton * @gianhap
END
GO
CREATE FUNCTION fnTinhTienTon1
(@hhid uniqueidentifier)
RETURNS float
AS
BEGIN
--//code tinh toán
declare @soton float, @gianhap float
SELECT top 1 @soton = hh_soton, @gianhap = hh_gianhap FROM tblHanghoa WHERE hh_id = @hhid
RETURN @soton * @gianhap
END
GO
-- call function return 1 value in SELECT command
SELECT top 10 hh_ma, hh_ten, hh_gianhap, hh_soton
, dbo.fnTinhTienTon(HH_Soton, HH_GIANHAP) giatriton
, dbo.fnTinhTienTon1(hh_id) giatriton
FROM tblHanghoa
-- 2. hàm trả về 1 bảng dữ liệu
-- viết 1 hàm trả về: mã hàng hóa, tên hàng, giá trị tồn với những hàng hóa có số tồn > 10
-- option2, có tham số truyền vào
CREATE FUNCTION fnDanhsachHangTonVaGiatri
(
@soluong float
)
RETURNS @tb TABLE (ma nvarchar(1000), ten nvarchar(1000), giatriton float)
AS
BEGIN
INSERT INTO @tb (ma, ten, giatriton)
SELECT hh_ma, hh_ten, HH_GIANHAP * HH_Soton FROM tblHanghoa WHERE HH_Soton>@soluong
return;
END
GO
SELECT * FROM dbo.fnDanhsachHangTonVaGiatri (10)
5. -- Create View
CREATE VIEW [dbo].[View_Employee1]
AS
SELECT IdEmp, LName, FName, PhoneNo, Salary, Addr
FROM dbo.DisEmployee
GO
--
Select * from [dbo].[View_Employee1];
Select * from [dbo].[View_Salary];
SELECT IdEmp, LName, FName, PhoneNo, Salary, Addr
FROM dbo.DisEmployee;
Select * from [dbo].[View_Employee2];
--
DROP VIEW [View_Employee1];
-- View Index
EXEC sp_helpindex 'DisEmployee';
--Select Employee
SELECT IdEmp, LName, FName, PhoneNo, Salary, Addr
FROM dbo.DisEmployee
-- Slect View 1
Select * from [dbo].[View_Employee1];
--View Display
EXEC sp_helptext '[View_Employee1]';
-- Create Table IndexEmployee
CREATE TABLE IndexEmployee
(IdEmp INT,
EmpName nvarchar(100) NOT NULL,
DOB date,
PhoneNo char(12),
Addr nvarchar(50) DEFAULT N'Hà Nội'
);
-- Slect IndexEmployee
SELECT * FROM IndexEmployee;
--
IF OBJECT_ID('Tr_Employee_Under18', 'TR') is not null
drop trigger Tr_Employee_Under18
go
CREATE TRIGGER Tr_Employee_Under18 ON tblEmployee
AFTER INSERT, UPDATE
AS
IF EXISTS(SELECT *
FROM inserted
WHERE (YEAR(GETDATE())-YEAR(empBirthdate))<18
)
BEGIN
RAISERROR('Employee is under 18 years old.We can not sign a contact with him/her.',16,1)
ROLLBACK TRANSACTION
END
go
INSERT INTO tblEmployee(empSSN, empName, empSalary, empBirthdate,depNum, supervisorSSN)
VALUES (30121050378368, N'Nguyễn Văn Tý', 10000, '1987-08-30 00:00:00.000',1, 30121050037);
INSERT INTO tblEmployee(empSSN, empName, empSalary, empBirthdate,depNum, supervisorSSN)
VALUES (3012105037838, N'Nguyễn Văn Tý', 10000, '2010-08-30 00:00:00.000',1, 30121050037);
--
SELECT * FROM tblEmployee WHERE empSSN=30121050378368
Go
--
DELETE FROM tblEmployee WHERE empSSN=3012105037836
Go