IMG-LOGO
×

Giáo Trình Môn Học

Khoá học lập trình SQL

Kiến Thức Core SQL Server

[Video] Hướng dẫn cách xác định kiểu dữ liệu, primary key, foreign key trong SQL - My SQL - SQL Server [Video] Hướng dẫn thao tác nhiểu bảng - select - multi table - join, inner join trong SQL Server [Video] Hướng dẫn phân tích CSDL - phân tích bảng, column trong bản - Học lập trình SQL, SQL Server [Video] Hướng dẫn tìm hiểu create, alter , insert table và bản chất primary key, foreign key - SQL Server [Video] Hướng dẫn tìm hiểu select, and, in, like, not in,group by .. having, order by asc, desc - SQL Server [Video] Quản lý sinh viên (create, alter, update, insert, select) - Lập trình SQL Server

View SQL Server

[Video] Hướng dẫn tìm hiểu view trong SQL Server Bài Giảng: Hướng dẫn tìm hiểu view + proc trong SQL - Lập trình SQL Server

Store & Procedure

[Video] Hướng dẫn tìm hiểu proc procedure trong SQL Server - Lập trình SQL Server, MySQL Bài Giảng: Xây dự hệ thống đưa đón học sinh bằng xe bus của Trường Học - Lập trình SQL Server [Video] Xây dựng CSDL quản lý điểm danh aptech - Lập trình SQL Server/MySQL

Trigger

[Video] Học Trigger qua ví dụ - quản lý nhà trên phố - Lập trình SQL Server [Video] Hướng dẫn học trigger qua bài quản lý điểm danh Aptech - Lập trình SQL Server [Video] Bài tập - Quản lý nhân khẩu - Lập trình SQL Server - MySQL




Trang Chủ SQL Server/MySQL Bài tập - Thiết kế CSDL quản lý sở thú - SQL Server

Bài tập - Thiết kế CSDL quản lý sở thú - SQL Server

by GokiSoft.com - 21:41 10/01/2022 4,581 Lượt Xem

Xây dựng CSDL phục vụ cho sở thú gồm các bảng như sau

1. Bảng Room (Thông tin từng chuồng trong sở thú)

- id: kiểu dữ liệu int

- name: nvarchar(20)

- max: int -> số lượng động vật tối đa

2. Thông tin động vật (Animal)

- id: int

- name: nvarchar(50)

- age: int -> tuổi của động vật

- buy_at: datetime -> ngày mua động vật vể sở thú

- room_id: int -> mã chuồng đang nuôi động vật

3. Loại thức ăn (FoodType)

- id: int

- name: nvarchar(50)

- price: float -> giá tiền / 1 kg hoặc item của sản phẩm

- amount: float -> số lượng còn lại trong sở thú

4. Quản lý thức ăn (FoodAnimal)

- food_id: int

- animal_id: int


Yêu cầu:

1. Tạo bảng trên

2. Tạo primary key & foreign key cho từng bảng -> Không tạo trong câu lệnh create table

3. Thêm mỗi bảng 5 bản ghi dữ liệu

4. Xem thông tin động vật gồm các trường sau: tên chuồng, tên động vật, tuổi, ngày mua về

5. Xem thông tin những chuồng có số động vật đang lưu vượt quá max của chuồng đó

6. Xem thông tin những chuồng còn so khả năng lưu thêm động vật vào

7. Viết proc có tham số là @animalId -> cho phép xem được thông tin loại thức ăn của động vật này.


Bình luận



Chia sẻ từ lớp học

PhamHuyHoang [community,C2009I]

Ngày viết: 16:45 09/03/2021



create table room(
	id int not null,
	name nvarchar(20),
	max int
)

create table animal(
	id int not null,
	name nvarchar(50),
	age int,
	buy_at datetime,
	room_id int
)

create table foodtype(
	id int not null,
	name nvarchar(50),
	price float,
	amount float
)

create table foodanimal(
	food_id int not null,
	animal_id int not null
)

alter table room
add primary key (id)

alter table animal
add primary key (id)

alter table foodtype
add primary key (id)

alter table foodanimal
add primary key (food_id, animal_id)

alter table animal
add foreign key (room_id) references room(id)

alter table foodanimal
add foreign key (food_id) references foodtype(id)

alter table foodanimal
add foreign key (animal_id) references animal(id)

insert into room(id,name,max)
values
(1, 'C1', 10),
(2, 'C2', 10),
(3, 'C3', 10),
(4, 'C4', 10),
(5, 'C5', 10)

insert into animal(id,name,age,buy_at,room_id)
values
(1, 'ho', 4, '2020-15-10', 1),
(2, 'su tu', 2, '2020-15-10', 2),
(3, 'voi', 6, '2020-15-10', 3),
(4, 'khi', 10, '2020-15-10', 4),
(5, 'huou', 4, '2020-15-10', 5)

