Данни и програмен код


MySQL поддържа три прости класа данни – числови, текстови и за



Pdf просмотр
страница6/14
Дата03.01.2022
Размер1.13 Mb.
#113246
1   2   3   4   5   6   7   8   9   ...   14
BD
MySQL поддържа три прости класа данни – числови, текстови и за
дати и време. Те са разгледани в следващите пасажи. Освен тях се
поддържат геометрични и пространствени типове данни, като
точка, отсечка, окръжност и др., но те са извън рамките на настоящия курс.


1.2.1 Числови данни
Числовите данни при MySQL могат да бъдат със знак (Signed) или без знак (unsigned). Ако е избрано да бъдат със знак, те могат да представят отрицателни числа, но най-голямото число, което може да се запише в полето е два пъти по-малко от това, ако се избере тип без знак. Например типа TINYINT може да заема стойности от -
128 до +127, ако е със знак или от 0 до 255, ако е без знак.
Числовите типове също се делят и на целочислени и дробни.
Основните целочислени типове данни са показани в таблица 1.1, като числата в скобите се отнасят за типовете без знак.
Табл. 1.1. Целочислени типове данни в MySQL
Тип
Стойности със знак (без знак)
Размер
BIT (M)
0 или 1 1 бит
TINYINT
-127 ÷ 128 (0 ÷ 255)
1 байт
SMALLINT -32768 ÷ 32767 (0 ÷
65535)
2 байта
MEDIUMINT -8388608 ÷ 8388607 (0 ÷
16777215)
3 байта
INT
-2147483648 ÷
2147483647 (0 ÷
4294967295)
4 байта
BIGINT
-9223372036854775808 ÷
9223372036854775807
(0 ÷
18446744073709551615)
8 байта
В таблица 1.2 са показани дробните числови типове данни.


Табл. 1.2. Дробни числови типове данни в MySQL
Тип
Стойности със знак
Размер
FLOAT
-3.40E+38 ÷
+3.40E+38 4 байта
DOUBLE
-2.22E+308 ÷
+1.8E+308 8 байтa
DECIMAL(M,D)
M цифри (до 65),
D от които след десетичната запетая (до 30)
9 цифри в
4 байта
При дробните променливи типът без знак не увеличава максималното число, което може да се запише в клетката, а само забранява отрицателните числа. Типът DECIMAL представя десетично число с до 65 цифри, като до 30 от тях може да бъдат след десетичната запетая. Разберът му варира в зависимост от броя цифри, като всеки 9 цифри се запазват в
4 байта. Например типът DECIMAL(5,2) може да заема стойности от -999.99 до 999.99.
Типовете данни за дата и час са показани в таблица 1.3.


Табл. 1.3. Типове данни за дата и време в MySQL
Тип
Стойности
Размер
DATETIME
'1000-01-01 00:00:00' ÷
'9999-12-31 23:59:59'
8 байта
DATE
'1000-01-01' ÷
'9999-12-31'
3 байта
TIMESTAMP
'1970-01-01 00:00:01' UTC ÷
'2038-01-19 03:14:07'
4 байта
TIME
'-838:59:59' ÷
'838:59:59'
3 байта
YEAR
1901 ÷ 2155 1 байт
Типът TIMESTAMP показва броя секунди, изминали от 1 януари
1970 година, когато е официалния рожден ден на Интернет.
Типовете данни, предвидени за запазване на текст и файлове са показани в таблица 1.4.
Табл. 1.4. Типове данни за текст и файлове в MySQL
Тип
Стойности със знак (без знак)
Размер
CHAR(N)
Заема N байта, напр. CHAR(4) – 4 байта
0-255
VARCHAR(N) размер от 1 до
N+1 байта
0-255


BINARY(N)
Може да приема различни от ASCII символи, запълва се с нули накрая:
BINARY(3) ->
‘a\0\0’
0-255
VARBINARY(N)
Заема N+1 байта, няма запълване
0-255
BLOB
Binary Large
OBject
До 2 32
байта
TEXT
Tекст
До 2 32
байта
Типът CHAR заема фиксиран размер на диска – ако е дефиниран CHAR(20) той винаги заема 20 байта, дори и ако в клетката има записана една буква. Типът VARCHAR заема различно място на диска, в зависимост от това колко букви са записани, например типът VARCHAR(20) при записани 5 букви заема 6 байта – по един за петте букви и един за броя.
Типовете BINARY и VARBINARY имат същото значение, но позволяват запис на произволни стойности във всеки байт, докато CHAR и VARCHAR позволяват само ASCII символи – букви, цифри и препинателни знаци. И четирите типа позволяват запис на данни до 255 байта дължина. Ако искаме да записваме повече от 255 байта, можем да изберем типовете
BLOB (за двоични) или TEXT (за текстови данни). Те също имат различни подтипове, в зависимост от максималната дължина на данните:

