赞
踩
将已建好的概念模型,变成MySQL物理实现。
1.数据库设计的阶段和每阶段的任务; 2.概念模型; 3.逻辑模型及其与概念模型的关系; 4.在DBMS中的物理实现。
数据库的设计大致分为以下几个阶段: 需求分析 根据业务需求,确定应用系统所涉及的数据(信息),以及处理需 求,形成数据字典,包括数据结、数据结构、数据流、数据存储、数据处理过程等文档 概念结构设计 主要工作是对数据建模,对关系数据库应用系统而言,主要是用ER图描述数据及数据间的关系(当然,也有人使用UML类图)。ER图有两种表达方式,一种是陈氏ER图,最早由出生于台湾省高雄市的陈品山(Peter Chen,路易斯安那州立大学教授)提出,教科书主要讲授这种E-R图。图1用陈氏ER图表达了教科书中常用的学生选课系统的概念模型:
图1 学生选修课程
陈氏ER图很占空间,当系统中的实体和属性较多时,从每个代表实体的矩形扩散开去的椭圆形(代表属性)会使整个模型显得混乱、拥挤。于是有了后来的Crow's foot(乌鸦脚)式的E-R图。图2用Crow's foot ER图表达了学生与院系的关示。
图2 Crow's foot ER图
图2反映了院系与学生的一对多联系,两个实体的属性就列在各自实体名的下方。用一条两端带有标记的线连接两个实体,表达二者间的联系,联系名就写在线中间,就样很节省空间。请注意一对多联系多端的形状,很像乌鸦的脚,遂得名Crow's foot(尽管多数鸟类的脚都是这幅模样)。
逻辑结构设计 最主要的工作就是把ER图转换成关系模式。概念结构到逻辑结构 的转变是有成规的,它跟两个实体间的联系相关,教材已经讲得够多了。Crow's foot式的ER图,有一个好处是,在原图上稍加改动(比如把1端的主码直接添加到多端),就可以变成逻辑结构,再添上主码,外码,索引,并指明每个列在某个DBMS上的类型,很快就能变成物理模型,方便计算机自动创建数据库对象。图3就已经给出了每次个属性的数据类型,定义了外码。
图3 接近物理模式的Crow's foot模型
物理结构设计 物理结构设计的主要工作,是在逻辑结构的基础上,确定存储结构和存取方法,将所有的数据类型针对具体的DBMS确定化等。
实施与运维 在选定的DBMS上,创建数据对象,初始化数据,试运行,在不断调试过程中完善系统,并持续改进与维护。
大多数建模工具,如ERWIN, Navicat, Microsoft Visio, Draw.IO, MySQL Workbench等,都支持Crows' foot。Visio和draw.io还支持Chen's ER图。在上述工具中,只有Draw.IO和MySQL Workbench是免费的。ERWIN,Navicat和MySQL Workbench还支持reverse engineering,即逆向工程,根据已建好的数据库,逆向导出模型,不过通常是物理模型。Navicat支持继续逆向到逻辑模型和概念模型。基本上,在逆向工程的基础上,替换掉DMBS的具体数据类型,如把varchar(50)改成string,就是一个逻辑模型,将逻辑模型中所有的外码列去掉,就成了概念模型,概念模型可以不标注数据类型。但在生产环境中,多用软件表达模型,实际从概念模型开始就已开始标注通用的数据类型如:string,integer,float,datetime,boolean等。
本关的任务,是根据一个已建好的逻辑模型,完成MySQL的实现。逻辑ER图如图3所示。
图3 机票订票系统概念模型ER图
说明:这个图是用draw.io画的,在浏览器地址栏输入draw.io即可调出,不用安装任何软件。
这是一个机票订票系统,系统需要考虑以下实体: 1.用户(user) 用户分两类,普通用户可以订票,管理用户有权限维护和管理整个系统的运营。为简单起见,两类用户合并,用admin_tag标记区分。用户的属性(包括业务约束)有: 用户编号: user_id int 主码,自动增加 名字: firstname varchar(50) 不可为空 姓氏: lastname varchar(50) 不可为空 生日: dob date 不可为空 性别: sex char(1) 不可为空 邮箱: email varchar(50) 联系电话: phone varchar(30) 用户名: username varchar(20) 不可空,不可有重 密码: password char(32) 不可空 管理员标志: admin_tag tinyint 缺省值0(非管理员),不能空
2. 旅客(passenger) 用户登录系统不一定是替自己买票,所以用户和旅客信息是分开存储的。属性有: 旅客编号: passenger_id int 自增,主码 证件号码: id char(18) 不可空 不可重 名字:firstname varchar(50) 不可空 姓氏: lastname varchar(50) 不可空 邮箱:mail varchar(50) 电话: phone varchar(20) 不可空 性别: sex char(1) 不可空 生日: dob date
3.机场(airport) 有以下属性: 编号: airport_id int 自增,主码 国际民航组织编码:iata char(3) 不可空,全球唯一 国际航运协会编码: icao char(4) 不可空,全球唯一 机场名称: name varchar(50) 不可空,普通索引 所在城市: city varchar(50) 所在国家: country varchar(50) 纬度: latitude decimal(11,8) 经度: longitude decimal(11,8) 全球每个机场都有唯一IATA编码和ICAO编码,IATA为3个字符,ICAO为4个字符。例如首都机场的(IATA,ICAO)分别为(PEK,ZBAA),大兴机场为(PKX,ZBAD),天河机机场为(WUH,ZHHH)。在飞机登记牌上出发地和到达地均用IATA表示。为能在地图上显示机场位置,需要记录经纬度信息。
4.航空公司(airline) 有以下属性: 编号:airline_id int 自增,主码 名称:name varchar(30) 不可空 国际民航组织编码: iata char(2) 不可空,具全球唯一性 航空公司的IATA编码为2位,如东航为MU,国航为CA,南航为CZ等,航班号一般以所属航空公司的IATA码为前缀。
5.民航飞机(airplane) 有属性: 编号:airplane_id int 自增,主码 机型:type varchar(50) 不可空,如B737-300,A320-500等 座位: capacity smallint 不可空 标识: identifier varchar(50) 不可空
6.航班常规调度表(flightschedule) 舤班一般以周次安排,例如:每周两个班次,周一和周五。 有属性: 航班号: flight_no char(8) 主码 起飞时间: departure time 非空 到达时间: arrival time 非空 飞行时长: duration smalint 非空 周一:monday tinyint 缺省0 周二:tuesday tinyint 缺省0 周三:wednesday tinyint 缺省0 周四:thursday tinyint 缺省0 周五:friday tinyint 缺省0 周六:saturday tinyint 缺省0 周日:sunday tinyint 缺省0 飞行时长一般以分种计。
7.航班表(flight) 航班依航班常规调度表为基准安排。但调度表不是一成不变,也不是每个既定的航都实际起飞,也不总是按既定的时间起飞,所以实飞航班必须单独安排并记录。 要记录的信息有: 飞行编号:flight_id int 自增,主码 起飞时间: departure datetime 非空 到达时间: arrival datetime 非空 飞行时长:duration smallint 非空 有的系统还会实时显示航班经纬度和高度位置,这里我们作了简化,去掉了实时飞行信息。
8.机票(ticket) 用户可替自己或其亲友购买某个航班的机票。机票的属性有: 票号:ticket_id int 自增,主码 坐位号:seat char(4) 价格:price decimal(10,2) 不能空
9.实体间的联系 实体间的联系都清楚地标注在ER图中:
请根据上述信息和所给ER图,给出在MySQL实现flight_booking的语句,包括建库,建表,创建主码,外码,索引,指定缺省,不能为空等约束。所有索引采用BTREE。所有约束的名字不作要求。所有的外码与主码同名。但有两处例外: 计划航班和飞行航班都涉及出发机场和到达机场,外码与主码同名会导致同一表有两个同名列。故这两处外码例外处理:出发机场命名为from,到达机场命名为to。
注意:所有的表名字和列名,都没有大写字母。列名存在与关键字同名的情形,请妥善处理。你有可能不能一次通过评测,请考虑你的代码要反复修改再运行的情形。
- # 请将你实现flight_booking数据库的语句写在下方:
-
- drop database if exists flight_booking;
- create database flight_booking;
- use flight_booking;
-
- SET NAMES utf8mb4;
- SET FOREIGN_KEY_CHECKS = 0;
-
- DROP TABLE IF EXISTS airline ; CREATE TABLE airline ( airline_id int NOT NULL AUTO_INCREMENT, name varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, iata char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, airport_id int NOT NULL, PRIMARY KEY ( airline_id ) USING BTREE, UNIQUE INDEX iata_unq ( iata ) USING BTREE, INDEX base_airport_idx ( airport_id ) USING BTREE, CONSTRAINT airline_ibfk_1 FOREIGN KEY ( airport_id ) REFERENCES airport ( airport_id ) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
-
- DROP TABLE IF EXISTS airplane ; CREATE TABLE airplane ( airplane_id int(0) NOT NULL AUTO_INCREMENT, type varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, capacity smallint(0) NOT NULL, identifier varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, airline_id int(0) NOT NULL,
- PRIMARY KEY ( airplane_id ) USING BTREE, INDEX airplane_ibfk_1 ( airline_id ) USING BTREE, CONSTRAINT airplane_ibfk_1 FOREIGN KEY ( airline_id ) REFERENCES airline ( airline_id ) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
-
-
-
- DROP TABLE IF EXISTS airport ; CREATE TABLE airport ( airport_id int NOT NULL AUTO_INCREMENT, iata char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, icao char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, name varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, city varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, country varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, latitude decimal(11, 8) NULL DEFAULT NULL, longitude decimal(11, 8) NULL DEFAULT NULL, PRIMARY KEY ( airport_id ) USING BTREE, UNIQUE INDEX iata_unq ( iata ) USING BTREE, UNIQUE INDEX icao_unq ( icao ) USING BTREE, INDEX name_idx ( name ) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
-
-
- DROP TABLE IF EXISTS passenger ; CREATE TABLE passenger ( passenger_id int NOT NULL AUTO_INCREMENT, id char(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, firstname varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, lastname varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, mail varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, phone varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, sex char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, dob date NULL DEFAULT NULL, PRIMARY KEY ( passenger_id ) USING BTREE, UNIQUE INDEX id_unq ( id ) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
-
-
- DROP TABLE IF EXISTS ticket ; CREATE TABLE ticket ( ticket_id int NOT NULL AUTO_INCREMENT, flight_id int NOT NULL, seat char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, passenger_id int NOT NULL, price decimal(10, 2) NOT NULL, user_id int NOT NULL, PRIMARY KEY ( ticket_id ) USING BTREE, INDEX flight_idx ( flight_id ) USING BTREE, INDEX passenger_idx ( passenger_id ) USING BTREE, INDEX ticket_ibfk_3 ( user_id ) USING BTREE, CONSTRAINT ticket_ibfk_1 FOREIGN KEY ( flight_id ) REFERENCES flight ( flight_id ) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT ticket_ibfk_2 FOREIGN KEY ( passenger_id ) REFERENCES passenger ( passenger_id ) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT ticket_ibfk_3 FOREIGN KEY ( user_id ) REFERENCES user ( user_id ) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
-
-
-
- DROP TABLE IF EXISTS user ; CREATE TABLE user ( user_id int NOT NULL AUTO_INCREMENT, firstname varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, lastname varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, dob date NOT NULL, sex char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, email varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
- phone varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, username varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, password char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, admin_tag tinyint NOT NULL DEFAULT 0, PRIMARY KEY ( user_id ) USING BTREE, UNIQUE INDEX user_unq ( username ) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
-
-
- DROP TABLE IF EXISTS flightschedule ; CREATE TABLE flightschedule ( flight_no char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `from` int NOT NULL, `to` int NOT NULL, departure time NOT NULL, arrival time NOT NULL, duration smallint NOT NULL,
- airline_id int NOT NULL, monday tinyint NULL DEFAULT 0,
- tuesday tinyint NULL DEFAULT 0,
- wednesday tinyint NULL DEFAULT 0,
- thursday tinyint NULL DEFAULT 0, friday tinyint NULL DEFAULT 0, saturday tinyint NULL DEFAULT 0, sunday tinyint NULL DEFAULT 0,
- PRIMARY KEY ( flight_no ) USING BTREE,
- INDEX from_idx ( `from` ) USING BTREE,
- INDEX to_idx ( `to` ) USING BTREE,
- INDEX airline_idx ( airline_id ) USING BTREE,
- CONSTRAINT flightschedule_ibfk_1 FOREIGN KEY ( `from` ) REFERENCES airport ( airport_id ) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT flightschedule_ibfk_2 FOREIGN KEY ( `to` ) REFERENCES airport ( airport_id ) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT flightschedule_ibfk_3 FOREIGN KEY ( airline_id ) REFERENCES airline ( airline_id ) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
-
- DROP TABLE IF EXISTS flight ; CREATE TABLE flight ( flight_id int NOT NULL AUTO_INCREMENT, flight_no char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `from` int NOT NULL, `to` int NOT NULL,
- departure datetime NOT NULL, arrival datetime NOT NULL, duration smallint NOT NULL, airline_id int NOT NULL, airplane_id int NOT NULL,
- PRIMARY KEY ( flight_id ) USING BTREE,
- INDEX from_idx ( `from` ) USING BTREE,
- INDEX to_idx ( `to` ) USING BTREE,
- -- INDEX departure_idx ( departure ) USING BTREE,
- -- INDEX arrivals_idx ( arrival ) USING BTREE,
- INDEX airline_idx ( airline_id ) USING BTREE,
- INDEX airplane_idx ( airplane_id ) USING BTREE,
- INDEX flightno ( flight_no ) USING BTREE,
- CONSTRAINT flight_ibfk_1 FOREIGN KEY ( `from` ) REFERENCES airport ( airport_id ) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT flight_ibfk_2 FOREIGN KEY ( `to` ) REFERENCES airport ( airport_id ) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT flight_ibfk_3 FOREIGN KEY ( airline_id ) REFERENCES airline ( airline_id ) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT flight_ibfk_4 FOREIGN KEY ( airplane_id ) REFERENCES airplane ( airplane_id ) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT flight_ibfk_5 FOREIGN KEY ( flight_no ) REFERENCES flightschedule ( flight_no ) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
-
-
-
- SET FOREIGN_KEY_CHECKS = 1;

设计一个影院管理系统。影院对当前的放映厅和电影进行排片,顾客到来后,可以购买任一排场的电影票,进入对应放映厅观看。系统中有以下实体集:
如果用建模工具建模,请将模型另存为图片,如果手工画图,请拍照,请在图片上签名,或加上电子签名。图片文件请命名为ersolution.jpg。并将图片文件上传至网上(比如你的github或gitee上的开源项目中,或任何可以直接访问到的地方)。将访问该图片的URL填写在右侧编辑器的第2行,URL应直接定位到该图片(而不是在某个网页里能找到该图片),即点击URL即直接打开图片。
然后,在文件编辑器里写出关系模式。 关系模式的表达格式参考: 学生(学号,姓名,性别,出生日期,院系id),主码:(学号); 外码:(院系id) 不要使用纯中文符号。
- 请给出ER图文件存放的URL:
- https://free.wzznft.com/i/2023/05/18/ersolution.jpg
- 以下给出关系模式:
-
- 电影(movie)(movie_ID, title, type, runtime, release_date, director, starring), 主码:(movie_ID)
-
- 顾客(customer)(c_ID, name, phone), 主码:(c_ID)
-
- 放映厅(hall)(hall_ID, mode, capacity, location), 主码:(hall_ID)
-
- 排场(schedule)(schedule_ID, date, time, price, number, hall_ID, movie_ID), 主码:(schedule_ID),外码:(hall_ID) 参照放映厅(hall),(movie_ID) 参照电影(movie)
-
- 电影票(ticket)(ticket_ID, seat_num, c_ID, schedule_ID), 主码:(ticket_ID),外码:(c_ID) 参照顾客(customer),(schedule_ID) 参照排场(schedule)
前往 DB2022Spring: HUST 数据库系统原理实验 2022年春季 下载实训所需要的资料包,或者仅下载本文件: https://gitee.com/kylin8575543/db2022-spring/raw/master/rbac.mwb
这是一个已经建好的模型文件rbac.mwb,请利用MySQL Workbench建模模块中的Forward engineering功能,自动导出SQL脚本。
线下处理完毕后,请把脚本粘贴到代码文件中。
- # 请将利用MySQL Workbench软件的Modeling工具,经forward engineering 导出的创建schema的SQL语句完整粘到此处:
-
- SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
- SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
- SET @OLD_SQL_MODE=@@SQL_MODE,
- SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-
- CREATE SCHEMA IF NOT EXISTS rbac DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ;
- USE rbac ;
-
-
- CREATE TABLE IF NOT EXISTS rbac . aprole (
- RoleNo INT NOT NULL COMMENT '角色编号',
- RoleName CHAR(20) NOT NULL COMMENT '角色名',
- Comment VARCHAR(50) NULL DEFAULT NULL COMMENT '角色描述',
- Status SMALLINT NULL DEFAULT NULL COMMENT '角色状态',
- PRIMARY KEY ( RoleNo ))
- ENGINE = InnoDB
- DEFAULT CHARACTER SET = utf8mb4
- COLLATE = utf8mb4_0900_ai_ci
- COMMENT = '角色表';
-
- CREATE TABLE IF NOT EXISTS rbac . apuser(
- UserID CHAR(8) NOT NULL COMMENT '用户工号',
- UserName CHAR(8) NULL DEFAULT NULL COMMENT '用户姓名',
- Comment VARCHAR(50) NULL DEFAULT NULL COMMENT '用户描述',
- PassWord CHAR(32) NULL DEFAULT NULL COMMENT '口令',
- Status SMALLINT NULL DEFAULT NULL COMMENT '状态',
- PRIMARY KEY ( UserID ),
- UNIQUE INDEX ind_username ( UserName ASC) VISIBLE)
- ENGINE = InnoDB
- DEFAULT CHARACTER SET = utf8mb4
- COLLATE = utf8mb4_0900_ai_ci
- COMMENT = '用户表';
-
- CREATE TABLE IF NOT EXISTS rbac . apgroup (
- UserID CHAR(8) NOT NULL COMMENT '用户编号',
- RoleNo INT NOT NULL COMMENT '角色编号',
- PRIMARY KEY ( UserID , RoleNo ),
- INDEX FK_apGroup_apRole ( RoleNo ASC) VISIBLE,
- CONSTRAINT FK_apGroup_apRole FOREIGN KEY ( RoleNo ) REFERENCES rbac . aprole ( RoleNo ),
- CONSTRAINT FK_apGroup_apUser FOREIGN KEY ( UserID ) REFERENCES rbac . apuser ( UserID ))
- ENGINE = InnoDB
- DEFAULT CHARACTER SET = utf8mb4
- COLLATE = utf8mb4_0900_ai_ci
- COMMENT = '角色分配表';
-
- CREATE TABLE IF NOT EXISTS rbac . apmodule (
- ModNo BIGINT NOT NULL COMMENT '模块编号',
- ModID CHAR(10) NULL DEFAULT NULL COMMENT '系统或模块的代码',
- ModName CHAR(20) NULL DEFAULT NULL COMMENT '系统或模块的名称', PRIMARY KEY ( ModNo ))
- ENGINE = InnoDB
- DEFAULT CHARACTER SET = utf8mb4
- COLLATE = utf8mb4_0900_ai_ci
- COMMENT = '功能模块登记表';
-
- CREATE TABLE IF NOT EXISTS rbac . apright (
- RoleNo INT NOT NULL COMMENT '角色编号',
- ModNo BIGINT NOT NULL COMMENT '模块编号',
- PRIMARY KEY ( RoleNo , ModNo ),
- INDEX FK_apRight_apModule ( ModNo ASC) VISIBLE,
- CONSTRAINT FK_apRight_apModule
- FOREIGN KEY ( ModNo )
- REFERENCES rbac . apmodule ( ModNo ),
- CONSTRAINT FK_apRight_apRole
- FOREIGN KEY ( RoleNo )
- REFERENCES rbac . aprole ( RoleNo ))
- ENGINE = InnoDB
- DEFAULT CHARACTER SET = utf8mb4
- COLLATE = utf8mb4_0900_ai_ci
- COMMENT = '角色权限表';
-
- SET SQL_MODE=@OLD_SQL_MODE;
- SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
- SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-
-
-
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。