繁体   English   中英

mysql表创建中的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM