当前位置:首页 » 操作系统 » 数据库多对多建表

数据库多对多建表

发布时间: 2022-11-12 09:05:54

⑴ 饭店点餐数据库订单表需要记录多个食物,应该如何建表,也就是多对多的表

顾客建一个表,食物建一个表,它们是多对多的关系,然后建一个点菜表。这样行不行?

⑵ 数据库表 多对多的关系怎么建啊

A表,a_id,a_name,a_tel三个字段。
B表,b_id,b_address,b_sol三个字段。
关联表,ref_id,a_id,b_id,存储着AB两表的id,
比如:A有
a0001,zhang3,139555533
a0002,li4,1397788888
a0003,wang5,13655566
B有
b0001,shanghai,234
b0002,shenyang,332
b0003,chongqing,123
如果想要AB表多对多的话,只需要将关联表进行增加即可,而AB两表基本数据不变,
比如:
关联表ref_table:
r0001,a0001,b0002
r0002,a0001,b0001
r0003,a0001,b0003
r0004,a0002,b0003
通过联合查询,就可以得到多对多的数据了,而且不破坏基本数据表。

⑶ 求助在sql中多对多怎么建表

首先建立两个表分别对应两个实体然后建立第三张表作为中间表将之前建好的两个表的主键在中间表中做联合主键这样就将两张表的多对多关系联系起来了我举个例子一条微博可能属于多个话题一个话题中也包含多条微博--------------话题表------createtabletopic(topicidintprimarykey,keywordnvarchar2(50)notnull,topictypenvarchar2(50)notnullcheck(topictypein('生活','情感','娱乐','电影','电视','体坛','财经','科技','文化','媒体沙龙')),);-----、微博表——————createtableweibo(weiboidintprimarykey,userIDint,textnvarchar2(140)notnull,);---------、话题微博表createtabletopicWeibo(topicweiboidintprimarykey,weiboidintreferencesweibo(weiboid),topicidintreferencestopic(topicid));

⑷ 数据库表 多对多的关系怎么建啊

A表,a_id,a_name,a_tel三个字段。
B表,b_id,b_address,b_sol三个字段。
关联表,ref_id,a_id,b_id,存储着AB两表的id,
比如:A有
a0001,zhang3,139555533
a0002,li4,1397788888
a0003,wang5,13655566

B有
b0001,shanghai,234
b0002,shenyang,332
b0003,chongqing,123

如果想要AB表多对多的话,只需要将关联表进行增加即可,而AB两表基本数据不变,
比如:
关联表ref_table:
r0001,a0001,b0002
r0002,a0001,b0001
r0003,a0001,b0003
r0004,a0002,b0003
通过联合查询,就可以得到多对多的数据了,而且不破坏基本数据表。

⑸ 请问数据库在创建表的时候如何设计表关系,一对一,一对多,多对多 请高手举例说明。谢谢!!!

多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较多,内容变化的,例如)。
按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者

select * from 主表 where id in (select 主表id from 关系表)

1,角色任命型

特点:关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键,有一个表是字典类型的表。
界面特点:显示主表,用checkbox或多选select设置多选关系。
例如:任命版主(用户表-关系表-版块名称表),角色权限控制等,用户是5个版块版主,只要关系表5行纪录就可以确立,关系表的两个外键具有联合主键性质。
增加关系:如果没有组合纪录,insert之。
删除关系:如果有组合纪录,删除之。

2,集合分组型

特点:同角色任命型类似,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。区别是主副表都不是字典表,可能都很大不固定。
界面特点:显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。
例如:歌曲专集(专集表-关系表-歌曲表)。手机分组(分组表-关系表-手机表)。用户圈子(圈子表-关系表-用户表)。文章标签(文章表-关系表-标签表)
增加关系:同版主任命型。
删除关系:同版主任命型。

3,明细帐型

特点:关系表可以有重复纪录,关系表一般有时间字段,有主键,可能还有文字型的字段用来说明每次发生关系的原因(消费)。
界面特点:显示关系表,用radio或下拉设置单选关系。
例如:现金消费明细帐或订单(用户表-订单表-消费原因表),用户可能多次在同一事情上重复消费。积分变化纪录也属于这类。
增加关系:不管有没有组合纪录,insert之,纪录时间。
删除关系:根据关系表PK删除。

4,评论回复型

特点:同明细帐型关系表一般有时间字段,有主键,区别是重点在文字型的字段用来说明每次发生关系的内容(评论回复)。
界面特点:回复文本框。
例如:论坛回复(用户表-回复表-帖子表),用户可能多次在不同帖子上评论回复费。
增加关系:不管有没有组合纪录,insert之,纪录时间和文字。
删除关系:根据关系表(回复表)PK删除。

5,站内短信型

特点:主副表是同一个,关系表一般有时间字段,有主键,重点在关系表文字型的字段用来说明每次发生关系的内容(消息)或者其他标记位来表示文字已读状态时间等。
界面特点:回复文本框。
例如:站内短信(用户表-短信表-用户表),用户可能给用户群发或者单发,有标记位来表示文字已读状态时间等。
增加关系:不管有没有组合纪录,insert之,纪录时间和文字。
删除关系:根据关系表(回复表)PK删除。

6,用户好友型

特点:主副表是同一个,同集合分组型,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。
界面特点:同集合分组型,显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。
例如:下载站点的文件,(文件表-关系表-文件表)可以被软件工具打开,软件工具本身也是一种文件,可以被下载。用户的好友,也是用户(用户表-好友关系表-用户表)
增加关系:同版主任命型。
删除关系:同版主任命型

⑹ 在SQL中怎么创建一个多对多的表,分析实体,找出关系模式,并定义它们之间的关系

首先建立两个表
分别对应两个实体
然后建立第三张表作为中间表
将之前建好的两个表的主键在中间表中做联合主键
这样就将两张表的多对多关系联系起来了
我举个例子
一条微博可能属于多个话题
一个话题中也包含多条微博
--------------
话题表------
create
table
topic
(
topicid
int
primary
key,
keyword
nvarchar2(50)
not
null,
topictype
nvarchar2(50)
not
null
check(topictype
in
('生活','情感','娱乐','电影','电视','体坛','财经','科技','文化','媒体沙龙')),
);
-----、微博表——————
create
table
weibo(
weiboid
int
primary
key,
userID
int
,
text
nvarchar2(140)not
null,
);
---------、话题微博表
create
table
topicWeibo
(
topicweiboid
int
primary
key,
weiboid
int
references
weibo(weiboid),
topicid
int
references
topic(topicid)
);

⑺ mysql建立外键时,多对多如何建立

一张表中的主键只能有一个,外键可以有多个,如果一张表中多个列都需要被别的表的外键参考,需要使用候选码(非空并且唯一),具体到你的这个问题的需求可以考虑用如下方法解决:

把a表中的bookid和authorid都设置为非空并且唯一,即

create table a(bookid int not null unique, authorid int not null unique);

然后在book表和author表中就可以分别设置外键来参照a表中两个不同的字段了。

  1. 打开我的navicat,然后找到我的teacher表,选中它,然后点击菜单栏上的‘design table'

  2. 2. 在弹出的对话框中找到“Foreign Keys”,然后单机。

  3. 3. 然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思。‘name’:可以不填,你一会保存成功系统会自动生成。FieldName’:就是你要把哪个键设置为外键。这里选择‘dept’,‘Reference DadaBase’:外键关联的数据库。‘Reference Table‘ :关联的表 这里是dept表‘Forgin filed Names’:关联的的字段,这里是code‘ondelete’:就是删除的时候选择的动作。这里我的选择是setNull,意思就是当关联的表删除以后,teacher》dept字段会设置为null.

  4. 4. 设置完成后点击‘save’保存退出,也可以点击‘add Foreign Key’再添加一个外键。


  1. 打开我的navicat,然后找到我的teacher表,选中它,然后点击菜单栏上的‘design table’。如下图:

  2. 2. 在弹出的对话框中找到“Foreign Keys”,然后单机。如下图:

  3. 3. 然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思。‘name’:可以不填,你一会保存成功系统会自动生成。FieldName’:就是你要把哪个键设置为外键。这里选择‘dept’,‘Reference DadaBase’:外键关联的数据库。‘Reference Table‘ :关联的表 这里是dept表‘Forgin filed Names’:关联的的字段,这里是code‘ondelete’:就是删除的时候选择的动作。这里我的选择是setNull,意思就是当关联的表删除以后,teacher》dept字段会设置为null。如图

  4. 4. 设置完成后点击‘save’保存退出,也可以点击‘add Foreign Key’再添加一个外键。k如图:

⑻ 数据库建表问题:两张多对多的表该怎么建!

多对多 的情况下, 需要一个中间关联表


例如下图:

一个用户,可以有多个角色,

一个角色下面,有多个用户。


热点内容
随机启动脚本 发布:2025-07-05 16:10:30 浏览:516
微博数据库设计 发布:2025-07-05 15:30:55 浏览:19
linux485 发布:2025-07-05 14:38:28 浏览:299
php用的软件 发布:2025-07-05 14:06:22 浏览:751
没有权限访问计算机 发布:2025-07-05 13:29:11 浏览:426
javaweb开发教程视频教程 发布:2025-07-05 13:24:41 浏览:689
康师傅控流脚本破解 发布:2025-07-05 13:17:27 浏览:234
java的开发流程 发布:2025-07-05 12:45:11 浏览:681
怎么看内存卡配置 发布:2025-07-05 12:29:19 浏览:278
访问学者英文个人简历 发布:2025-07-05 12:29:17 浏览:828