asp.net如何实现有多个外键约束的表的录入和查询?
比如我有三个表,学生表、教师表和课程表,一个学生可以选多个课程,一个课程也可以由多个学生来学,但一个课程只能由一个老师来教,那么课程和学生是多对多关系,课程和老师是一对一关系,我都用外键约束,那么我的表设计就是这样:学生表:id 姓名
教师表:id 姓名 课程id
课程表:id 课程名
学生课程关系表:学生id 课程id
第一个问题:我这样设计行不行?
第二个问题:如果我已经写好课程表,我在前台录入教师,用户在选择课程时不可能直接选择编号,那么我在编程时肯定要将课程名转换为课程id,如何做比较好?是在asp.net中编码还是在sql中做?如何做?谢谢! --------------------编程问答-------------------- 为什么没人回答?这个问题很难么? --------------------编程问答-------------------- 学生表:id 姓名
教师表:id 姓名 课程id
课程表:id 课程名
1/这三张表是必要的
2/再建张学生课程记录表
记录id 学生id 课程id 教师id
1/绑定下拉框 要3个分别绑定 学生表 教师表 课程表 保存到课程记录表里面
2/绑定下拉框的代码:
连接数据库和dataset的定要我就不说了
this.ddlleechdom.DataSource = ds.Tables[0];//绑定数据集
下拉框的名字.DataTextField = "学生姓名";//姓名
下拉框的名字.DataValueField = "学生id";//id
下拉框的名字.DataBind();/绑定
3/剩下两个雷同.
取出下拉框的值和id
1/this.下拉框的名字.SelectedItem.Text.Trim();//取出绑定id
2/this.下拉框的名字.Text//取出选定的值
好了 下面保存的代码自己写把! --------------------编程问答-------------------- 1楼的不错。
通过ID在关联查询就是 在ASPX里写关联ID的SQL代码。 --------------------编程问答-------------------- 可是如果我不用下拉框呢?我想用文本框,当点击文本框的时候弹出层,然后列出所有选择项,选择后被选择项自动输入到文本框中,这样value如何存储? --------------------编程问答-------------------- 再回答一次我就结贴了哈,帮帮忙啦! --------------------编程问答-------------------- 这样建表结构也行.
不过以后重新给老师分配课课程.学生重新分配课程的时候.控制不够灵活
建议学生表,教师表,课程表.单独建为独立的实体.
他们之间的关系再通过新建关系表来完成.. --------------------编程问答-------------------- 单独实体?那要是一个表的外键很多的话岂不累死?还要多读一个表,录入读取都不方便吧? --------------------编程问答--------------------
不是说“一对一关系”就可以随便设计外键方向,还是应该考虑最可能的情况。最可能、满足更多人想法的情况是:
教师表:id 姓名
课程表:id 课程名 教师id
对于所谓的“一对一关系”,你完全可以(应该)合并到单个表中,除非万不得已的情况下(例如有人不给你午饭吃)。表与表之间,没有什么“一对一关系”,全都是“多对一关系”。
--------------------编程问答--------------------
所有的系统内部的id号都与应用领域知识无关,是纯粹计算机领域的东西。它不应该被反映到业务操作流程中。在录入课程时,你的程序应该生成一个随机号码,然后写到数据库中。至于用户界面上选择一个文本,而程序得到它对应的id,这是基本的编程知识,你可以看到很多例子,例如Scott的教程第一篇中的“产品ID"。 --------------------编程问答-------------------- sp1234,神啊!太强了,能要一下你的QQ详谈吗?我正在做一个系统,遇到了一些困难,烦请帮帮忙。 --------------------编程问答-------------------- 什么一对一的关系啊.课程与教师么?1个老师只教一门课程么,如果是这样,那还不如放到一起好了.我还以为是1对多的关系内
--------------------编程问答-------------------- sp1234大大,你还是教教我怎么从文本得到它对应的id值吧,我看了你给我的链接,可是没有找到。。。。。 --------------------编程问答-------------------- 我不要下拉框的,下拉框的我知道,我要纯文本的获取方式。 --------------------编程问答-------------------- 文本框的也行。 --------------------编程问答-------------------- 先把主表数据录入,然后利用已有的主表的数据录入字表数据
查询,主外键关联查询就可以了
补充:.NET技术 , ASP.NET