Советы по базе данных MySQL

0

Мой лектор получил схему mySQL Database для создания банковского приложения. Есть некоторые части, которые я не понимаю.

CREATE SCHEMA Banking;


/* Customer Table */

DROP TABLE IF EXISTS Banking.Customer;

CREATE TABLE Banking.Customer(
    custId  int(11)     AUTO_INCREMENT,
    name        varchar(50)     NOT NULL,
    address     varchar(300) NOT NULL,
    email       varchar(100) NOT NULL,
    phone       int(11) DEFAULT NULL,
    PRIMARY KEY (custId)
)   ENGINE=InnoDB AUTO_INCREMENT=210590 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS Banking.Account;

CREATE TABLE Banking.Account (
    accountNo int(11) NOT NULL AUTO_INCREMENT,
    cId       int(11) NOT NULL,
    balance   int(11) NOT NULL,
    sortCode  int(11) NOT NULL,
    PRIMARY KEY (accountNo),
    KEY cId (cId),
    KEY sortCode (sortCode),
    CONSTRAINT account_ibfk_1 
    FOREIGN KEY (cid) REFERENCES Banking.CUSTOMER(custId)
)   ENGINE=InnoDB AUTO_INCREMENT=816410 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS Banking.Transaction;

CREATE TABLE Banking.Transaction (
  _id           int(11)         NOT NULL AUTO_INCREMENT,
  accountNo     int(11)         NOT NULL,
  amount        int(11)         NOT NULL,
  postBalance   int(11)         NOT NULL,
  type          varchar(255)    DEFAULT NULL,
  PRIMARY KEY   (_id),
  KEY accountNo (accountNo),
  CONSTRAINT transaction_ibfk_2 
  FOREIGN KEY (accountNo) REFERENCES Account (accountNo)
) ENGINE=InnoDB AUTO_INCREMENT=229377 DEFAULT CHARSET=utf8;

Мои ВОПРОСЫ - почему двигатель установлен в InnoDB

Каковы ограничения transaction_ibfk_2 и CONSTRAINT account_ibfk_1.

Также клавиша WORD.

Почему элементы называются KEY, если они не являются основным/внешним ключом?

Спасибо

Теги:

1 ответ

1
Лучший ответ

почему двигатель установлен в InnoDB

MySQL поддерживает несколько движков (часть БД, которая фактически читает и записывает данные), а InnoDB - это тот, который поддерживает транзакции с базой данных, что весьма полезно в банковском приложении (в отличие от, например, механизма MyISAM, который часто является по умолчанию, если вы явно не указали один).

Каковы ограничения transaction_ibfk_2 и CONSTRAINT account_ibfk_1.

Это просто имена внешних ключей, которые следуют в следующей строке, а не отдельно.

Также слово KEY. Почему элементы называются KEY, если они не являются основным/внешним ключом?

Такой простой KEY будет создавать только индекс, так что поиск в этом столбце в некоторых случаях быстрее. То же самое можно создать с помощью синонима INDEX, что, вероятно, более очевидно. Помимо производительности, это не сильно влияет на ситуацию.

Есть также ПЕРВИЧНЫЙ КЛЮЧ, ИНОСТРАННЫЙ КЛЮЧ И УНИКАЛЬНЫЙ КЛЮЧ; вы, кажется, знаете первые два, и последнее гарантирует, что каждое значение присутствует только в одной строке, что иногда является полезным ограничением. См. Этот вопрос для получения более подробной информации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню