資料表多對多

2022-02-22 22:57:57 字數 2581 閱讀 4718

今天學習了資料表多對多,由於有圖理解起來也輕鬆了很多,

使用聯合主鍵進行多對多表的關係的管理(中間表)

create database auth character set utf8;

/*使用者表*/

create table users(

id varchar(32) primary key,

name varchar(30),

pwd varchar(32)

);/*建立角色表*/

create table roles(

id varchar(32) primary key,

name varchar(30),

des varchar(100)

);/*通過乙個中間表對映多對多的關係,多對多就是多個一對多

聯合主鍵的特點是:兩個列不能同時重複

*/create table roleuser(

uid varchar(32),

rid varchar(32),

constraint ru_pk primary key(uid,rid),

constraint ru_fk1 foreign key(uid) references users(id),

constraint ru_fk2 foreign key(rid) references roles(id)

);/*建立選單表*/

create table menus(

id varchar(32) primary key,

name varchar(50),

url varchar(100)

);/*關聯角色到選單*/

e-r圖 (entry-relationship 實體關係圖)

寫入表中幾行資料進行基本分析

insert into users values('u001','jack','1234');

insert into users values('u002','張三','4321');

insert into users values('u003','tom','1111');

insert into roles values('r001','管理員','');

insert into roles values('r002','教師','');

insert into roleuser values('u001','r001');

insert into roleuser values('u002','r002');

insert into menus values('m001','系統管理','/sys.jsp');

insert into menus values('m002','使用者管理','/user.jsp');

insert into menus values('m003','角色管理','/role.jsp');

insert into rolemenu values('m001','r001');

insert into rolemenu values('m002','r001');

insert into rolemenu values('m003','r001');

insert into rolemenu values('m003','r002');

進行查詢

/*查詢某個人擁有某個角色*/

select u.name,r.name

from users u inner join roleuser ru on u.id=ru.uid

inner join roles r on ru.rid=r.id;

/*某角色擁有某選單*/

select r.name,m.name

from roles r inner join rolemenu rm on r.id=rm.rid

inner join menus m on rm.mid=m.id;

/*查詢某人擁有某個選單*/

select m.*

from users u inner join roleuser ru on u.id=ru.uid

inner join roles r on ru.rid=r.id

inner join rolemenu rm on r.id=rm.rid

inner join menus m on rm.mid=m.id;

資料表與簡單java類(多對多)

定義乙個學生選課的操作表 三張表 學生表 編號,姓名,年齡 課程表 課程編號,課程名稱,學分 學生 課程關聯表 學生編號,課程編號,成績。要求可以輸出如下資訊 1 可以找到一門課程參加此課程的所有資訊以及成績 2 根據乙個學生,找到所參加的所有課程和每門課程的成績 第一步 定義出基本類,暫不考慮所有...

資料表與簡單Java類(多對多)

定義乙個學生選課的操作表 三張資料表 要求 可以實現如下的資訊輸出 定義出基本類,暫時不考慮所有的關係class student public student int stuid,string name,int age public string getinfo class course publi...

在MySQL資料庫建立多對多的資料表關係

一 問題 在業務中遇到這樣的情況 我有兩張無關表student和course。student表中的字段是 stu id 和stu name。如圖 course表中的字段是cour id和cour name。如圖 我想要查詢某個同學選了哪些課和某門課被哪些同學選了。這是資料庫中典型的多對多的問題,二 ...