如何在MySQL中设计满足多对多、一对多关系的CRUD应用数据库结构?
数据库结构设计方案
1. 调整基础表结构
保留你现有三张表的核心字段,仅对animal_table做少量修改,来实现农场主与动物的一对多关系:
farmer_table:维持原有字段id(主键)、name、descanimal_table:在原有字段id(主键)、name、desc基础上,新增farmer_id字段,设置为外键关联farmer_table.id。这样每个动物都能对应到唯一的农场主,一个农场主可以关联多个动物,满足一对多关系。investor_table:维持原有字段id(主键)、name、desc
2. 新增多对多关联表
针对投资者与动物的多对多关系,需要新增一张中间关联表(命名建议用animal_investor_relation),字段设计如下:
animal_id:外键,关联animal_table.idinvestor_id:外键,关联investor_table.id- 可选优化:新增自增
id作为主键,同时给animal_id和investor_id添加联合唯一约束,避免同一个投资者重复关联同一只动物。
核心逻辑说明
- 一对多关系:通过
animal_table.farmer_id与farmer_table.id的外键绑定,确保动物只能归属一个农场主,而一个农场主可拥有多只动物。 - 多对多关系:中间表存储投资者和动物的关联记录,一条记录代表一个投资者关联了一只动物,以此实现双向的多关联需求。
内容的提问来源于stack exchange,提问作者Gusde Widnyana
相关产品推荐
相关产品推荐

