关于mysql表关联的问题!
这样的表结构下,我要用中间表将用户表和其他所有表进行关联,那么我要写一张中间表关联所有的表呢?还是每关联一个表写一个中间表!
麻烦请给个正确的表结构的处理! 展开
2014-06-09
是两两关联还是一表关联所有表,这不是凭空乱猜的。楼主连最基本的概念都没弄清楚,首先,你问问自己为什么需要这些表?如果这些表是凭着感觉构建出来的,那么结局注定是乱,甚至是出错更进一步的话可能出现灾难。
正确的做法是:
进行需求分析;
对分析结果画数据流图;
根据数据流图各部分构造出一个个子E-R图;
将各个子E-R图合并成全局E-R图。这个全局E-R图就是构造数据库的基石。
这个全局E-R图是业务模型的抽象,对这个图建表有以下四种情况:
1.给其上的每个实体建一张表;
2.实体与实体之间的联系,如果是一对一(很少会这样做)的,则将该联系的属性并入随便哪头的实体表;
3.如果联系是1对多的,则可以给该联系单独建表,也可以将其属性并入多的这一头。如果是单独建表,则可取多的这头表的主键为其主键,也可单独开主键,并引入多的这头主键为其外键;
4.如果联系是多对多的,则必须单独建表(这就是你上面提到的中间表),这个表最好自己开辟主键,且必须把两头实体的主键拿来当外键,以建立他们之间的联系。
回到你的问题,你给了这些表,我们并不清楚你的具体业务是什么,并不清楚你已建的这些表是否合理,也不清楚这些表在业务上的相互关系,所以外人难以给你建中间表。建议楼主先学习掌握数据库原理,然后自行分析并勾勒出E-R图,接着建表是一目了然的事了。
先非常感谢一下,
这个表用户表是存在一些用户的等级信息之类的,而用户也同时拥有着所有其他表里的内容,比如每个用户都有宠物,都有装备,我之前是将所有的表都单独建立一张表每个表都有统一的用户id,然后朋友说我这样做不行,要我尽可能的做一些关联来优化,我不知道具体怎么优化,他给的建议是做关联中间表!想问一下您这样的关联可以吗?
就拿装备表来讨论一下吧,
用户和装备是一对一关系还是一对多关系还是多对多关系?
1对1关系:一个用户只对应一种装备;
1对多关系:一个用户对应多种装备;
多对多关系:每个用户对应多种装备,每种装备也对应多位用户。
你的实际情况属上面哪一种?如果是多对多关系的,你要在用户表和装备表之间建一中间表,此表要拥有自己的主键,并引入用户表的主键和装备表的主键为其外键。
其他的表的处理也要按照上述分析到底是哪种对应关系,以确立是否单独建表及主外键关系。
2024-11-14 广告