Садржај
Основно о базама података
Основно о базама података - лекција
Основно о базама података - квиз
Системи за управљање базом података
Пројектовање
Ентитети и инстанце
Атрибути
Ентитети, инстанце и атрибути - квиз
Везе
Везе - квиз
Посебне ситуације на моделу
Модел и додатна документација
Задаци
Задаци - упутство
Задаци са два ентитета
Задаци 1-M
Задаци M-M
Разни задаци
Нерешени задаци
Нормализација
Нормализација
Нормализација - задаци
Дизајн табела у бази података
Дизајн табела у бази података - ентитети и веза 1:M
Дизајн табела у бази података - везе 1:1 и M:M
Дизајн табела у бази података - надтип са подтиповима
Дизајн табела у бази података - задаци
Пример моделовања - факултет
Пример моделовања - факултет
Пример моделовања - продаја дигиталних композиција
Пример моделовања - продаја дигиталних композиција
Пројектни задатак - моделовање
Пројектни задатак - моделовање
Креирање табела
Команда CREATE TABLE
Креирање табела - команда CREATE TABLE и везе 1:M и M:M
Креирање табела - команда CREATE TABLE - примери
Креирање табела - команда CREATE TABLE - квиз
Задатак - направи базу за салон аутомобила
Креирање базе помоћу алата SQL Server Management Studio
Рад са табелама - команде ALTER TABLE и DROP TABLE
Рад са подацима
Рад са подацима - квиз
Задатак - салон аутомобила
База података библиотеке
База података библиотеке - преглед модела и базе
База података библиотеке - креирање базе и табела
База података библиотеке - унос података
База података библиотеке - дијаграм
База података библиотеке - други начин за креирање базе
Упит SELECT - пројекција и селекција
Упит SELECT - упит из једне табеле - пројекција
Упит SELECT - упит из једне табеле - пројекција - квиз
Упит SELECT - упит из једне табеле - пројекција - задаци
Упит SELECT - упит из једне табеле - селекција
Упит SELECT - упит из једне табеле - селекција - квиз
Упит SELECT - упит из једне табеле - селекција - задаци
Упит SELECT - упит из једне табеле - пројекција и селекција - задаци
Задаци - салон аутомобила
Упит SELECT - спајање табела
Упит SELECT - спајање табела
Упит SELECT - спајање табела - квиз
Упит SELECT - спајање табела - задаци
Задаци - салон аутомобила
Упит SELECT - функције и подупити
Упит SELECT - употреба функција
Упит SELECT - употреба функција - задаци
Упит SELECT - подупити
Упит SELECT - подупити - задаци
Продаја дигиталних композиција - база
База података за продају дигиталних композиција
База података за продају дигиталних композиција - наставак
Задаци - пројекција и селекција
Задаци - спајање табела
Задаци - групне функције и једна табела
Задаци - групне функције и спајање табела
Погледи
Погледи
Пројектни задатак
Пројектни задатак
Додаци
База података библиотеке – ORACLE
База за продају дигиталних композиција – SQLite

Пројектовање - посебне ситуације на моделу

Да ли је цена атрибут или је потребно да имамо посебан ентитет посвећен цени? Нема тачног и коначног одговора на ово питање. Одговор зависи од потреба пословања и неопходна је детаљна додатна анализа.

Кораци приликом пројектовања су: уочавање ентитета, набрајање атрибута за сваки ентитет и повезивање ентитета везама. Постоје, међутим, одређене ситуације које захтевају посебну пажњу и овде ћемо објаснити неке као што су: надтип са подтиповима, лук, рекурзивна веза и чување промене података кроз време.

Сваки логички модел, дијаграм ентитета и веза имају ентитете и везе. Многе реалне ситуације можемо да представимо управо таквим једноставним моделима. Постоје, међутим, неке ситуације за које су нам потребна посебна решења и те ситуације ће овде бити објашњене.

Надтип и подтипови

Уколико неколико ентитета има много истих атрибута и учествује у истим везама, можемо да их прикажемо као један ентитет са подтиповима.

https://petljamediastorage.blob.core.windows.net/root/Media/Default/Kursevi/OnlineNastava/specit_baze3/slika_206a.png

