关于MySQL数据库的建议
我的讲师给了我一个mySQL数据库模式来创建一个银行应用程序。有些部分我不明白关于MySQL数据库的建议,mysql,Mysql,我的讲师给了我一个mySQL数据库模式来创建一个银行应用程序。有些部分我不明白 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, addres
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
约束事务_ibfk_2和约束帐户_ibfk_1在做什么
还有单词Key
当元素既不是主键又不是外键时,为什么称为键
谢谢
为什么引擎设置为InnoDB
MySQL支持多个引擎(数据库中实际读取和写入数据的部分),InnoDB支持数据库事务,这在银行应用程序中非常有用(不像MyISAM引擎,如果不明确指定,它通常是默认引擎)
约束事务_ibfk_2和约束帐户_ibfk_1在做什么
它们只是下一行后面的外键的名称,而不是单独的
还有单词KEY。当元素既不是主键又不是外键时,为什么称为键
这样的普通键只会创建一个索引,因此在某些情况下,按该列进行搜索会更快。同样的事情也可以使用同义词索引创建,这可能更明显。除了性能之外,它对事情影响不大
还有主键、外键和唯一键;您似乎知道前两个,而后者确保每个值只出现在一行中,这有时是一个有用的约束。有关更多详细信息,请参阅