[英]Issue in mysql table creation
我需要创建一个名为benificiaries的表,其中有三列
customerid
accountno
bank
条件应该是一个customerid
只能具有一个唯一的accountno
。 但是另一个customerid
可以具有相同的accountno
和相同的唯一性(仅一次)。 所以我不能给accountno
主键。 即使对于customerid
我也不能给出主键,因为一个customerid
可以具有多个具有唯一accountno
记录。
在这种情况下如何创建表? 有任何想法吗?
您可以使用多列唯一索引。
CREATE TABLE YOUR_TABLE (
id INT NOT NULL AUTO_INCREMENT,
customerid INT NOT NULL,
accountno INT NOT NULL,
bank INT NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX name (customerid,accountno)
);
这里的文档。
https://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html
如果一个客户ID只能有1个唯一帐号,那么您如何期望该表中的客户ID重复呢?
您可以简单地将主键设置到另一列,并使customerid唯一。 我想这就是你想要的。 现在,每个客户编号都是唯一的,但是许多客户编号可以具有相同的帐户编号。
CREATE TABLE benificiaries(
id INT PRIMARY KEY,
customerid INT NOT NULL UNIQUE,
accountno INT NOT NULL,
bank INT NOT NULL
);
数据库无法管理数据模型内的所有业务约束。 在这种情况下,您可以使用索引来解决基本约束(customerid的多个列索引,accountno的简单列索引以另一种方式执行搜索),添加自动递增的id并处理代码中的业务约束。
只需将您的customer_id设置为主键,然后考虑只有两个customer_id可以具有相同帐号一次的概念,这取决于您的应用程序或系统的过程。
CREATE TABLE `tmpr_map`.`tbl_example`
(`customer_id` INT(11) NOT NULL AUTO_INCREMENT,
`account_number` VARCHAR NOT NULL , `bank_amount` DECIMAL(11,2) NOT NULL ,
PRIMARY KEY (`customer_id`)) ENGINE = InnoDB;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.