* Създаване на база данни

Публикувано на 01 февруари 2009 от Филип Петров. Записано в DB.


Командата за създаване на база данни към системата на управление има следния синтаксис:

    CREATE DATABASE <име на базата данни>;

От примера ни в предишната статия с университет, това може да бъде:

    CREATE DATABASE university;

Повечето системи за управление на бази данни предоставят възможност за допълнителни характеристики за базата данни, като например разположение на файла, максимален размер и т.н. На практика обикновено се използват настройките по подразбиране.

За създаването на таблици се използва следният опростен формат:

    CREATE TABLE <име на таблица>
    (
        <име на колона> <тип данни>,
        <име на колона> <тип данни>,
        ...
        <име на колона> <тип данни>
    );

Например, за да създадем таблица „студенти“, в която запазваме първо, бащино и фамилно име на студент, неговия телефон, адрес и факултетен номер, можем да изпълним следното:

	CREATE TABLE `university`.`students` (
		`firstname` TINYTEXT NOT NULL ,
		`middlename` TINYTEXT NULL ,
		`lastname` TINYTEXT NOT NULL ,
		`phone` VARCHAR( 32 ) NULL ,
		`address` TEXT NULL ,
		`faknum` BIGINT( 12 ) NOT NULL ,
		`id` INT NOT NULL AUTO_INCREMENT ,
		PRIMARY KEY ( `id` )
	) ENGINE = MYISAM ;

Както забелязвате от примера можем да добавяме и допълнителни параметри. В случая указахме, че някои от колоните могат да не приемат стойност (да бъдат NULL), а други не. Освен това указахме, че първичният ключ ще бъде полето id. То от своя страна е „AUTO_INCREMENT“, което значи, че ще се записва автоматично при изпълнение на заявка за попълване на данни и освен това всеки нов ред ще съдържа стойност по-голяма с 1 от предишия запис. ENGINE = MYISAM е специфично за MySQL допълнително условие, което показва, че базата данни ще се запише в MYISAM storage. Всяка MyISAM таблица се разполага на три физически файла:
- .FRM за дефиниция на таблицата;
- .MYD (MYData) за запис на информацията;
- .MYI (MYIndex) за индекси.

MYISAM не поддържа транзакции и затова тенденцията е да бъде заменен с INNODB. С това обаче се отклоняваме съществено от целта на курса.

Що се отнася до FOREIGN KEY (в по-старите версии е валиден само за INNODB), нека разгледаме следният пример от официалната документация:

	CREATE TABLE parent (
		id INT NOT NULL,
		PRIMARY KEY (id)
	) ENGINE=INNODB;

	CREATE TABLE child (
		id INT NOT NULL,
		parent_id INT NULL,
		FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
	) ENGINE=INNODB;

Това е елементарен пример, в който създаваме две таблици, като едната е зависима от другата. В случая таблицата parent e клас, в който се записва единствена стойност „id“ от тип INT. Таблицата child е негов подклас, като съдържа собствено (независимо) поле id и второ поле parent_id – и двете от тип INT.

Чрез реда „FOREIGN KEY (parent_id) REFERENCES parent(id)“ сме указали, че полето parent_id от таблица child ще бъде външен ключ, който сочи към полето id на таблица parent. Записа „ON DELETE CASCADE“ означава, че при изтриване на конкретно „id“ от таблица parent ще бъдат изтрити всички записи от таблица child, чийто външен ключ „сочи“ към него.

Към всяка колона в таблиците можете да добавяте и следните ограничения (CONSTRAINTS):

  • NULL или NOT NULL: указва дали е позволено на клетка от тази колона да не приема данни;
  • UNIQUE: указва дали е възможно да има повторение на данни в колоната. Прилага се винаги върху външен ключ при моделиране на връзки 1:1. Полета, които са дефинирани като PRIMARY KEY са винаги NOT NULL и UNIQUE;
  • DEFAULT: указва стойност по подразбиране (ако при вмъкване на информация не подадем стойност). Например „salary DOUBLE DEFAULT 600″;
  • CHECK: прави проверка на информацията по зададен критерии. Например „salary DOUBLE CHECK (salary > 0)“.

Задача: Създайте таблиците от базата данни в задачата в края на темата Entity Relationship (ER) модел



Trackback URI | RSS за коментарите

Пусни коментар