数据库设计有两个不同的表

时间:2015-02-05 15:01:18

标签: mysql database-design

我是DBMS的初学者。我正在开发一个关于使用MySQL Server 5.5进行java和数据库练习的结果分析项目。我的问题是我有一个数据库有两个表cred(uid,pass)Click here for cred image和ht_no(年,子,sub,regsup,inter,exter,tot,credit)Click here for ht_no image,其中HT_no是大厅门票号码。

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

关联数据库中的表

一对一关系

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

Table A
customer_id | name | address | phone

Table B
customer_id | loyalty_card_number | balance

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

一对多关系

在一对多关系中,表A中的每一行都可以与表B中的许多行相关联。但是,表B中的每一行都应该与表A中的一行相关联。在这种情况下,表A的PRIMARY KEY应作为表B中的附加列包含在内,以关联两个表。例如:

Table A 
customer_id | name | address | phone

Table B
credit_card_number | card_provider | customer_id

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

多对多关系

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

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为每个客户和每个产品关联两者。