社区
数据库相关
帖子详情
这样设计数据库合适吗?
星幻子
2012-07-30 10:34:29
主表字段
学号,姓名,性别,经手人,教师
经手人表
编号,经手人姓名
教师表
编号,教师姓名
请问:保存到主表 经手人 和 教师 字段 的数据是 保存 编号 还是 姓名合适?
我目前都会保存姓名,这样的话统计的SQL会容易写一点。
还有学生考试表我也是把全部需要的数据都保存到一起,比如
学号,姓名,性别,教师,考试成绩 等
还有我每张表都设置了一个自增的主键来防止出现完全一样的记录,这样做是否可行?
分不多还请各位帮帮忙
...全文
259
16
打赏
收藏
这样设计数据库合适吗?
主表字段 学号,姓名,性别,经手人,教师 经手人表 编号,经手人姓名 教师表 编号,教师姓名 请问:保存到主表 经手人 和 教师 字段 的数据是 保存 编号 还是 姓名合适? 我目前都会保存姓名,这样的话统计的SQL会容易写一点。 还有学生考试表我也是把全部需要的数据都保存到一起,比如 学号,姓名,性别,教师,考试成绩 等 还有我每张表都设置了一个自增的主键来防止出现完全一样的记录,这样做是否可行? 分不多还请各位帮帮忙
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
520bc
2012-08-22
打赏
举报
回复
我觉得大家都说得不够专业
每一个数据表最好建一个独立的ID作为主键
比如
ID,学号,姓名,性别,教师
经手人表
ID,经手人ID,姓名
经手人ID=主表中的ID
一般建数据表,都不建议采用不重复的数字编号作为主键,因为数字编号本身就存在长度、位数等不
可定因素的影响,所以每一个数据表都建议采用ID varchar(50)来建立
插入数据库的时候 ID=GetGuid;
函数如下:
function GetGUID:string;
var
AGUID : TGUID;
begin
CoCreateGuid(AGUID);
Result := GUIDToString(AGUID);
end;
单元引用 ComObj,ActiveX
zczhangchao2003
2012-08-13
打赏
举报
回复
其实7楼已经说的很清楚了,可以仔细想想。5个表,5组自增ID
星幻子
2012-08-06
打赏
举报
回复
楼上能否详细点?
谢谢
haitao
2012-08-02
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
楼上能详细点吗?
貌似都是 1对多的关系
目前比如我以教师分组统计学生时,可以直接 group by 学生表里的教师字段了
如果以ID储存的话是不是更麻烦点呢?
[/Quote]
编号,现在说不变,以后还是可能变的,如4位升6位。。。。。
id,则是真正不会变的
cohye
2012-08-02
打赏
举报
回复
学生考试记录表
TID(自增键) 学号 考试科目 成绩
这样吧
星幻子
2012-08-02
打赏
举报
回复
大家误会了,我把详细的表描述下
学生表
XID(自增键) 学号 姓名 身份证号码 报名经手人 教师
教师表
TID(自增键) 教师姓名
经手人表
JID(自增键) 经手人姓名
学生考试记录表
TID(自增键) 学号 学生姓名 考试科目 成绩 教师 报名经手人
目前各个ID字段我都是用来防止出现两个相同的记录的,没做他用
当添加新学员记录时,用类似dblookupcombobox来从 教师表 和 经手人表中选取对应的记录 保存到学生表中
当添加新的考试记录时,直接把 学员表对应的数据添加到 考试记录表中
这样我觉得 学号 学生姓名等就造成了重复录入的问题,我觉得不妥,所以来请教
zoucp
2012-08-01
打赏
举报
回复
ID不会添加额外的负担。有这种担心是因为对SQL不熟吧。
situduzhuo
2012-08-01
打赏
举报
回复
没有单一的识别字段,不然重名的会出问题
星幻子
2012-08-01
打赏
举报
回复
楼上能详细点吗?
貌似都是 1对多的关系
目前比如我以教师分组统计学生时,可以直接 group by 学生表里的教师字段了
如果以ID储存的话是不是更麻烦点呢?
火龙岛主
2012-07-31
打赏
举报
回复
[Quote=引用楼主 的回复:]
主表字段
学号,姓名,性别,经手人,教师
经手人表
编号,经手人姓名
教师表
编号,教师姓名
请问:保存到主表 经手人 和 教师 字段 的数据是 保存 编号 还是 姓名合适?
我目前都会保存姓名,这样的话统计的SQL会容易写一点。
还有学生考试表我也是把全部需要的数据都保存到一起,比如
学号,姓名,性别,教师,考试成绩 等
还有我每张表都设置了一……
[/Quote]
可以
使用编号,当更改姓名的时候,不至于导致数据无法对应的情况发生。
kaikai_kk
2012-07-31
打赏
举报
回复
每个学生或者老师应该做一个编号
就像工厂里面的员工一样,都有一个工号
liangpei2008
2012-07-31
打赏
举报
回复
看业务模型,如果学生和经手人、老师是多对多的关系,则信息需要用中间表存储。这样后期做数据统计可能会更有利一些。
1.学生表
2.经手人表
3.教师表
4.学生-经手人中间表
5.学生-教师中间表
haitao
2012-07-31
打赏
举报
回复
肯定是编号了
其实,应该都增加一个id字段,使用id比编号还要好
星幻子
2012-07-31
打赏
举报
回复
我想知道这样对于数据库性能有没有影响?或是设计原则方面的呢?
我的数据更改时做了限制的,比如 学生表中 经手人 的内容只能从 经手人表中获取
洛阳逍遥游
2012-07-30
打赏
举报
回复
觉得不好,还是用各自的编号表示吧
Oraclers
2012-07-30
打赏
举报
回复
如果没有同名同姓的人的话,可以用姓名,但如果以后出了一个同名同姓的话你这个数据库就有问题了。
数据库
设计
教程(第二版)pdf
数据库
设计
教程(第二版)pdf
数据库
开发 维护 性能调优 备份还原 各种复杂问题的解决方案
数据库
开发 维护 性能调优 备份还原 各种复杂问题的解决方案 这时对CSDN上出现的很多问题的解决方案的总结 免费分享 大家多多下载哦
简单的注册登录功能(JavaWeb项目)
简单的注册,登录功能,注册功能使用MySQL
数据库
,采用mvc编程模式,注册功能有详细的表单填写限制
每天有1亿条记录的DB储存,MySQL
数据库
如何
设计
?
用Java怎么实现有每天有1亿条记录的DB储存?MySQL上亿记录数据量的
数据库
如何
设计
? 1.这么大数据量首先建议 使用大数据的DB,可以用spring batch 来做类似这样的处理。定量向DB存储数据。如果需要定时,可以考虑 quartz。 Mysql
数据库
设计
: 1.读写分离; 2.纵向横向拆分库、表。 MySQL的基本功能中包括replication(复制)功能。所谓replicat...
数据库
设计
的基本步骤
数据库
设计
的基本步骤 按照规范
设计
的方法,考虑
数据库
及其应用系统开发全过程,将
数据库
设计
分为以下6个阶段 1.需求分析 2.概念结构
设计
3.逻辑结构
设计
4.物理结构
设计
5.
数据库
实施 6.
数据库
的运行和维护 在
数据库
设计
过程中,需求分析和概念
设计
可以独立于任何
数据库
管理系统进行,逻辑
设计
和物理
设计
与选用的DAMS密切相关。 1.需求分析阶段(常用自顶向下)
数据库相关
2,507
社区成员
88,454
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章