Разработка web-приложения для универа. Создание базы данных
В одной из прошлых статьей мы "разработали" схему базы данных. Напоминаю.
Тут не указаны связи. Но мы указали их в запросах при создании БД. Вот команды:
CREATE TABLE fakultet (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB CHARACTER SET=UTF8;
CREATE TABLE courpuses (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB CHARACTER SET=UTF8;
CREATE TABLE kafedra (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(50) NOT NULL,
fakultet_id INT NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY (fakultet_id) REFERENCES fakultet(id)
) ENGINE=InnoDB CHARACTER SET=UTF8;
CREATE TABLE teachers (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(50) NOT NULL,
fname VARCHAR(50) NOT NULL,
kafedra_id INT NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY (kafedra_id) REFERENCES kafedra(id)
) ENGINE=InnoDB CHARACTER SET=UTF8;
CREATE TABLE groups (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(50) NOT NULL,
kafedra_id INT(11),
PRIMARY KEY(id),
FOREIGN KEY (kafedra_id) REFERENCES kafedra(id)
) ENGINE=InnoDB CHARACTER SET=UTF8;
CREATE TABLE cabinets (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(50) NOT NULL,
courpuses_id INT(11),
PRIMARY KEY(id),
FOREIGN KEY (courpuses_id) REFERENCES courpuses(id)
) ENGINE=InnoDB CHARACTER SET=UTF8;
CREATE TABLE lists (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(50) NOT NULL,
time INT(1) NOT NULL,
teacher_id INT(11),
cabinets_id INT(11),
group_id INT(11),
PRIMARY KEY(id),
FOREIGN KEY (cabinets_id) REFERENCES cabinets(id)
) ENGINE=InnoDB CHARACTER SET=UTF8;
С одной стороны их достаточно много, но с другой, думаю не очень. Есть понимание, что часть таблиц ещё будут изменены или дополнены новыми столбцами/индексами.
Но разберем, что есть.
Первым делом создаются таблицы, которые не будут ссылаться на другие таблицы, что естественно.
Затем, для таблиц со связями указываем внешний ключ.
FOREIGN KEY (fakultet_id) REFERENCES fakultet(id)
Сначала идет ключевая фраза FOREIGN KEY
. Далее в скобках укажем поле таблицы КОТОРОЕ будет ссылаться на поле другой таблицы (у нас это fakultet_id
) далее снова ключевое слово REFERENCES
после которого опишем таблицу и поле НА КОТОРОЕ будем ссылаться. Эта запись чем-то напоминает вызов функции.
Я эти команды выполнял в консоли. Советую вам убедиться всё ли "встало" как надо.
show tables
Этой командой можно посмотреть таблицы в базе.
describe `table`
Команда позволит посмотреть структуру таблицы.
Листинг кода - можно запустить его в phpMyAdmin
Материал подготовлен автором @zheev