MySQL 实体间的对应关系

本文介绍了数据库设计中的三种基本实体关系类型:单一对应关系、从属关系及交叉从属关系,并通过具体实例展示了如何进行表结构设计。

1.单一对应关系

一个实体对应一个实体

例如:一个人的姓名对应一个人的其他不常用信息

设计

两个实体表内,存在相同的主键值。

如果记录内的主键值等于另一个关系表内记录的主键值,

则两条记录对应11

 

 

2.从属关系

一个实体对应多个实体

例如:班级对应学生

设计:

实体较多的那端(学生),增加一个字段,用于表示属于另一个实体

的唯一标志(主键);

 

 

3.交叉从属关系

一个实体对应多个实体,同时,这个实体也有被多个实体对应。

例如:讲师与班级关系;

设计:

典型方法是利用一个中间表表示实体之间的对应关系。

分别记录这个实体的主键,以及任何与它有对应关系的主键。

此时中间表与其他实体的表关系为从属关系。

(表中为组合主键)

记录形式为11.

M:N=1:M+1:N

 

create table t9_class(
class_id int primary key auto_increment,
class_name varchar(10),
begining_time datetime
);

create table t9_student(
stu_id int primary key,
class_id int,
stu_name varchar(10)
);

create table t9_teacher(
teacher_id int primary key
);

create table t9_teacher_class(
class_id int,
teacher_id int,
primary key(teacher_id,class_id)
);

/*
	class与student是一对多关系;
	class与teacher是多对多关系;
        class与teacher_class是一对多关系;
	teacher与teacher_class是一对多关系;
*/

 

 

 

 

 

 

 

 

 

 

 

 

 

<think>好的,我需要解决用户关于MySQL的Decimal类型如何映射到Java实体类的问题。用户提到之前搜索结果不一致,想要明确的对应关系。首先,我得确认MySQL的DECIMAL类型在Java中的正确映射。 根据引用[1]和[2],MySQL的字段类型和Java属性的对应关系可能有不同的说法,但Decimal通常对应Java的BigDecimal。这是因为DECIMAL用于高精度的小数,而BigDecimal能处理任意精度的数值,避免浮点数精度问题。不过,有时候开发者可能会用Double,但这可能会有精度损失的风险,所以推荐使用BigDecimal。 接下来,我需要验证这个结论是否正确。查阅官方文档,比如MySQL的JDBC驱动文档,确认DECIMAL的推荐映射确实是BigDecimal。此外,引用[2]提到Mybatis的映射关系,应该也支持这种对应。因此,正确的做法是在实体类中使用BigDecimal类型来对应DECIMAL字段。 然后,用户可能需要示例代码,所以应该提供一个简单的实体类例子,展示如何用BigDecimal定义属性。同时,要提醒他们在处理数据库时,比如使用Mybatis,确保类型处理器正确配置,避免类型不匹配的错误。 最后,用户可能还会关心其他类型的映射,但当前问题集中在DECIMAL上,所以保持回答的针对性。总结时,强调使用BigDecimal是最佳实践,并解释原因,比如精度保持和避免计算错误。这样用户就能明确知道正确的映射方式,避免之前遇到的混淆情况。</think>在MySQL中,`DECIMAL`类型用于存储精确的小数值(如财务数据),其对应的Java实体类属性类型应为`java.math.BigDecimal`。这是Java中唯一能完全匹配`DECIMAL`高精度特性的数据类型,避免浮点数的精度丢失问题[^1][^2]。 ### 示例代码 ```java public class Order { // MySQL DECIMAL(10,2) 对应 Java BigDecimal private BigDecimal amount; // Getter和Setter public BigDecimal getAmount() { return amount; } public void setAmount(BigDecimal amount) { this.amount = amount; } } ``` ### 关键说明 1. **精度保障**:`DECIMAL(10,2)`表示最多10位数字,其中2位小数,`BigDecimal`可完整保留精度 2. **框架支持**: - MyBatis等ORM框架默认将`DECIMAL`映射为`BigDecimal` - 若使用基本类型`double`会导致精度丢失(如金额计算错误) 3. **特殊场景**: - 若确定数值范围较小(如0-100的百分比),可使用`Double`类型 - 但涉及金额等关键数据时**必须使用`BigDecimal`**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值