首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于两个不同表的数据库设计

基于两个不同表的数据库设计
EN

Stack Overflow用户
提问于 2015-02-05 23:01:18
回答 1查看 38关注 0票数 0

我是DBMS的初学者。我正在做一个使用MySQL Server5.5在java和数据库上进行实践的结果分析项目。我的问题是,我有一个数据库,其中有两个表cred(uid,pass) Click here for cred image和ht_no(year,subcod,sub,regsup,inter,exter,tot,credit) Click here for ht_no image,其中HT_no是大厅门票编号。学生的身份。

这两个表没有任何关系和关联。是否可以为上表创建数据库设计。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-02-08 00:50:02

数据库中的关联表

一对一关系

在一对一关系中,表A中的每一行都与表B中的一行相关联。在这种情况下,每个表的PRIMARY KEY应该1)唯一地标识行的主题,以及2)隐式地关联这两个表。例如:

代码语言:javascript
复制
Table A
customer_id | name | address | phone

Table B
customer_id | loyalty_card_number | balance

但是,如果您发现您的表共享一对一关系,那么您可能做错了:在大多数情况下,简单地将这两个表合并为一个表将是有益的,从而减少数据库引擎的性能开销。

一对多关系

在一对多关系中,表A中的每一行都可以与表B中的多行相关联。然而,表B中的每一行都应该与表A中的且只有一行相关联。在这种情况下,表A的PRIMARY KEY应该作为表B中的附加列来关联这两个表。例如:

代码语言:javascript
复制
Table A 
customer_id | name | address | phone

Table B
credit_card_number | card_provider | customer_id

这允许每个客户与多个信用卡相关联,但每个信用卡将属于且仅属于一个客户。

多对多关系

在多对多关系中,表A中的每一行可以与表B中的0、1或更多行相关联,反之亦然。也就是说,表B中的每一行也可以与表A中的0、1或更多行相关。对于多对多关系,需要称为映射表的第三个表来关联这两个表。例如:

代码语言:javascript
复制
Table A
customer_id | name | address | phone

Table B
product_id | name | price

Table C
customer_id | product_id

在这里,每个客户可能购买了0、1或多个产品;同样,每个产品可能被0、1或多个客户购买。处理此问题的最有效方法是使用表C来映射每个关系,使用每个客户和每个产品的PRIMARY KEY将两者关联起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28347230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档