При разработването на софтуерен проект един от най-важните, основополагащи и присъщи аспекти е правилно структурираната схема на базата данни. Това е еквивалент на това, когато се строи къща, трябва да се гарантира, че основата е правилно положена, в противен случай шансовете за изграждане на качествена къща драстично намаляват.
Изненадващо по-лесно, отколкото човек би си помислил, нека научим различните аспекти, използвани за писане на добре архитирана схема на базата данни.
СЪЗДАВАНЕ НА ТАБЛИЦА Синтаксис
За да започнете, отворете любимата си текстов редактор. Създаването на схема на база данни не изисква нищо повече от обикновен текстов файл. Базата данни се състои от множество таблици, всяка от които се състои от колони, а синтаксисът CREATE TABLE се използва за създаване на една таблица. Ето един основен пример:
СЪЗДАЙТЕ ТАБЛИЦА потребители (
id INT НЕ Е НУЛНО,
is_active TINY INT NOT NULL,
full_name VAR CHAR (100) NOT NULL,
имейл VARCHAR (100) NOT NULL
);
Както можете да видите, това ще създаде таблица на базата данни с име
потребители който се състои от четири колони. Това трябва да бъде доста директен SQL израз, започващ с СЪЗДАЙТЕ МАСА, последвано от името на таблиците на базата данни, след което в скоби колоните на таблицата, разделени със запетая.Използвайте правилни типове колони
Както е показано по-горе, колоните, от които ще се състои таблицата, са разделени със запетаи. Всяка дефиниция на колона се състои от трите същите части:
ТИП COL_NAME [ОПЦИИ]
Името на колоната, последвано от типа на колоната, след това всички незадължителни параметри. Ще влезем в незадължителните параметри по-късно, но съсредоточавайки се върху типа колона, по-долу са изброени най-често използваните налични типове колони:
За всички намерения, горните типове колони са всичко, от което се нуждаете, за да напишете добре изградени схеми на база данни на MySQL.
Определете опциите на колоната
Когато дефинирате колони, има и различни опции, които можете да посочите. По-долу е даден друг пример за СЪЗДАЙТЕ МАСА изявление:
СЪЗДАЙТЕ ТАБЛИЦА потребители (
id INT NOT NULL ОСНОВЕН КЛЮЧ AUTO_INCREMENT,
потребителско име VARCHAR (100) НЕ НУЛНО УНИКАЛНО,
статус ENUM ('активен', 'неактивен') NOT NULL ПО подразбиране 'активен',
баланс ДЕКИМАЛЕН (8,2) НЕ НУЛО ПО подразбиране 0,
дата на раждане DATETIME,
created_at TIMESTAMP НЕ НУЛНО ПО подразбиране CURRENT_TIMESTAMP
);
Горното може да изглежда малко плашещо, но не се притеснявайте, това е съвсем просто. Разбито, ето какво се случва в горното изявление:
- Винаги трябва да използвате NOT NULL във всички възможни колони, за да помогнете за скоростта и производителността на таблицата. Това просто указва, че колоната не може да бъде празна / нула, когато е вмъкнат ред.
- Винаги се опитвайте да поддържате размера на колоната възможно най-малък, тъй като това помага да се подобрят скоростта и производителността.
- The документ за самоличност колона е цяло число, също така е първичният ключ на таблицата, което означава, че е уникален и ще се увеличава с един всеки път, когато се вмъква запис. Това обикновено трябва да се използва във всички таблици, които създавате, за да можете лесно да препращате към всеки отделен ред в таблицата.
- The статус колоната е ENUM и трябва да има стойност „активен“ или „неактивен“. Ако не е посочена стойност, ще започне нов ред със статус „активен“.
- The баланс колона започва от 0 за всеки нов ред и е сума, която е форматирана две две десетични точки.
- The дата на раждане колоната е просто ДАТА, но също така позволява нулева стойност, тъй като датата на раждане може да не е известна при създаването.
- Последно, created_at колоната е TIMESTAMP и по подразбиране е текущото време, когато редът е бил вмъкнат.
Горното е пример за добре структурирана таблица на базата данни и трябва да се използва като пример за напред.
Едно от най-големите предимства на използването на релационни бази данни като mySQL е отличната му поддръжка за ограничения на чужд ключ и каскадно. Това е, когато свързвате две таблици заедно чрез колона, образувайки родителска дъщерна връзка, така че когато родителският ред се изтрие, необходимите дъщерни редове също се изтриват автоматично.
Ето пример:
СЪЗДАЙТЕ ТАБЛИЦА потребители (
id INT NOT NULL ОСНОВЕН КЛЮЧ AUTO_INCREMENT,
потребителско име VARCHAR (100) НЕ НУЛНО УНИКАЛНО,
пълно_име VARCHAR (100) НЕ Е НУЛНО,
created_at TIMESTAMP НЕ НУЛНО ПО подразбиране CURRENT_TIMESTAMP
) двигател = InnoDB;
СЪЗДАЙТЕ ТАБЛИЧНИ поръчки (
id INT NOT NULL ОСНОВЕН КЛЮЧ AUTO_INCREMENT,
userid INT NOT NULL,
ДЕКИМАЛНА сума (8,2) НЕ НУЛА,
product_name VARCHAR (200) NOT NULL,
ВЪНШЕН КЛЮЧ (userid) РЕФЕРЕНЦИИ на потребители (id) НА ИЗТРИВАНЕ НА КАСКАДА
) двигател = InnoDB;
Ще забележите клаузата FOREIGN KEY като последен ред. Този ред просто заявява, че тази таблица съдържа дъщерни редове, които са свързани с userid колона към техния родителски ред, който е документ за самоличност колона на потребители маса. Това означава, че всеки път, когато ред бъде изтрит от потребители таблицата, mySQL автоматично ще изтрие всички съответни редове от поръчки таблица, помагаща да се осигури структурна цялост във вашата база данни.
Също така обърнете внимание на двигател = InnoDB в края на горното твърдение. Въпреки че InnoDB сега е стандартният тип таблица mySQL, това не винаги е било, така че това трябва да се добави само за да останете на сигурно място, тъй като каскадирането работи само с таблици InnoDB.
Дизайн с увереност
Вече сте на път да създадете солидни, добре структурирани схеми на базата данни на MySQL. Използвайки горните знания, вече можете да пишете добре организирани схеми, които осигуряват както производителност, така и структурна цялост.
С вашата схема на място, уверете се, че знаете как да я използвате с тях основни SQL команди.
Научете как да използвате SQL присъединявания, за да рационализирате заявките, да спестите време и да се почувствате като потребител на SQL.
- Неопределено
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!
Още една стъпка…!
Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.