Подтипови морају да покривају све могуће случајеве. Дакле, ово је добар модел уколико пословање за које креирамо базу података има само аутомобиле, камионе и аутобусе. Уколико има и, на пример, моторе, овај модел није добар и морао би да се прошири додавањем још једног подтипа.

Подтипови морају да буду међусобно искључиви. У овом случају је то јасно: једно возило је ИЛИ аутомобил ИЛИ аутобус ИЛИ камион, тј. врло јасно може да се категоризује и не може да упадне у два од наведених подтипова истовремено.

У бази података се ова ситуација са приказаног модела реализује на један од следећа два начина:

  • једна табела у којој се чувају подаци о свим возилима,

  • онолико табела колико има подтипова.

Следи илустрација како би изгледала једна табела – vozila.

https://petljamediastorage.blob.core.windows.net/root/Media/Default/Kursevi/OnlineNastava/specit_baze3/slika_206e.png

Следи илустрација случаја са више табела: automobili, autobusi и kamioni.

https://petljamediastorage.blob.core.windows.net/root/Media/Default/Kursevi/OnlineNastava/specit_baze3/slika_206f.png

Да ли ћемо користити надип са подтиповима зависи од тога да ли постоји већи број заједничких атрибута у односу на број појединачних атрибута, и да ли постоји већи број заједничких веза у односу на везе у којима учествују подтипови.

У случају школе, на пример, наставнике и ученике нећемо ставити у заједнички надтип OSOBA, зато што, и поред великог броја истих атрибута (име, презиме, ЈМБГ, адреса, телефон, датум рођења, место рођења…) учествују у потпуно различитим везама (наставник организује и држи наставу, ученик одговара и добија оцену…).

Лукови

Луковима се означавају међусобно искључиве везе. Често исту ситуацију коју можемо да прикажемо уз помоћ лука можемо да прикажемо користећи надтип са подтиповима. Због прегледности илустрације, изостављени су атрибути на следећој слици. Слика представља следећу ситуацију: студент полаже ИЛИ писмени ИЛИ усмени испит ИЛИ ради колоквијум.

https://petljamediastorage.blob.core.windows.net/root/Media/Default/Kursevi/OnlineNastava/specit_baze3/slika_206b.png

Хијерархија и рекурзија

Најчешће исту ситуацију коју можемо да прикажемо као хијерархију, можемо да прикажемо користећи рекурзију, тј. рекурзивну везу. Погледајмо ситуацију са хијерархијом запослених у неком предузећу. Рекурзивна веза у овом случају се описује следећом реченицом: запослени има свог менаџера, тј. један запослени је менаџер другом запосленом.

https://petljamediastorage.blob.core.windows.net/root/Media/Default/Kursevi/OnlineNastava/specit_baze3/slika_206c.png

Рекурзивна веза је увек опциона целом дужином због оних на дну и врху хијерархије. Особа на врху нема менаџера, а особа на дну није никоме менаџер.

Моделовање промена кроз време

Уколико, на пример, цену производа чувамо као атрибут, у сваком тренутку знамо само актуелну цену. Не знамо када је промењена, не знамо који је био износ претходне, нити знамо колико често се мењала или да ли се уопште мењала у неком дужем протеклом периоду. Уколико нам ове информације нису ни важне, цена може да остане атрибут и модел ће остати једноставан. Уколико су нам ове информације важне, морамо да додамо ентитет помоћу којег ћемо пратити промене цене кроз време. Додавање ентитета компликује модел, па самим тим и будућу базу података, па треба размислити да ли су нам ти подаци потребни, да ли су важни за пословање или не.

Датум када је нека цена почела да важи увек мора бити мањи од датума до када је важила. Датум до када нека цена важи мора да буде опциони атрибут због тренутне цене, за коју знамо када је почела да важи, али ћемо датум до када важи знати тек када се измени.

https://petljamediastorage.blob.core.windows.net/root/Media/Default/Kursevi/OnlineNastava/specit_baze3/slika_206d.png
Претходна лекција
Следећа лекција
A- A+
Тема
Темa

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.