TINYBLOB, TINYTEXT – до 28 байта

BLOB, TEXT – до 216 байта

MEDIUMBLOB, MEDIUMTEXT – до 224 байта

LONGBLOB, LONGTEXT – до 232 байта
Два допълнителни типа данни са ENUM и SET. Типът ENUM се използва за означаване на една от няколко предварително дефинирани стойности. Например ENUM(‘one‘, ‘two’, ‘three’)

може да заема стойности: ‘one’, ‘two’ или ‘three’. Типът SET се използва за изразяване на една или повече стойности от набор предварително дефинирани такива, например SET(‘one‘,
‘two’) може да заема стойности: ‘one’, ‘two’ или ‘one’’two’.
Всеки тип може да заема специалната стойност ‘NULL’. Това не означава нула, а липса на стойност. Възможно е да се дефинира дадено поле да не може да има стойност NULL, ако се дефинира като NOT NULL.
В зависимост от това къде се намира и как се достъпва базата данни, може да се различат следните структури на информационни системи с бази данни:
1.3.1 Локални (еднопотребителски) приложения
При тях базата данни, заедно с програмата, която използва данните работи на един компютър, на който работи и оператора. Този тип приложения не изискват и не използват компютърна мрежа и само един потребител работи с данните в даден момент от време.
1.3.2 Клиент-сървър
При тези приложения базата данни, често заедно със системата за управление на база данни (СУБД) стои на специализиран компютър в мрежата, наречен сървър.
Потребителите стартират своите програми на компютрите си и при нужда изпращат по мрежата запитвания към СУБД, която извлича необходимите данни от базата, обработва ги и ги предоставя на потребителя. Моделът е показан на фигура 1.1.


Фигура 1.1. Архитектура клиент-сървър.
Този модел предполага наличието на компютърна мрежа и позволява много потребители да използват едновременно базата данни.
1.3.3 Интернет базирани приложения
Специален раздел клиент-сървър приложения са Интернет базираните приложения. При тях обикновено средата за предаване на данни е мрежата Интернет (въпреки че може да се използват и в частна мрежа), програмата на клиентския компютър е web browser (Google Chrome, Internet explorer,
Firefox и др.) а сървърът е web сървър със система за управление на бази данни. Потребителят отваря страницата на приложението, като обикновена web страница. Програмата за обработка се намира на web сървъра и тя изпраща запитвания към базата данни, обработва ги и ги предава към потребителите.
Обикновено Интернет базираните приложения биват два вида: двунивови (two-tier) или тринивови (three tier). Структурата на двата вида е показана на фигура 1.2.


Фигура 1.2. Двунивова и тринивова архитектура.
При двунивовата архитектура на една машина работят и Web сървъра и системата за управление на базата данни. Клиентът зарежда страницата от web сървъра, който от своя страна при нужда чете и записва данни в базата. При тринивовата архитектура web сървърът работи на отделна машина, която единствена е видима в Интернет. Тя е свързана през вътрешна мрежа към сървъра за база данни.
Двунивовата архитектура е по евтина и лесна за поддръжка, но е уязвима на външни атаки. Тъй като сърсърът с базата данни е видим в Интернет, то е възможно при неправилно конфигуриране или проблеми в софтуера евентуален атакуващ да получи достъп до данните и да ги източи или промени. При тринивовата архитектура само web сървъра има право да достъпва базата данни, която не е достъпна от
Интернет. В този случай атакуващия може да повлияе на

работата на web сървъра и да спре услугата, но не може да получи достъп до данните.
1.3.4 Паралелна архитектура
При големите натоварени Интернет сайтове, които обслужват милиони потребители едновременно (като Facebook или
Google) не е възможно един сървър да обслужи всички потребители. При тях обикновено софтуерът работи на клъстър – група сървъри, работещи едновременно и разпределящи си обслужването на потребителите, а чрез високоскоростна връзка осъществяват достъп до обща база данни или всеки от тях си има локално копие на базата от данни, като по високоскоростната връзка предава промените към останалите сървъри. Примерна структура е показана на фигура 1.3.
Фигура 1.3. Паралелна архитектура.
1.3.5 Разпределена архитектура
Когато данните физически се намират на различни места и организациите, които са отговорни за поддържането им са

физически разделени, обикновено се използва разпределена архитектура. Пример за такава е системата за полети от летищата, където даденото летище е отговорно за попълването на данните за своите полети, но всяко летище има достъп до данните за всички полети. Примерът е показан на фигура 1.4.
Фигура 1.4. Разпределена архитектура.
2. Модели на бази от данни (1/7)
Моделът на базата от данни представлява набор от средства за описание на данните, връзките между тях, семантиката


