Upload
gavril
View
101
Download
0
Embed Size (px)
DESCRIPTION
Проектиране на релационни бази от данни с Microsoft SQL Server 2005 Management Studio. Теория и практика. Светлин Наков. Национална академия по разработка на софтуер. academy.devbg.org. Съдържание. Национална академия по разработка на софтуер (НАРС) Релационни бази от данни - PowerPoint PPT Presentation
Citation preview
Проектиране на релационни Проектиране на релационни бази от данни с бази от данни с Microsoft SQL Microsoft SQL Server 2005Server 2005 Management StudioManagement Studio
Светлин НаковСветлин НаковНационална академия по Национална академия по разработка на софтуерразработка на софтуерacademy.devbg.org
Теория и практикаТеория и практика
СъдържаниеСъдържание
1.1. Национална академия по разработка Национална академия по разработка на софтуер (НАРС)на софтуер (НАРС)
2.2. Релационни бази от данниРелационни бази от данни• Таблици, първичен ключ, външен Таблици, първичен ключ, външен
ключ, връзки, множественост, ключ, връзки, множественост, E/R E/R диаграми, нормализациядиаграми, нормализация
3.3. Инструментът Инструментът SQL Server Management SQL Server Management StudioStudio 2005 2005• Създаване на таблици и връзкиСъздаване на таблици и връзки• Изграждане на Изграждане на E/R E/R диаграмидиаграми
За лектораЗа лектора
• Светлин НаковСветлин Наков• Носител на наградата “Джон Носител на наградата “Джон
Атанасов” на Президента на Атанасов” на Президента на БългарияБългария
• Автор на 3 книги и над 20 статииАвтор на 3 книги и над 20 статии• 15 години опит с програмирането15 години опит с програмирането• 8 от тях професионално8 от тях професионално
• Директор направление обучение в Директор направление обучение в Национална академия по разработка Национална академия по разработка на софтуерна софтуер
• Преподавател във ФМИ на СУПреподавател във ФМИ на СУ
Национална академия Национална академия по разработка на по разработка на софтуер (НАРС)софтуер (НАРС)
Какво е НАРС?Какво е НАРС?
• Национална академия поНационална академия по разработка разработка на софтуер (НАРС)на софтуер (НАРС)• Практическо обучение за софтуерни Практическо обучение за софтуерни
инженериинженери• Курсове за начинаещи и напредналиКурсове за начинаещи и напреднали• Специалности Специалности Java Java и и .NET.NET• Гарантирана работа по специалносттаГарантирана работа по специалността• Безплатно обучение!Безплатно обучение!• http://academy.devbg.orghttp://academy.devbg.org
НАРСНАРС – – успешен стартуспешен старт
• НАРС ви гарантира успешен старт в НАРС ви гарантира успешен старт в кариерата на софтуерен инженеркариерата на софтуерен инженер• Работа в престижи софтуерни фирми:Работа в престижи софтуерни фирми:• SAP Labs Bulgaria, telerik, Sciant, Rila SAP Labs Bulgaria, telerik, Sciant, Rila
Solutions, Sirma, Seeburger Informatik, Solutions, Sirma, Seeburger Informatik, ICB, Stemo, Wohnfinder, Bank Service, ICB, Stemo, Wohnfinder, Bank Service, Bianor, Siemens, ComSoft и др.Bianor, Siemens, ComSoft и др.
• БезплатноБезплатно обучение!обучение!• За контакти:За контакти:
http://academy.devbg.orghttp://academy.devbg.org
Релационни Релационни бази от даннибази от данни
Фундаментални концепцииФундаментални концепции
Релационни бази от данниРелационни бази от данни
• Релационните бази от данниРелационните бази от данни• Представляват съвкупности от таблици и Представляват съвкупности от таблици и
връзки между тяхвръзки между тях ( (релации)релации)• Ползват здрава математическа основа: Ползват здрава математическа основа:
релационната алгебрарелационната алгебра
• Системи за управление на релационни Системи за управление на релационни бази от данни бази от данни ((СУБД, СУБД, RDBMSRDBMS))• ДефиниратДефинират релационната схема (таблиците релационната схема (таблиците
и връзките между тях)и връзките между тях)• Обработват данните в таблицитеОбработват данните в таблиците: : добавяне, добавяне,
търсене, промяна, изтриванетърсене, промяна, изтриване
Системи за управление на Системи за управление на бази от даннибази от данни
• RDBMS RDBMS системите се наричат ощесистемите се наричат още• сървъри за управление на бази от даннисървъри за управление на бази от данни• или просто или просто "Database "Database сървърисървъри""
• По-известни По-известни RDBMS RDBMS сървъри:сървъри:• Microsoft SQL ServerMicrosoft SQL Server• Oracle DatabaseOracle Database• IBM DB2IBM DB2• PostgreSQLPostgreSQL• MySQLMySQL• Borland InterbaseBorland Interbase
Таблици и връзкиТаблици и връзкиОсновни понятияОсновни понятия
ТаблициТаблици
• Таблиците представляват съвкупност от Таблиците представляват съвкупност от стойности, подредени в редове и колони. стойности, подредени в редове и колони. Пример (таблица Пример (таблица Person)Person)::
• Редовете имат еднаква структураРедовете имат еднаква структура• Колоните имат име и тип (число, символен Колоните имат име и тип (число, символен
низ, дата или др.)низ, дата или др.)
IdId NameName FamilyFamily EmployerEmployer11 СветлинСветлин НаковНаков НАРСНАРС22 БранимирБранимир ГюровГюров Tam TamTam Tam33 МартинМартин КуловКулов НАРСНАРС
Схема на таблицаСхема на таблица
• Схема на таблица е наредена Схема на таблица е наредена последователност от описания на последователност от описания на колони (име и тип)колони (име и тип)
• Например таблицатаНапример таблицата PersonPerson има има следната схема:следната схема:
Person (Person ( IdId:: число,число, NameName: символен низ,: символен низ, FamilyFamily: символен низ,: символен низ, Employer: Employer: символен низсимволен низ))
Типове данни в Типове данни в SQL SQL Server 2005Server 2005
• ЧисловиЧислови• bit (1-bit), integer (32-bit), bigint (64-bit)bit (1-bit), integer (32-bit), bigint (64-bit)• float, real, numeric(scale, precision)float, real, numeric(scale, precision)• money – за парични пресмятанияmoney – за парични пресмятания
• ТекстовиТекстови• char(size) – фиксирана дължинаchar(size) – фиксирана дължина• varchar(size) – символен низvarchar(size) – символен низ• nvarchar(size) – Unicode низnvarchar(size) – Unicode низ• text, ntext – дълъг символен низtext, ntext – дълъг символен низ
Типове данни в Типове данни в SQL SQL Server 2005Server 2005
• Бинарни данниБинарни данни• varbinary(size)varbinary(size) – редица от байтове – редица от байтове• image – image – бинарен блок до бинарен блок до 1 GB1 GB
• Дати и часовеДати и часове• datetimedatetime – дата и час от – дата и час от 1.1.171.1.17553 3 г. до г. до
31.12. 9999 г. с прецизност 1/300 сек.31.12. 9999 г. с прецизност 1/300 сек.• smalldatetime – smalldatetime – дата с точност 1 минутадата с точност 1 минута
• ДругиДруги• timestamptimestamp – – автоматична версия на редавтоматична версия на ред
Първичен ключПървичен ключ
• Първичният ключ Първичният ключ (primary key) (primary key) ее колона от колона от таблицата, която уникално идентифицира даден таблицата, която уникално идентифицира даден неин реднеин ред
• Два записа (реда) са различни когато са Два записа (реда) са различни когато са различни първичните им ключоверазлични първичните им ключове
• Първичният ключ може да е съвкупност от Първичният ключ може да е съвкупност от няколко колониняколко колони
IdId NameName FamilyFamily EmployerEmployer11 СветлинСветлин НаковНаков БАРСБАРС22 БранимирБранимир ГюровГюров BSHBSH33 МартинМартин КуловКулов CodeAttestCodeAttest
Primary Primary keykey
PersonPerson
Връзки (релации)Връзки (релации)
• Връзките между таблиците се базират на Връзките между таблиците се базират на взаимоотношения взаимоотношения primary key / foreign keyprimary key / foreign key
IdId NameName CCountryountryIIdd11 СофияСофия 1122 ПловдивПловдив 1133 МюнхенМюнхен 2244 БерлинБерлин 2255 МоскваМосква 33
idid namename11 БългарияБългария22 ГерманияГермания33 РусияРусия
TownTown
CountryCountry
Primary Primary keykey
Primary Primary keykey
Foreign Foreign keykey
Видове връзки Видове връзки (релации)(релации)
• Външният ключ (Външният ключ (foreign key) foreign key) е номер на е номер на запис запис (primary key) (primary key) в друга таблицав друга таблица
• Връзките спестяват повтарянето на Връзките спестяват повтарянето на информацияинформация• В примера името на държавата не се В примера името на държавата не се
повтаря за всеки градповтаря за всеки град• Връзките имат множественост (Връзките имат множественост (multiplicity)multiplicity)::• 1 x 1 x много – държава / градовемного – държава / градове• многомного x x много – студент / учебен курсмного – студент / учебен курс• 11 x 1 – x 1 – например човек например човек ↔↔ студент студент
Множественост на Множественост на връзкитевръзките (1 x n) (1 x n)
• Връзка Връзка 1 x 1 x много (или много много (или много xx 1)1)• 1 запис от първата таблица съответства 1 запис от първата таблица съответства
на много записи от втората таблицана много записи от втората таблица• Използва се много честоИзползва се много често
IdId NameName CCountryountryIIdd11 СофияСофия 1122 ПловдивПловдив 1133 МюнхенМюнхен 2244 БерлинБерлин 2255 МоскваМосква 33
IdId NameName11 БългарияБългария22 ГерманияГермания33 РусияРусия
TownTown
CountryCountry
Множественост на Множественост на връзкитевръзките (n x n) (n x n)
• Връзка многоВръзка много x x многомного• Един запис от първата таблица Един запис от първата таблица
съответства на много записи от втората съответства на много записи от втората таблица и обратнототаблица и обратното
• Реализира се чрез междинна таблицаРеализира се чрез междинна таблица
IdId NameName11 ПешоПешо22 МинкаМинка33 ГошоГошо44 ПенкаПенка
IdId NameName11 .NET.NET22 JavaJava33 PHPPHP
StudentStudentCourseCourseSStudenttudentIIdd CCourseourseIIdd
11 1111 2233 2233 3344 22
StudentCourseStudentCourse
Множественост на Множественост на връзкитевръзките (n x n) (n x n)
• Връзка многоВръзка много x x много с много с entityentity таблица таблица
IdId NameName11 ПешоПешо22 МинкаМинка33 ГошоГошо44 ПенкаПенка
IdId NameName11 .NET.NET22 JavaJava33 PHPPHP
StudentStudentCourseCourse
StudentIdStudentId CourseIdCourseId StartDateStartDate EndDateEndDate MarkMark11 11 1.10.20051.10.2005 30.09.200630.09.2006 6.006.0033 22 1.07.20061.07.2006 30.07.200630.07.2006 5.755.75
EnrollmentEnrollment
Множественост на Множественост на връзкитевръзките (1 x 1) (1 x 1)
IIdd NameName AgeAge11 бай Иванбай Иван 727222 бате Гойкобате Гойко 262633 кака Маракака Мара 2424
• Връзка Връзка 1 x 11 x 1• 1 запис от едната таблица съответства 1 запис от едната таблица съответства
на точно 1 запис от другата таблицана точно 1 запис от другата таблица• Моделира наследяване на таблициМоделира наследяване на таблици
PersonPerson
IdId SpecialtySpecialty11 Computer ScienceComputer Science22 ChemistryChemistry33 HistoryHistory
StudentStudent
Primary & Primary & foreign key in foreign key in the same timethe same time
Primary Primary keykey
Представяне на Представяне на дървовидни даннидървовидни данни
• Как представяме дървета и графи?Как представяме дървета и графи?
СветлинНаков
МариоПешев
НадяТодорова
ЙоанаИванова
АвторелацииАвторелации((Self-relationshipsSelf-relationships))
• Връзките Връзките primary/foreign key primary/foreign key може да може да са в една и съща таблицаса в една и съща таблица• Пример: служителите в една фирма Пример: служителите в една фирма
имат началник, който също е служителимат началник, който също е служител
IdId NameName ManagerIdManagerId11 Светлин НаковСветлин Наков ((null)null)22 Марио ПешевМарио Пешев 1133 Надя ТодороваНадя Тодорова 1144 Йоана ИвановаЙоана Иванова 33
EmployeesEmployeesPrimary keyPrimary key Foreign keyForeign key
Проектиране на Проектиране на релационни бази релационни бази
от данниот данниФундаментални концепцииФундаментални концепции
Идентификация на Идентификация на същностите същностите (entities)(entities)
• Entity Entity таблиците представляват таблиците представляват същности (обекти) от реалния святсъщности (обекти) от реалния свят• Най-често са съществителни в текста Най-често са съществителни в текста
на заданието (спецификацията)на заданието (спецификацията)• Например:Например:
• Същности: студент, курс, градСъщности: студент, курс, град
Да се разработи система за съхраняване на Да се разработи система за съхраняване на информация за информация за студентистуденти, които се обучават в , които се обучават в различни различни курсовекурсове. Курсовете се провеждат в . Курсовете се провеждат в различни различни градовеградове. При регистрация на студент за . При регистрация на студент за него се въвежда име, фак. номер, снимка и дата.него се въвежда име, фак. номер, снимка и дата.
Идентификация на Идентификация на колоните в таблицитеколоните в таблиците
• Колоните в таблиците са Колоните в таблиците са характеристики на същноститехарактеристики на същностите• Имат име и типИмат име и тип
• Например студентите имат:Например студентите имат:• Име (текст)Име (текст)• Факултетен номер (число)Факултетен номер (число)• Снимка (бинарен блок)Снимка (бинарен блок)• Дата на регистрация (дата)Дата на регистрация (дата)
Идентификация на Идентификация на колоните в таблицитеколоните в таблиците
• Колоните са пояснения за същностите Колоните са пояснения за същностите в текста на заданието, например:в текста на заданието, например:
• Студентите имат следните Студентите имат следните характеристики:характеристики:• Име, факултетен номер, снимка, дата Име, факултетен номер, снимка, дата
на регистрация и списък от курсовена регистрация и списък от курсове
Да се разработи система за съхраняване на Да се разработи система за съхраняване на информация за студенти, които се обучават в информация за студенти, които се обучават в различни различни курсовекурсове. Курсовете се провеждат в . Курсовете се провеждат в различни градове. При регистрация на студент за различни градове. При регистрация на студент за него се въвежда него се въвежда имеиме, , фак. номерфак. номер, , снимкаснимка и и датадата..
Как да изберем първичен Как да изберем първичен ключ за ключ за entity entity таблиците?таблиците?
• Винаги дефинирайте допълнителна Винаги дефинирайте допълнителна колона за първичния ключколона за първичния ключ• Не използвайте съществуваща колона Не използвайте съществуваща колона
(например ЕГН)(например ЕГН)• Трябва да е число (Трябва да е число (integer)integer)• Трябва да се обяви като Трябва да се обяви като primary keyprimary key• Използвайте Използвайте identity identity в в SQL ServerSQL Server• Слагайте първичния ключ като първа Слагайте първичния ключ като първа
колонаколона
Идентификация на Идентификация на връзките връзките (entities)(entities)
• Връзките са отношения между Връзките са отношения между същностите:същностите:
• "Студенти се обучават в курсове" – "Студенти се обучават в курсове" – релация много към многорелация много към много
• "Курсовете се провеждат в градове" – "Курсовете се провеждат в градове" – релация много към еднорелация много към едно
Да се разработи система за съхраняване на Да се разработи система за съхраняване на информация за информация за студентистуденти, които , които се обучават все обучават в различни различни курсовекурсове. . Курсовете се провеждат вКурсовете се провеждат в различни различни градовеградове. При регистрация на студент за . При регистрация на студент за него се въвежда име, фак. номер, снимка и дата.него се въвежда име, фак. номер, снимка и дата.
Нормализация на Нормализация на релационна схемарелационна схема
НормализацияНормализация
• Нормализацията на релационната схема Нормализацията на релационната схема премахва повтарящите се даннипремахва повтарящите се данни
• Денормализираните данни съдържат много Денормализираните данни съдържат много повторенияповторения. . Например:Например:
продуктпродукт произво-произво-дителдител ценацена категориякатегория магазинмагазин градград
кисело кисело млякомляко
Млекис Млекис ООДООД 0.670.67 хранителни хранителни
стокистокисупермаркет супермаркет
"Менте""Менте" СофияСофия
хляб хляб "Добружда""Добружда"
Фурна Фурна "Пушека""Пушека" 0.550.55 хранителни хранителни
стокистокисупермаркет супермаркет
"Менте""Менте" СофияСофия
бира бира "Загорка""Загорка" Загорка АДЗагорка АД 0.580.58 безалкох. безалкох.
напиткинапиткипавилион павилион "24 часа""24 часа" ВарнаВарна
бира бира "Amstel""Amstel" Загорка АДЗагорка АД 0.670.67 безалкох. безалкох.
напиткинапиткипавилион павилион "24 часа""24 часа" ВарнаВарна
ProductProduct
НормализацияНормализация – – примерпример
• Пример за нормализиранаПример за нормализирана схема:схема:
idid имеиме22 "Млекс" ООД"Млекс" ООД44 "Загорка" АД"Загорка" АД
idid имеиме44 бирабира22 хранителнихранителни
idid продуктпродукт произвопроизводителдител_id_id ценацена категокатего
риярия_id_idмагазмагазинин_id_id
градград_id_id
11 кисело млякокисело мляко 22 0.670.67 22 44 1122 хляб "Добружда"хляб "Добружда" 33 0.550.55 22 44 1133 ракия ракия
"Пещерска""Пещерска"66 44..3838 55 22 11
44 бира "бира "ЗагоркаЗагорка"" 44 0.670.67 44 11 33
idid имеиме11 BillaBilla44 METROMETRO
idid имеиме11 СофияСофия33 ВарнаВарна
ProductProduct
VendorVendor CategoryCategory StoreStore TownTown
E/R E/R диаграмидиаграми
Релационни схеми и Релационни схеми и E/R E/R диаграмидиаграми
• Релационна схема на БД наричаме Релационна схема на БД наричаме съвкупността от:съвкупността от:• Схемите на всички таблициСхемите на всички таблици• Връзките между таблицитеВръзките между таблиците
• Релационната схема описва Релационната схема описва структурата на БДструктурата на БД• Не съдържа данни, а само метаданниНе съдържа данни, а само метаданни
• Релационните схеми се изобразяват Релационните схеми се изобразяват графично чрез графично чрез Entity/Relationship Entity/Relationship диаграми (диаграми (E/R Diagrams)E/R Diagrams)
E/R E/R диаграми – примердиаграми – примерДиаграмата е Диаграмата е създадена с създадена с
Microsoft SQL Microsoft SQL Server 2005 Server 2005
Management StudioManagement Studio
E/R E/R диаграми – примердиаграми – пример
Department
PK DeptId
DeptName
Professor
PK,FK1 ProfessorId
Title
DepartmentProfessor
PK,FK1 DeptIdPK,FK2 ProfessorId
Student
PK,FK1 StudentId
FacultyNumber
Course
PK CourseId
CourseNameFK1 DeptIdFK2 ProfessorId
CourseStudent
PK,FK1 StudentIdPK,FK2 CourseId
Person
PK PersonId
FirstNameLastName
Диаграмата е Диаграмата е създадена с създадена с
Microsoft VisioMicrosoft Visio
E/R E/R диаграми – примердиаграми – пример
Диаграмата е Диаграмата е създадена с създадена с
PLATINUM PLATINUM ERwinERwin
Инструменти за Инструменти за E/RE/R дизайндизайн
• E/R диаграмите се създават с инструменти E/R диаграмите се създават с инструменти за моделиране на данни (Data Modeling за моделиране на данни (Data Modeling Tools):Tools):• SQL Server Management StudioSQL Server Management Studio• CASE StudioCASE Studio• Oracle DesignerOracle Designer• Microsoft VisioMicrosoft Visio• Computer Associates EComputer Associates ERRwinwin• IBM Rational RoseIBM Rational Rose• fabForce DBDesigner (GNU GPfabForce DBDesigner (GNU GPLL проект с проект с
отворен код за Windows и Linux)отворен код за Windows и Linux)
Дизайн на Дизайн на DB DB диаграми диаграми с с SQLSQL Server 2005Server 2005
Management StudioManagement StudioДемонстрацияДемонстрация
Проектиране на Проектиране на релационни бази от даннирелационни бази от данни
Въпроси?Въпроси?