insert into foodtype(id, name, price, amount)
values
(1, 'apple', 100000, 20),
(2, 'meat', 200000, 20),
(3, 'weed', 1000000, 20),
(4, 'banana', 10000, 20),
(5, 'crack', 1000000, 20)



Lê Trọng Nghĩa [community,C2009I]

Ngày viết: 16:45 09/03/2021



create table Room(
	id int ,
	name nvarchar(20),
	max int
)
create table Animal1(
	id int not null,
	name nvarchar(50),
	age int,
	buy_at datetime,
	room_id int

)

create table FoodType1(
	id int not null,
	name nvarchar(50),
	price float,
	amount float

)
create table FoodAnimal2(
	food_id int not null,
	animal_id int
)
alter table Room
add constraint Room_PK primary key (id)

alter table Animal1
add constraint Animal_PK primary key (id)

alter table FoodType1
add constraint FoodType_PK primary key (id)

alter table FoodAnimal2
add constraint FoodAnimal_PK primary key (food_id)


alter table Animal1
add constraint Animal_FoodType1_PK foreign key (id) references FoodType1 (id)

alter table Animal1
add constraint Animal_FoodAnimal2_PK foreign key (id) references FoodAnimal2 (food_id)

alter table FoodType1
add constraint FoodType1_FoodAnimal2_PK foreign key (id) references FoodAnimal2 (food_id)

alter table Room
add constraint Room_Animal1_PK foreign key (id) references Animal1 (id)

insert into Room(name, max)
values
('A1','50'),
('B1','50'),
('C1','50')
insert into Animal1(id,name, age, buy_at, room_id)
values
(1,'Ho','3','1990-12-02', 1),
(2,'Su Tu','3','1990-12-02', 2),
(3,'Khi','3','1990-12-02', 3)
insert into FoodType1(id,name, price, amount)
values
(1,'thit', 20000, 10),
(2,'thit', 20000, 10),
(3,'thit', 20000, 10)
insert into FoodAnimal2(food_id, animal_id)
values
('1', '1'),
('2', '2'),
('3', '3')

select Room.name , Animal1.name, Animal1.age, Animal1.buy_at
from Room, Animal1
where Room.id = Animal1.id



Trinh Huy Hung [community,C2009I]

Ngày viết: 16:24 09/03/2021



create database Zoo

use Zoo

create table Room(
	id int not null,
	name nvarchar(20),
	max int
)

create table Animal(
	id int not null,
	name nvarchar(50),
	age int ,
	buy_at datetime,
	room_id int
)

create table FoodType(
	id int not null,
	name nvarchar(50),
	price float,
	amount float
)

create table FoodAnimal(
	food_id int not null,
	animal_id int not null
)

alter table Room 
add primary key (id)

alter table Animal
add primary key (id)

alter table FoodType
add primary key (id)

alter table FoodAnimal
add primary key (food_id, animal_id)

alter table Animal
add foreign key (room_id) references Room(id)

alter table FoodAnimal
add foreign key (food_id) references FoodType(id)

alter table FoodAnimal
add foreign key (animal_id) references Animal(id)

insert into Room(id, name, max)
values
(1, 'LionRoom', 4),
(2, 'PandaRoom', 6),
(3, 'TigerRoom', 3),
(4, 'ElephantRoom', 5),
(5, 'MonkeyRoom', 7)


insert into Animal(id, name, age, buy_at, room_id)
values
(1, 'Lion1', 6, '2015-03-02', 1),
(2, 'Tiger1', 6, '2015-03-02', 3),
(3, 'Tiger2', 5, '2016-06-04', 3),
(4, 'Tiger3', 4, '2017-03-08', 3),
(5, 'Tiger4', 4, '2017-07-02', 3),
(6, 'Elephant1', 6, '2015-03-02', 4),
(7, 'Monkey1', 6, '2015-03-02', 5),
(8, 'Panda1', 6, '2015-03-02', 2)

insert into FoodType(id, name, price, amount)
values
(1, 'Banana', 2000, 50),
(2, 'Blueberry', 3000, 30),
(3, 'Biscuits', 15000, 60),
(4, 'Eggs', 10000, 40),
(5, 'Meat', 50000, 20)

insert into FoodAnimal(food_id, animal_id)
values 
(3, 7),
(1, 7),
(2, 8),
(3, 6),
(5, 1),
(5, 2),
(5, 3),
(5, 4),
(5, 5)

select Room.name, Animal.name, Animal.age, Animal.buy_at
from Room, Animal
where Room.id =Animal.room_id

select Room.name, Room.max, Count(Animal.room_id)as Amount
from Room, Animal
where Room.id =Animal.room_id
group by Room.name, Room.max
having Count(Animal.room_id) > Room.max

select Room.name, Room.max, Count(Animal.room_id)as Amount,(Room.max - Count(Animal.room_id)) as MoreAnimals
from Room, Animal
where Room.id =Animal.room_id
group by Room.name, Room.max
having Count(Animal.room_id) < Room.max

create proc proc_FoodAnimal
	@animalId int
as
begin
	select Animal.name,FoodType.name, FoodType.price, FoodType.amount
	from Animal, FoodType, FoodAnimal
	where FoodAnimal.food_id=FoodType.id and FoodAnimal.animal_id=Animal.id and Animal.id = @animalId 
end

exec proc_FoodAnimal 7

create trigger trigger_insteadof_foodtype on FoodType
instead of delete
as 
begin
	delete from FoodAnimal where food_id in (select id from deleted)
	delete from FoodType where id in (select id from deleted)
end 



Vũ Trung Kiên [C2009I]

Ngày viết: 15:54 09/03/2021


#2209.sql


create database QuanLySoThu
use QuanLySoThu

create table Room (
	id int not null,
	name nvarchar(20) not null,
	max int not null
)

create table Animal (
	id int not null,
	name nvarchar(50) not null,
	age int not null,
	buy_at datetime not null,
	room_id int not null
)

create table FoodType (
	id int not null,
	price float not null,
	amount float not null
)

create table FoodAnimal (
	food_id int not null,
	animal_id int not null
)

alter table Room
add constraint Room_PK primary key (id)

alter table Animal
add constraint Animal_PK primary key (id)

alter table FoodAnimal
add constraint FoodAnimal_PK primary key (food_id)

alter table FoodType
add constraint FoodType_PK primary key (id)

alter table FoodType 
add constraint FoodType_FoodAnimal_FK foreign key (id) references FoodAnimal (food_id)

alter table FoodAnimal
add constraint FoodAnimal_Animal_FK foreign key (food_id) references Animal (id)

alter table Animal
add constraint Animal_Room_FK foreign key (room_id) references Room (id)

insert into Room(id, name, max)
values
(1, 'Chuong1', 17),
(2, 'Chuong2', 10),
(3, 'Chuong3', 21),
(4, 'Chuong4', 20),
(5, 'Chuong5', 15)

insert into Animal(id, name, age, buy_at, room_id)
values
(1, 'Voi', 5, '2020-12-15', 2),
(2, 'Khi', 4, '2021-02-25', 2),
(3, 'Cao', 9, '2015-02-15', 5),
(4, 'Rua', 10, '2014-01-15', 3),
(5, 'Chuot', 6, '2021-12-05', 1),
(6, 'Vuon', 1, '2020-02-25', 2),
(7, 'Than Lan', 14, '2011-02-25', 2),
(8, 'Cho', 4, '2016-05-25', 2),
(9, 'Soi', 6, '2021-05-25', 2),
(10, 'Huou', 3, '2021-05-26', 2),
(11, 'Nai', 5, '2021-06-25', 2),
(12, 'Meo', 4, '2021-07-25', 2),
(13, 'MeoRung', 1, '2021-07-25', 2),
(14, 'Su Tu', 15, '2010-12-15', 2)

insert into FoodAnimal(food_id, animal_id)
values
(1, 2),
(2, 1),
(3, 9),
(4, 3),
(5, 9)

insert into FoodType(id, price, amount)
values
(1, 12.450, 10),
(2, 17.050, 11),
(3, 52.000, 20),
(4, 22.000, 10),
(5, 19.000, 13)

select Room.name, Animal.name, Animal.age, Animal.buy_at
	from Room, Animal
	where Room.id = Animal.room_id
	order by Room.name

select Room.name, Room.max, count(Animal.room_id) as TongSo
	from Room, Animal
	where Room.id = Animal.room_id
	group by Room.name, Room.max
	having count(Animal.room_id) > Room.max

select Room.name, Room.max, count(Animal.room_id) as TongSo
	from Room, Animal
	where Room.id = Animal.room_id
	group by Room.name, Room.max
	having count(Animal.room_id) < Room.max

create proc proc_ThongTinThucAn
	@animalid int
as
begin
	select FoodAnimal.animal_id, FoodType.id, FoodType.price, FoodType.amount
		from FoodAnimal, FoodType
		where FoodAnimal.food_id = FoodType.id and FoodAnimal.animal_id = @animalid
end

create trigger FoodtypeDel on FoodType
instead of delete
as
begin
	delete FoodType where id in (select id from deleted)
end

delete FoodType where id = 1
exec proc_ThongTinThucAn 3
select * from Room
select * from Animal
select * from FoodAnimal
select * from FoodType


Đã sao chép!!!