Zróbmy sobie symulację banku (mocno uproszczoną).
- Stwórz tabelę Bank_klienci, zawierającą pola ID (typ identity, primary key), imię, nazwisko, miasto.
Stwórz drugą tabelę, Bank_konta, zawierającą pola ID (klucz obcy do tabeli Bank_klienci), nr_konta (dowolny 26-znakowy numer; primary key), saldo.
- Wypełnij tabelę danymi:
Dane dla Bank_klienci:
(’Anna’, 'Braun’, 'Warsaw’),
(’Celia’, 'Donut’, 'Berlin’),
(’Ellie’, 'Fine’, 'Berlin’),
(’Gloria’, 'Hint’, 'Paris’),
(’Ian’, 'Johnson’, 'Warsaw’),
(’Kelly’, 'Long’, 'Paris’),
(’Merry’, 'Nice’, 'Paris’),
(’Olaf’, 'Priceless’, 'Berlin’),
(’Richard’, 'Short’, 'Warsaw’),
(’Tim’, 'Uncle’, 'Warsaw’)
Dane dla Bank_konta:
(1, '12345678932165498714785236′, 1652),
(2, '85235678932165498714765416′, 15698),
(3, '74135678932165498714789632′, 9652),
(4, '96815678932165498714783258′, 10367),
(5, '32175678932165498714783699′, 357),
(6, '86115678932165498714781147′, 14631),
(7, '33585678932165498714783247′, 11900),
(8, '77565678932165498714786874′, 3549),
(9, '49635678932165498714780258′, 2463),
(10, '10285678932165498714783049′, 7681)
[/spoiler]- Utwórz widok (Bank_widok), który uwzględni osoby z saldem 1000 lub mniejszym oraz tych z saldem 10000 lub większym.
- Utwórz transakcję, w której klient o ID 3 przeleje klientowi o ID 7 kwotę 1450zł. Odwołaj transakcję.
- Utwórz transakcję, w której klient o ID 6 przeleje klientowi o ID 5 kwotę 220zł. Potwierdź transakcję.
- Dodaj kolejnego klienta – Wu X’ian z saldem 31500. Miasto – Paris, nr konta: 25025536548520147930286057.
Baza: Northwind, Tabela: Bank_klienci, Bank_konta, kolumny: ID, Imie, Nazwisko, Miaso, Saldo, nrKonta, Wynik: 11 rows
Screen przedstawia dane z obu tabel po wykonaniu powyższych punktów:
[spoiler title=’Rozwiązanie’ style=’default’ collapse_link=’true’]
1.Tworzenie tabel
CREATE TABLE dbo.Bank_klienci
(
ID INT NOT NULL identity(1,1) PRIMARY KEY,
Imie varchar(20) NOT NULL,
Nazwisko varchar(20) NOT NULL,
Miasto varchar(20) NOT NULL
);
CREATE TABLE dbo.Bank_konta
(
ID INT NOT NULL,
nrKonta varchar(26) NOT NULL PRIMARY KEY,
Saldo INT NOT NULL,
CONSTRAINT fk_ID FOREIGN KEY (ID) REFERENCES dbo.Bank_klienci (ID)
);
2.Wypełnianie tabel danymi
INSERT INTO dbo.Bank_klienci(Imie, Nazwisko, Miasto) VALUES
(’Anna’, 'Braun’, 'Warsaw’),
(’Celia’, 'Donut’, 'Berlin’),
(’Ellie’, 'Fine’, 'Berlin’),
(’Gloria’, 'Hint’, 'Paris’),
(’Ian’, 'Johnson’, 'Warsaw’),
(’Kelly’, 'Long’, 'Paris’),
(’Merry’, 'Nice’, 'Paris’),
(’Olaf’, 'Priceless’, 'Berlin’),
(’Richard’, 'Short’, 'Warsaw’),
(’Tim’, 'Uncle’, 'Warsaw’);
INSERT INTO dbo.Bank_konta(ID, nrKonta, Saldo) VALUES
(1, '12345678932165498714785236′, 1652),
(2, '85235678932165498714765416′, 15698),
(3, '74135678932165498714789632′, 9652),
(4, '96815678932165498714783258′, 10367),
(5, '32175678932165498714783699′, 357),
(6, '86115678932165498714781147′, 14631),
(7, '33585678932165498714783247′, 11900),
(8, '77565678932165498714786874′, 3549),
(9, '49635678932165498714780258′, 2463),
(10, '10285678932165498714783049′, 7681);
3.Widok
CREATE VIEW dbo.Bank_widok AS
SELECT KL.ID, KL.Imie, KL.Nazwisko, KL.Miasto, KO.Saldo
FROM Bank_klienci KL inner join Bank_konta KO
ON KL.ID = KO.ID
WHERE KO.Saldo <= 1000 OR KO.Saldo >= 10000;
4.Transakcja odwołana
BEGIN TRAN;
UPDATE dbo.Bank_konta SET Saldo = Saldo – 1450 WHERE ID = 3;
UPDATE dbo.Bank_konta SET Saldo = Saldo + 1450 WHERE ID = 7;
ROLLBACK TRAN;
5.Transakcja zatwierdzona
BEGIN TRAN;
UPDATE dbo.Bank_konta SET Saldo = Saldo – 220 WHERE ID = 6;
UPDATE dbo.Bank_konta SET Saldo = Saldo + 220 WHERE ID = 5;
COMMIT TRAN;
6.Dodanie kolejnego klienta
INSERT INTO dbo.Bank_klienci(Imie, Nazwisko, Miasto) VALUES
(’Wu’, 'X”ian’, 'Paris’);
INSERT INTO dbo.Bank_konta(ID, nrKonta, Saldo) VALUES
(11, '25025536548520147930286057′, 31500);
[/spoiler]