(значението) на данните и ограниченията върху тях.
Съществуват някои стари модели, които са остарели и не се използват широко, но за пълнота те ще бъдат споменати накратко.
Йерархичният модел се състои от записи (records), свързани помежду си с връзки (links). Записът е набор от полета (fields), всяко от които съдържа една стойност. Връзката свързва два записа, като само един от записите е главен (корен). При този модел не са възможни цикли. Всеки запис може да бъде родителски (parent) и/или подчинен (child), а главният е само родителски, той е празен запис. Пример за такъв модел е показан на фигура 2.1.
Фигура 2.1. Йерархичен модел.
Моделът е разработен за старите лентови запаметяващи системи, при които данните се четат последователно.
Предимството му е, че при този начин на четене и запис се осъществява бърз достъп до данните. Понеже не може да има цикли, данните трябва да се повтарят навсякъде, където са необходими – както се вижда на фигурата данните на студента се повтарят и в секцията студенти, и в секцията преподаватели и в дисциплини. Изтриването на родителски запис води до изтриване на всички подчинени записи.
Мрежовият модел е развитие на йерархичния, като при него с цел избягване на повторението на информация е добавена

възможността за образуване на цикли. Пример за мрежов модел е показан на фигура 2.2.
Фигура 2.2. Мрежов модел.
Предимствата са съчетание на бърз достъп до данните и избягване на излишие на информация, но моделът има и недостатъци - работата се утежнява от сложната логическа структура на данните, потребителят трябва да бъде много добре запознат със структурата на базата данни, за да може да обхожда свързващите структури и структурата не може да се променя лесно.
Релационният модел е най-широко използван в съвременния свят, затова на него ще бъде обърнато повече внимание. Това е моделът, който използва системата MySQL и който се предполага в следващите теми.
При него данните са разпределени в „релации“. Често се прави следната грешка: превежда се буквално от английски понятието relation и се счита, че релациите са връзките между отделните компоненти на базата. Всъщност релацията представлява таблица. Обикновено в една таблица се съдържат данни за обекти от един тип. Например ако моделираме един университет, вероятно в него ще има таблица „Студенти“. Нейните колони ще описват отделните свойства на студентите, които ще искаме да използваме в рамките на информационната система – имена, курс, група,

успех и др. Колоните в отделни литературни източници могат да се наричат „полета“ (fields) или „атрибути“ (attributes).
Редовете на таблицата съдържат данни за отделните обекти – в примера за различните студенти. Всеки ред съдържа данните на един точно определен студент. Понякога в литературата редовете могат да се наричат „кортежи“ (в английските източници – tuples). Всеки ред в таблицата трябва да се различава от всички останали.
Връзките между отделните релации отразяват как са свързани различните обекти. Например в един университет освен студенти има преподаватели, факултети, дисциплини, курсове, групи и др. Обикновено подходът за моделиране на базата данни предполага да се направи по една таблица за всеки обект. За да отразим как са свързани отделните обекти, можем да направим връзки между таблиците. Връзките могат да бъдат:

Връзка 1:1 – на всеки обект от едната таблица отговаря точно един обект от другата. Например декан може да ръководи само един факултет, както и факултетът може да има само един декан;

Връзка 1:N – на един обект от едната таблица могат да съответстват много обекти от втората, но на всеки от втората съответства само един от първата. Например един преподавател може да води много дисциплини, но всяка дисциплина има само един водещ преподавател;

Връзка M:N – на един обект от първата таблица съответстват много обекти от втората, а на един от втората много, но не задължително същия брой от първата. Например един преподавател обучава много студенти, а един студент е обучаван от много преподаватели.
Понятието област (домейн) означава набора от стойности, който може да приема един атрибут. Например месецът може да има стойности от 1 до 12, а денят от седмицата: понеделник, вторник, сряда, четвъртък, петък, събота, неделя.
При базите данни специалната стойност null е член на всеки домейн, което означава, че в дадената клетка може да няма

записана стойност.
Обикновено базата данни описва една цяла система
(например университет) и тя съдържа една или повече таблици (релации).
Гарантирането на уникалността на отделните редове е необходима, за да можем да разграничим отделните обекти.
Например ако в една и съща специалност, курс и група има двама студенти с еднакви имена, ние трябва да можем да ги различаваме един от друг, за да можем да им пишем различни оценки по отделните предмети. Различаването на обектите, както и връзките между таблиците се правят с така наречените ключови полета или ключове – полета, които могат да се използват за уникално определяне на конкретния обект. Например, за да разграничим уникално един студент от останалите, можем да използваме неговия ЕГН или неговия факултетен номер. В зависимост от структурата и използването различаваме следните видове ключове:



Сподели с приятели:
1   2   3   4   5   6   7   8   9   ...   14




©obuch.info 2024
отнасят до администрацията

    Начална страница