建立一个关于系,学生,班级的数据库.关系模式如下:学生STUDENT(学号,姓名,年龄,班号)
班CLASS(班号,专业名,系名,入学年份)
系DEPT(系号,系名)问题如下:
使用查询分析器建表,要求声明:
1.每个表的主外码.
2.每个班级的人数不能超过20人
3.学生的年龄介于16-30岁之间
4.学生姓名不能为空,
5.只有班里没有学生的时候,才能删除该班级

解决方案 »

  1.   

    非常简单~
    按照你自己的要求在“企业管理器”建好这些表,然后 所有任务-〉生成SQL脚本
    答案就出来了
      

  2.   

    晕死,想好好学SQL语法的话,可以查看SQL的帮助,自己构造SQL语句来建表,如果想快速建表,可以到管理器里快速建表。
      

  3.   

    偶么?懂,不过你不会只是想让人来给你写SQL语句的吧,重要的是在学习“方法与思路”
      

  4.   

    tavor(龙双公子) :有没有什么方法可以在建表的时候就设定好:
    每个班级的人数不能超过20人,或:学生的年龄介于16-30岁之间
      

  5.   

    Eddie005(暴走005) 的方法初看是不错,但事实上,SQL Server生成SQL脚本是不包含主外键、索引、约束这些信息的。
      

  6.   

    如下:
    班CLASS(ID,班号,专业名,系名,入学年份) 其中加个字段为主键自动编号create trigger oninsertclass on CLASS
    for insert
    as
    declare @tmp int
    select @tmp=count(*) from CLASS where 班号=(select 班号 from deleted)
    if @tmp>20
    begin
    delete from CLASS where ID in (select id from deletetd)
    end
      

  7.   

    对于学生年龄是可以用约束做到的
    学生表创建好后,用
    ALTER TABLE student WITH NOCHECK ADD CONSTRAINT student_check CHECK (age>16 and age<30);
    这样的语句就可以了。
    另外,1和4应该没问题的吧?2和5恐怕要通过存储过程了。
      

  8.   

    学生的年龄介于16-30岁之间 这实际上就是一个约束,比如下面我写的一个创建表的句子CREATE TABLE tb2 (
    tid int ,
     CHECK (tid > 14 and tid < 20)
    )
    这样生成的这一列,插入的值就必须大于14且小于20,你在写的时候,可以作类似处理
      

  9.   

    另外奉劝楼主,在设计数据库的时候不要这样设计死,最好把逻辑单独的写一层,Data Access单独写一层,这样层次清楚,以后扩展起来会方便一些