Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Разработка 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

17
162.374 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые