Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于MySQL数据库的建议_Mysql - Fatal编程技术网

关于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

我的讲师给了我一个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,
    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。当元素既不是主键又不是外键时,为什么称为键

这样的普通键只会创建一个索引,因此在某些情况下,按该列进行搜索会更快。同样的事情也可以使用同义词索引创建,这可能更明显。除了性能之外,它对事情影响不大

还有主键、外键和唯一键;您似乎知道前两个,而后者确保每个值只出现在一行中,这有时是一个有用的约束。有关更多详细信息,请参阅