根据提供的文件信息,我们可以归纳出一个简单银行数据库的设计与实现要点。这个数据库主要涉及三个核心表:用户信息表(`userInfo`)、卡片信息表(`cardInfo`)以及交易记录表(`transInfo`)。接下来将详细介绍每个表的结构、约束及功能。
### 一、用户信息表 `userInfo`
**表结构:**
- `customerID INT IDENTITY(1,1)`: 用户ID,自动增长,起始值为1。
- `customerName CHAR(8) NOT NULL`: 客户姓名,不能为空。
- `PID CHAR(18) NOT NULL`: 身份证号,不能为空。
- `telephone CHAR(13) NOT NULL`: 联系电话,不能为空。
- `address VARCHAR(50)`: 地址,可为空。
**约束条件:**
- `PK_customerID PRIMARY KEY (customerID)`: 主键约束,确保`customerID`的唯一性。
- `CK_PID CHECK (LEN(PID) = 18 OR LEN(PID) = 15)`: 检查约束,确保身份证号码长度为15位或18位。
- `UQ_PID UNIQUE (PID)`: 唯一性约束,确保每个身份证号码在表中是唯一的。
- `CK_telephone CHECK (telephone LIKE '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' OR telephone LIKE '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' OR LEN(telephone) = 13)`: 检查约束,确保电话号码格式正确,要么是以四位数字加横线加八位数字的形式,要么是以三位数字加横线加八位数字的形式,或者直接是13位数字。
### 二、卡片信息表 `cardInfo`
**表结构:**
- `cardID CHAR(19) NOT NULL`: 卡号,不能为空。
- `curType CHAR(5) NOT NULL`: 货币类型,默认为“RMB”。
- `savingType CHAR(8) NOT NULL`: 存款类型。
- `openDate DATETIME NOT NULL`: 开卡日期,默认为当前系统时间。
- `openMoney MONEY NOT NULL`: 开户金额,默认为1元。
- `balance MONEY NOT NULL`: 当前余额,默认为1元。
- `pass CHAR(6) NOT NULL`: 密码,6位数字,默认为“68”。
- `IsReportLoss BIT NOT NULL`: 是否挂失,0表示未挂失,1表示已挂失,默认为0。
- `customerID INT NOT NULL`: 用户ID,关联用户信息表。
**约束条件:**
- `PK_cardID PRIMARY KEY (cardID)`: 主键约束,确保`cardID`的唯一性。
- `CK_cardID CHECK (cardID LIKE '10103576[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')`: 检查约束,确保卡号以特定的格式开头。
- `DF_curType DEFAULT ('RMB') FOR curType`: 默认约束,设定货币类型默认为“RMB”。
- `CK_savingType CHECK (savingType IN ('','',''))`: 检查约束,确保存款类型为预设的几种类型之一。
- `DF_openDate DEFAULT (GETDATE()) FOR openDate`: 默认约束,设定开卡日期为当前系统时间。
- `DF_pass DEFAULT ('68') FOR pass`: 默认约束,设定密码默认为“68”。
### 三、交易记录表 `transInfo`
**表结构:**
- `transDate DATETIME NOT NULL`: 交易日期,不能为空。
- `transType CHAR(4) NOT NULL`: 交易类型(如“存入”、“取出”等),不能为空。
- `cardID CHAR(19) NOT NULL`: 卡号,不能为空。
- `transMoney MONEY NOT NULL`: 交易金额,不能为空。
- `remark TEXT`: 备注,可为空。
此表用于记录所有与银行卡相关的交易信息,包括但不限于存款、取款等操作,是银行数据库的重要组成部分。
该简单银行数据库设计覆盖了基本的银行业务需求,包括用户管理、卡片管理以及交易记录等功能。通过合理设置表结构和约束条件,确保了数据的一致性和完整性,为后续的数据查询、统计和分析提供了坚实的基础。