or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
Osnove podatkovnih baz - vaje 14.4.2022
Varnost in kontrola dostopa
Delali bomo z bazo
banka
, ki smo jo spoznali na prvih vajah, oziroma vsak s svojo (in sošolčevo) kopijo.Nastavitve baze za projekt:
Naloga 1: Pravice javnosti
Ustvari pogled
stats(posta, kraj, st_ljudi)
, ki za vsako ime kraja pove, koliko ljudi iz tega kraja je komitentov banke. Takšna informacija je dobra za promocijo v javnosti, zato naj bo pogled za branje dostopen vsem. Poglej v bazo kakšnega od sošolcev in preveri, če res lahko bereš njihov pogledstats
. (In jih zafrkavaj, če ga ne moreš.)Naloga 2: Pravice posameznih uporabnikov
Tvojo banko kontaktirajo iz zavarovalnice, ker jih zanima likvidnost njihovih strank. Informacije o transakcijah so zasebna stvar, lahko pa zavarovalničarjem ustvarimo pogled
mesecni_promet(emso, max_prejemek, max_izdatek)
. Ta za vsako osebo podaja višino največjega prejemka in največjega izdatka na vseh njegovih računih. Zavarovalnici se zdi, da je to dovolj dobra ocena povprečnega mesečnega prometa.Vlogo zavarovalničarja naj odigra tvoj sošolec. Dostop do pogleda
mesecni_promet
dovoli samo njemu. Prepričajta se, če res lahko dostopa do informacij in če drugi ne morejo.Daj zavarovalničarju še pravico, da on sam dodeli pravico do pregledovanja pogleda svojim kolegom.
Dodatno (naredi na koncu vaj, če bo čas)
Zavarovalnica zdaj želi povprečen mesečni promet na računu, t.j., povprečno mesečno vsoto absolutnih vrednosti vseh transakcij v celotnem komitentskem obdobju. Kot komitentsko obdobje štejemo čas od prve opravljene transakcije tiste osebe do tega trenutka. Pogled naj v izogib bančnemu izkoriščanju vsebuje le tiste osebe, za katere je povprečni mesečni promet manjši od 100000.
Zbriši pogled
mesecni_promet
in naredi novega, popravljenega. Ali sošolec-zavarovalničar še lahko dostopa do njega?Naloga 3: Skupine uporabnikov,
DO INSTEAD
Marketinški oddelek v tvoji banki želi pošiljati reklame komitentom, vendar jim ne smemo dovoliti vpogleda v vse zasebne informacije o strankah.
Ustvari pogled
spam(ime, priimek, naslov)
. Naslov naj bo oblike Jamova 39, 1000 Ljubljana; dobiš ga s stikanjem (operator||
) ustreznih stolpcev iz tabeloseba
inkraj
.Vlogo marketinškega oddelka naj odigrata dva sošolca. V skupino
damjanm_mktg
(kjerdamjanm
spet zamenjaš s svojim up. imenom) vključi dva svoja sošolca. Nato skupini dovoli branje iz pogledaspam
. Preverite, če smejo iz pogledaSELECT
ati res samo člani skupine.Marketingarje včasih pokličejo sveže poročene stranke, ki so spremenile priimek. Najbolj praktično bi bilo, če bi lahko spremembo v bazo vnesli kar takoj, brez posredovanja skrbnika baze. Omogoči jim takšne spremembe.
DO INSTEAD
pogleduspam
.Predpostavi, da je oseba enolično določena z imenom in priimkom. V praksi tega ne bi naredili, temveč bi v tabeli
oseba
vpeljali dodaten ID (različen od EMŠO, zato ni hudega, če marketing te IDje pozna) in ga dodali v pogledspam
.Rešitev s priimki krasno dela in marketing si je nekaj podobnega zaželel tudi za obravnavo strank, ki se preselijo (zamenjajo naslov). Kako bi jim lahko pomagal? Implementacija ni potrebna.
Vse stranke niso ravno navdušene nad veliko količino pošte, ki jim jo pošilja naša banka, zato nekateri zahtevajo, da se jih briše s spam seznama. Smemo to kot lastnik pogleda
spam
dovoliti? Kako bi pomagali oglaševalcem? Ta scenarij naredite v parih; en je lastnik baze, drugi pa iz marketinga:Lastnik naj dovoli oddelku marketinga, da v njegovi bazi kreira tabele.
Marketingar naj si ustvari tabelo
antispam
, ki bo hranila ljudi, ki nočejo prejemati pošte, in dovoli branje lastniku. Katere stolpce mora imetiantispam
?Lastnik naj popravi definicijo pogleda
spam
.Ali tvoja rešitev dobro deluje, ko stranka spremeni priimek? Če ni tako, dodaj ustrezno pravilo
DO ALSO
.Opomba:
DO ALSO/INSTEAD
je Postgresova razširitev standarda. Omejitev, da pogledi ne omogočajo avtomatično operacijDELETE
inUPDATE
, pa je tudi Postgresova posebnost in je v neskladju s standardom.Naloga 4: Pravica sklicevanja (
REFERENCES
)Banka je zaposlila študente, da bodo zanjo med strankami izvajali anketo. Študentje seveda ne smejo izvedeti ničesar o strankah, niti tega, kdo stranke sploh so. Od vsakega anketiranca dobijo samo njegovo številko stranke (v našem primeru EMŠO, lahko pa bi imeli kakšen manj informativen interni ID) ter odgovore na vprašanja. Odgovore hranijo v tabeli
anketa(emso, id_vprasanja, odgovor)
.Dodaj anketarju (sošolcu) dovolj pravic, da bo lahko naredil tabelo in vanjo vstavljal odgovore strank, ne pa tudi dobil seznam strank.