konto usunięte

Temat: sql zadanie

witam potrzebuję rozwiązania zadania poniżej

"1. Utworzyć tabelę o nazwie STAN_KONTA zawierającą: ID, saldo oraz KLIENT (ID, nazwisko, imie, nr_konta) dobrać odpowiednie formaty danych.
2. W tabelach ustalić więzy integralności (wprowadzić klucz obcy).
3. Wypełnić tabelę dla 10 rekordów: nazwiska i imiona dowolne, nr konta dowolny 26-cyfrowy, stan konta pierwszej osoby ustalić na 1000zł, drugiej 2000zł, trzeciej 3000zł itd. UWAGA! W tabalach założyć, że dwóch dowolnych klientów posiada dwa nr kont, pozostali po jednym.
4. Utworzyć zapytania, które:
a) pokażą wszystkie dane z obu tabel
b) pokażą działanie klauzuli złączeniowej left i right
5. Utworzyć transakcję, w wyniku której klient o id=1 przeleje 50zł klientowi o id=5. Zatwierdzić utworzoną transakcję.
6. Utworzyć transakcję, w wyniku której klient o id=2 przeleje 150zł klientowi o id=10. Odwołać utworzoną transakcję.
7. Wykorzystując instrukcję UNION pokazać klientów o stanie konta 4000zł i 8000zł.
8. Utworzyć transakcję, w wyniku której stan konta każdego klienta większy się o 10%.
9. Zademonstrować przykład zastosowania klauzuli Having.
10. Utworzyć widok o nazwie WIDOK1, w którym znajdą się dane klientów o stanie konta powyżej 3000zł.
11. Wyświetlić dane z WIDOK1 dla pierwszego klienta.
12. Utworzyć unikalny indeks o nazwie nr_konta_ind dla kolumny nr_konta."

Sam mam tyle:

create table stan_konta1
(id int primary key auto_increment,
stawka decimal(8,2),
klient_id int)
character set utf8 collate utf8_polish_ci;

insert into stan_konta1 values
(1,1000,1),
(2,2000,2),
(3,3000,3),
(4,4000,4),
(5,5000,5),
(6,6000,6),
(7,7000,7),
(8,8000,8),
(9,9000,2),
(10,10000,5);

create table klient
(id int primary key auto_increment,
nazwisko varchar(30),
numer_konta int(26));

insert into klient values
(1, 'Pawlak','Kamil',011234567897894561230123654),
(2, 'Barakowski','Sławek',1234569874521456987415263),
(3, 'Michalski','Mariusz',78945612300125476981302459 ),
(4, 'Słowak','Genowefa',42156987563210202045000002),
(5, 'Piotrowski','Mariusz',77785554692225465587002542),
(6, 'Zebra','Jadwiga',45456563598456987777225698),
(7, 'Kowalski','Mateusz',55556664451112223365789456),
(8, 'Ziemiański','Krzysztof',213645879207575698558035025);

Z góry dzięki :)
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Radek M.:
witam potrzebuję rozwiązania zadania poniżej
...

Sam mam tyle:
>
Możesz powiązać teabele kluczem obcym np. tak:
create table stan_konta
(id_Konta int IDENTITY(1,1),
stawka decimal(8,2))

ALTER TABLE stan_konta ADD CONSTRAINT PK
PRIMARY KEY (id_Konta)
GO

create table klient
(id_Klient int primary key IDENTITY(1,1),
nazwisko varchar(30),
numer_konta int));

ALTER TABLE klient ADD CONSTRAINT PK
PRIMARY KEY (id_Klient)
GO

ALTER TABLE klient ADD CONSTRAINT FK
FOREIGN KEY (numer_konta) REFERENCES stan_konta (id_Konta)
GO

Możesz te klauzule zawrzeć bezpośrednio w def tabeli:
create table XXX (
....
constraint PK_Key PRIMARY KEY (Key1,Key2)
)
create table yyy (
....
constraint FK_Key FOREIGN KEY (Key1,Key2) references xxx (Key1,Key2)
)

W SQL Server raczej uzywa się kolumn IDENTITY.

Czy jesteś studentem bez dostępu do sieci? W sieci jest bardzo dobra dokumentacja do SQL Server. Pomęcz się sam to będziesz coś umiał reszty Ci nie podpowiem.
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Maciej G.:
Radek M.:
witam potrzebuję rozwiązania zadania poniżej
...

Sam mam tyle:
>
Możesz powiązać teabele kluczem obcym np. tak:
create table stan_konta
(id_Konta int IDENTITY(1,1),
stawka decimal(8,2))

