Usuwanie rekordów oraz blokowanie rekordów

1

Witam mam takie 3 tabelki:
KLIENCI
REF NAZWA MIASTO GRUPAKLIENTA
12374 Lineks Sp. z o.o. KRAKOW VIP
12375 Barton sp. j. WROCŁAW HURT
12376 Multisys S.A. WROCŁAW HURT
12377 Dantona Sp. z o.o. WROCŁAW HURT
12378 Erfur Sp. z o.o. WROCŁAW DETAL
12379 Aninaret sp. j. KRAKÓW DETAL
12380 Gravix sp. j. WARSZAWA DETAL
12381 Hutawon sp. z o.o. WARSZAWA DETAL
12382 Irys sp. z o.o. LĄDEK DETAL

FAKTURY
REF SYMBOL DATA KLIENT BRUTTO RABAT
1 F/1/09/12 1.09.2012 12374 18 450,00 15,00%
2 F/2/09/12 1.09.2012 12374 30 750,00 15,00%
3 F/3/09/12 5.09.2012 12374 184,50 10,00%
4 F/4/09/12 5.09.2012 12375 6 150,00 5,00%
5 F/5/09/12 6.09.2012 12375 5 289,00 5,00%
6 F/6/09/12 7.09.2012 12376 664,20 0,00%
7 F/7/09/12 8.09.2012 12377 1 230,00 5,00%
8 F/1/10/12 1.10.2012 12378 984,00 5,00%
9 F/1/10/12 1.10.2012 12374 9 827,70 5,00%

GRUPY KLIENTÓW
SYMBOL NAZWAGRUPY DOMYSLNYRABAT(%)
HURT Hurtownicy 5,00%
DETAL Detaliści 0,00%
VIP Kluczowi klienci 10,00%

i dwa pytania do nich:

  1. Wymień 2 sposoby na zablokowanie możliwości skasowania klientów, którzy mają wystawioną fakturę.
  2. Wymień sposób na automatyczne skasowanie klientów po usunięciu grupy, do której należą.

Mogłby ktos pomoc? :) co do drugiego pytania znalazlem cos takiego:
CREATE TABLE IF NOT EXISTS KLIENCI (
ref SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
nazwa VARCHAR(30) NOT NULL,
miasto VARCHAR(30) NOT NULL REFERENCES MIASTA(nazwa),
grupaklienta VARCHAR(30) NOT NULL,
PRIMARY KEY (ref),
KEY grupaklient (symbol),
CONSTRAINT grupaklienta_ibfk_ FOREIGN KEY (grupaklienta) REFERENCES grupyklientow (symbol) ON DELETE CASCADE
) TYPE=InnoDB;

CREATE TABLE IF NOT EXISTS GRUPYKLIENTOW (
symbol VARCHAR(5) NOT NULL,
nazwagrupy VARCHAR(30) NOT NULL,
domyslnyrabat(%) INT(5) NOT NULL,
PRIMARY KEY (symbol)
) TYPE=InnoDB;

Tzw. Metoda kaskadowa usuwania.

Nie wiem czy dobrze zrobione :P

0
  1. foreign key + F1/google oraz trigger + F1/google
  2. foreign key + F1/google - jest ok tylko najpierw trzeba stworzyć tabelę grupyklientow a dopiero potem klienci
0

No ok, to drugie kapuje, ale do tego pierwszego pytania szukam juz z godzine metody i nie moge znalezc :/

0

dokładnie tak jak druga tylko zamiast kasowania kaskadowego to ma być zabronione - poczytaj o tym co może być po ON DELETE. Drugi sposób to trigger, który będzie sprawdzał czy dla danego klienta jest jakaś faktura i jak jest to będzie zgłaszał wyjątek. Całość zamyka się w prostym select i sprawdzeniu if`em

0

dzieki wielkie :)

0

Mam pytanie ta sama baza co w poście nr 1

wartość faktur wrześniowych z podziałem na wielkość miast uwzględniając faktury dla hurtowników i detalistów.

0

no i co z tym? bo chyba nie oczekujesz gotowca

0

Nie gotowca tylko pomocy.

0

to tylko zapytam skąd ma się wziąć ta wielkość miast? A co do pomocy to select + join + goup by + where

1 użytkowników online, w tym zalogowanych: 0, gości: 1