Мой лектор получил схему 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, если они не являются основным/внешним ключом?
Спасибо
почему двигатель установлен в InnoDB
MySQL поддерживает несколько движков (часть БД, которая фактически читает и записывает данные), а InnoDB - это тот, который поддерживает транзакции с базой данных, что весьма полезно в банковском приложении (в отличие от, например, механизма MyISAM, который часто является по умолчанию, если вы явно не указали один).
Каковы ограничения transaction_ibfk_2 и CONSTRAINT account_ibfk_1.
Это просто имена внешних ключей, которые следуют в следующей строке, а не отдельно.
Также слово KEY. Почему элементы называются KEY, если они не являются основным/внешним ключом?
Такой простой KEY будет создавать только индекс, так что поиск в этом столбце в некоторых случаях быстрее. То же самое можно создать с помощью синонима INDEX, что, вероятно, более очевидно. Помимо производительности, это не сильно влияет на ситуацию.
Есть также ПЕРВИЧНЫЙ КЛЮЧ, ИНОСТРАННЫЙ КЛЮЧ И УНИКАЛЬНЫЙ КЛЮЧ; вы, кажется, знаете первые два, и последнее гарантирует, что каждое значение присутствует только в одной строке, что иногда является полезным ограничением. См. Этот вопрос для получения более подробной информации.