ALTER TABLE stan_konta ADD CONSTRAINT PK
PRIMARY KEY (id_Konta)
GO

create table klient
(id_Klient int primary key IDENTITY(1,1),
nazwisko varchar(30),
numer_konta int));

ALTER TABLE klient ADD CONSTRAINT PK
PRIMARY KEY (id_Klient)
GO

ALTER TABLE klient ADD CONSTRAINT FK
FOREIGN KEY (numer_konta) REFERENCES stan_konta (id_Konta)
GO

Możesz te klauzule zawrzeć bezpośrednio w def tabeli:
create table XXX (
....
constraint PK_Key PRIMARY KEY (Key1,Key2)
)
create table yyy (
....
constraint FK_Key FOREIGN KEY (Key1,Key2) references xxx (Key1,Key2)
)

W SQL Server raczej uzywa się kolumn IDENTITY.

Oczywiście to bardzo prymitywny projekt, Trzeba by jeszcze dodać ograniczenia "NOT NULL", strony kodowe itp.

Dwa hinty dla Ciebie:

1) zobacz klauzule "LEFT OUTER JOIN'

2) Jeśli chodzi o transakcję:
a) jest wykonywana na 2-óch lub większej liczbie tabel
b) przy starcie transakcji musisz ustawić "Save point", abyś mógł do niego wrócić jak coś pójdzie nie tak (aby stan bazy danych był spójny). W wielu bazach 'Save point" jest zapisywany przy starcie transakcji (w innych nie)
c) wykonujesz wymagane działania na tabelach
d) sprawdzasz, podczas wszystkich działań, czy nie było błędów
e) jeśli nie było błędów zatwierdzasz transakcję (COMMIT)
f) jeśli były błędy wycofujesz transakcję (ROLLBACK) - czyli przywracasz stan bazy do wcześniej zapisanego "Save point"

Pozdrawiam.
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Maciej G.:
Sorry nie doczytałem, że klient może mieć więcej niż jedno konto:
Możesz powiązać teabele kluczem obcym np. tak:
create table stan_konta
(id_Konta int IDENTITY(1,1),
stawka decimal(8,2))

ALTER TABLE stan_konta ADD CONSTRAINT PK
PRIMARY KEY (id_Konta)
GO

create table klient
(id_Rek int primary key IDENTITY(1,1),
id_Klient int,
nazwisko varchar(30),
numer_konta int));
Teraz id_klient mogą się powtarzać (w tabeli stan_konta też muszą być dwa rekordy dla kont danego klienta). No i ALTER TABLE z ADD PRIMARY KEY dla tej tabeli nie bylo potrzebne, bo było już w definicji tabeli - tak to jest jak się szybko czyta (i odpowiada, bez zastanowienia)

ALTER TABLE klient ADD CONSTRAINT FK
FOREIGN KEY (numer_konta) REFERENCES stan_konta (id_Konta)
GO

Pozdrawiam.
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Maciej G.:
Maciej G.:
Sorry nie doczytałem, że klient może mieć więcej niż jedno konto:
Możesz powiązać teabele kluczem obcym np. tak:
create table stan_konta
(id_Konta int IDENTITY(1,1),
stawka decimal(8,2))

ALTER TABLE stan_konta ADD CONSTRAINT PK
PRIMARY KEY (id_Konta)
GO

create table klient
(id_Rek int primary key IDENTITY(1,1),
id_Klient int,
nazwisko varchar(30),
numer_konta int));
Teraz id_klient mogą się powtarzać (w tabeli stan_konta też muszą być dwa rekordy dla kont danego klienta). No i ALTER TABLE z ADD PRIMARY KEY dla tej tabeli nie bylo potrzebne, bo było już w definicji tabeli - tak to jest jak się szybko czyta (i odpowiada, bez zastanowienia)

ALTER TABLE klient ADD CONSTRAINT FK
FOREIGN KEY (numer_konta) REFERENCES stan_konta (id_Konta)
GO

BTW: ze względu na normalizację bazy i dobre praktyki projektowe, też nie jest to rozwiązanie dobre (niektóre dane są duplikowane). Ze względu, że nie wiesz jak to do końca zrobić na dwóch tabelach, nie chciałem już komplikować.

konto usunięte

Temat: sql zadanie

Maciej G.:
Oczywiście to bardzo prymitywny projekt, Trzeba by jeszcze dodać ograniczenia "NOT NULL", strony kodowe itp.
BTW: ze względu na normalizację bazy i dobre praktyki projektowe, też nie jest to rozwiązanie dobre (niektóre dane są duplikowane). Ze względu, że nie wiesz jak to do końca zrobić na dwóch tabelach, nie chciałem już komplikować.

że co? 2 tablice po 3 pola = normalizacja i dobre praktyki? Int dla pola 26 dowolnych cyfr? Klucz obcy na polu nr_konta? Śliwowica nie pomogła, poległem ze śmiechu.
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Bogdan P.:
Maciej G.:
Oczywiście to bardzo prymitywny projekt, Trzeba by jeszcze dodać ograniczenia "NOT NULL", strony kodowe itp.
BTW: ze względu na normalizację bazy i dobre praktyki projektowe, też nie jest to rozwiązanie dobre (niektóre dane są duplikowane). Ze względu, że nie wiesz jak to do końca zrobić na dwóch tabelach, nie chciałem już komplikować.

że co? 2 tablice po 3 pola = normalizacja i dobre praktyki? Int dla pola 26 dowolnych cyfr? Klucz obcy na polu nr_konta? Śliwowica nie pomogła, poległem ze śmiechu.

Czytałeś opis zadania (nasz zadeklarować dwie tabele i powiązać kluczem obcym). Oświeć mnie i napisz jak Ty byś to zrobił, tak ,żeby nie zamieszać w głowie koledze, który ma problem z takim zadaniem.

Pozdrawiam.
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Maciej G.:
Bogdan P.:
Maciej G.:
Oczywiście to bardzo prymitywny projekt, Trzeba by jeszcze dodać ograniczenia "NOT NULL", strony kodowe itp.
BTW: ze względu na normalizację bazy i dobre praktyki projektowe, też nie jest to rozwiązanie dobre (niektóre dane są duplikowane). Ze względu, że nie wiesz jak to do końca zrobić na dwóch tabelach, nie chciałem już komplikować.

że co? 2 tablice po 3 pola = normalizacja i dobre praktyki? Int dla pola 26 dowolnych cyfr? Klucz obcy na polu nr_konta? Śliwowica nie pomogła, poległem ze śmiechu.

Czytałeś opis zadania (nasz zadeklarować dwie tabele i powiązać kluczem obcym). Oświeć mnie i napisz jak Ty byś to zrobił, tak ,żeby nie zamieszać w głowie koledze, który ma problem z takim zadaniem.
Dopisz może jakąś dalszą część rozwiązania tego zadani - wtedy ja się pośmieję.
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Maciej G.:
Maciej G.:
Bogdan P.:
>
że co? 2 tablice po 3 pola = normalizacja i dobre praktyki? Int dla pola 26 dowolnych cyfr? Klucz obcy na polu nr_konta? Śliwowica nie pomogła, poległem ze śmiechu.

Czytałeś opis zadania (nasz zadeklarować dwie tabele i powiązać kluczem obcym). Oświeć mnie i napisz jak Ty byś to zrobił, tak ,żeby nie zamieszać w głowie koledze, który ma problem z takim zadaniem.
Dopisz może jakąś dalszą część rozwiązania tego zadani - wtedy ja się pośmieję.
A najlepiej podaj definicje tych dwóch tabel jak w założeniach do zadania i powiąż je (bardzo prawidłowo kluczem obcym) oczywiście zamieść kod SQL.

konto usunięte

Temat: sql zadanie

Maciej G.:
Dopisz może jakąś dalszą część rozwiązania tego zadani - wtedy ja się pośmieję.
/\/i3 b():
- nie rozwiązuję zadań studentom
- nie lubię jak komuś nie chcę się pomyśleć (autorowi tematu)
- nie lubię jak ktoś mając do dyspozycji tyle darmowych narzędzi nawet nie spróbuje "tego" zrobić
- nie toleruję minimalizmu
- moje rozwiązanie niczego autora tematu nie nauczy
- nauka nie polega na robieniu zadania na kartce papieru ;)
- jestem leniwy, jak ktoś nie szanuje mojego czasu ja nie szanuje jego ;)

Pozdrawiam
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Bogdan P.:
Maciej G.:
Dopisz może jakąś dalszą część rozwiązania tego zadani - wtedy ja się pośmieję.
/\/i3 b():
- nie rozwiązuję zadań studentom
- nie lubię jak komuś nie chcę się pomyśleć (autorowi tematu)
- nie lubię jak ktoś mając do dyspozycji tyle darmowych narzędzi nawet nie spróbuje "tego" zrobić
- nie toleruję minimalizmu
- moje rozwiązanie niczego autora tematu nie nauczy
- nauka nie polega na robieniu zadania na kartce papieru ;)
- jestem leniwy, jak ktoś nie szanuje mojego czasu ja nie szanuje jego ;)

Pozdrawiam

Jeśli chodzi o "klue" jego problemu, to jest to dobrze zrobione, pewnie, że pole konto powinno być char(26) i przeniesione do tabeli konta - ale to był szczegół do doczytania przez niego.

Przy nauce minimalizm jest wskazany, aby nie zaciemniać istoty problemu (w praktyce oczywiście już nie).
Nie musisz tego robić dla studenta, popisz się swoja wiedzą (przecież lubisz), a może się boisz, że nie jest ona jednak tak wielka?

konto usunięte

Temat: sql zadanie

Maciej G.:
Przy nauce minimalizm jest wskazany, aby nie zaciemniać istoty problemu (w praktyce oczywiście już nie).
Nie musisz tego robić dla studenta, popisz się swoja wiedzą (przecież lubisz), a może się boisz, że nie jest ona jednak tak wielka?

Wszystkie uwagi dotyczyły autora tematu. Na prowokację za stary jestem żeby się "złapać" ;)
Nie wiem kto tworzył to zadanie, albo czy zostało dobrze przepisane ale założenie jest, że mają być dwie tablice, a nie ileś tam. Jedyne rozsądne to Konto(id_konta, nr_konta, stan, id_klienta) oraz Klient(id_klienta, nazwisko, imie) Klucz obcy sam wyszedł, a resztę niech sobie kolega autor doczyta i popróbuje. Jak ktoś jeszcze powie, że chce słowniki nazwisk i imion to zabiję ;)
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: sql zadanie

Bogdan P.:
Maciej G.:
Przy nauce minimalizm jest wskazany, aby nie zaciemniać istoty problemu (w praktyce oczywiście już nie).
Nie musisz tego robić dla studenta, popisz się swoja wiedzą (przecież lubisz), a może się boisz, że nie jest ona jednak tak wielka?

Wszystkie uwagi dotyczyły autora tematu. Na prowokację za stary jestem żeby się "złapać" ;)

Spodziewałem się, że nie podasz żadnego kodu.

konto usunięte

Temat: sql zadanie

Maciej G.:
Spodziewałem się, że nie podasz żadnego kodu.
W przeciwieństwie do ciebie ja nie muszę napisać nawet linijki kodu, ja to mogę wszystko wyklikać, ale mi się nie chce :)

Edit:
Moja dyskusja w tym temacie uległa zakończeniu. Pozdrawiam.Ten post został edytowany przez Autora dnia 02.12.14 o godzinie 13:41
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: sql zadanie

Bogdan P.:
Maciej G.:
Przy nauce minimalizm jest wskazany, aby nie zaciemniać istoty problemu (w praktyce oczywiście już nie).
Nie musisz tego robić dla studenta, popisz się swoja wiedzą (przecież lubisz), a może się boisz, że nie jest ona jednak tak wielka?

Wszystkie uwagi dotyczyły autora tematu. Na prowokację za stary jestem żeby się "złapać" ;)
Nie wiem kto tworzył to zadanie, albo czy zostało dobrze przepisane ale założenie jest, że mają być dwie tablice, a nie ileś tam. Jedyne rozsądne to Konto(id_konta, nr_konta, stan, id_klienta) oraz Klient(id_klienta, nazwisko, imie) Klucz obcy sam wyszedł, a resztę niech sobie kolega autor doczyta i popróbuje. Jak ktoś jeszcze powie, że chce słowniki nazwisk i imion to zabiję ;)
Jedyne rozsądne to: Konto(id_konta, nr_konta, stan), Klient(id_klienta, nazwisko, imie) oraz KlientKonto(id_konta, i_klienta). Klucze obce same wyszli.

konto usunięte

Temat: sql zadanie

Bogdan P.:
Maciej G.:
Dopisz może jakąś dalszą część rozwiązania tego zadani - wtedy ja się pośmieję.
/\/i3 b():
- nie rozwiązuję zadań studentom
- nie lubię jak komuś nie chcę się pomyśleć (autorowi tematu)
- nie lubię jak ktoś mając do dyspozycji tyle darmowych narzędzi nawet nie spróbuje "tego" zrobić
- nie toleruję minimalizmu
- moje rozwiązanie niczego autora tematu nie nauczy
- nauka nie polega na robieniu zadania na kartce papieru ;)
- jestem leniwy, jak ktoś nie szanuje mojego czasu ja nie szanuje jego ;)

Pozdrawiam

w tym sporcie nie chodzi o tego co pyta tylko o trening własnego mózgu, wiesz później się alchajmera dostaje

Następna dyskusja:

Ciekawe (chyba :)) zadanie ...




Wyślij zaproszenie do