标签: database-schema

学校管理系统的数据库规范化

我正在为学校管理系统创建系统,并提出附加的数据库模式.

数据库图http://oi40.tinypic.com/15x21ig.jpg

以下是系统的工作原理:

  1. 一所学校有很多学生和老师.它还教授了许多课程(科目).年级可以分配许多课程.这些课程将分配给该特定年级的学生.
  2. 学生的水平分为等级和部分.学生可以达到五年级,但如果五年级学生数量巨大,他们会分成几个部分.例如:5年级A部分,5年级B部分.
  3. 学生被安置在独特的教室里.整个教室将是独一无二的.2010年的5年级A级课堂将与2011年5年级A级的课堂不同.
  4. 学生被分配到父母.家长可以在学校拥有一名以上的学生.
  5. 可以将一个或多个教室分配给教师.
  6. 学生每天都会参加学生的考试
  7. 会有很多类型的考试.为每个科目(课程)存储考试结果.

我是数据库规范化的初学者,如果有人能给我一些提示,如果数据库看起来不错,我会很高兴.

编辑:

此外,只有一个登录点.在上述情况下,在登录期间,用户必须从下拉列表中选择用户类型.该下拉选择将用于查询相应的表以登录系统.另一种方法是使用一个公用user表,它将存储user_id, email, password, last_login_date, last_login_ip但会将其他细节存储在各自的表中,例如student, parent, teacher.那么,实现它的首选/正确方法是什么?

mysql database-design relational-database database-schema database-normalization

15
推荐指数
1
解决办法
5万
查看次数

使用MongoDb处理迁移

为了给这个问题提供更多的上下文,我有一个Web应用程序(asp mvc),它基本上将CRUD操作包装到MongoDb实例,它在模型被验证并发送到存储之前执行验证和某些业务逻辑,检索等

现在我们遇到的一个问题是,在新版本中,模型已经改变,但现有数据没有,这里是一个例子:(它是c#特定的,但问题确实是语言不可知的)

public class Person
{
    public Guid Id {get; set;}
    public string Name {get; set;}
    public int Age {get;set;}
    public string BadgeNo {get;set;}
}

public class Person
{
    public Guid Id {get; set;}
    public string Name {get; set;}
    public int Age {get;set;}
    public string EmployeeNo {get; set;} // Still contains same data as BadgeNo just called something different
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,对象的结构发生了变化,但是在Mongo的土地上,它仍然传递出一个BadgeNo,而不是一个EmployeeNo.在SQL领域,我们通常会有一个迁移脚本,它作为构建脚本的一部分运行,它将更改架构并更新/插入/删除该增量的任何其他数据.

那么如何用Mongo 管理这类迁移呢?我是否还应该使用一个脚本来更新Mongo中的所有实例?还是有一些其他首选的做法来做这种事情.

关于这个问题的任何建议都会很棒

===编辑===

目前我似乎想要使用迁移选项而不是逐步淘汰方法,所以考虑到这一点,任何人都可以推荐任何帮助这一领域的工具,否则每次迁移(假设滚入,推出) )必须是一个具有所有逻辑的预编译程序集.我正在思考FluentMigrator的内容,但不是使用SQL而是使用Mongo.目前我的构建脚本使用Nant,我看过一些ruby工具,但不确定是否有任何.net等价物.

.net migration mongodb database-schema

15
推荐指数
1
解决办法
6349
查看次数

缩短MongoDB属性名称是否值得?

使用mongoDB,express和Node.js博客中,作者提到缩短属性名称是个好主意:

....经常报告mongoDB的问题是磁盘上数据的大小...每个记录都存储了所有的字段名称....这意味着拥有属性通常可以更节省空间例如't',或'b'而不是'title'或'body',但是为了避免混淆,除非真正需要,否则我会避免这种情况!

我知道如何做到的解决方案.我更感兴趣的是什么时候才真正需要?

mongodb database-schema

15
推荐指数
4
解决办法
4602
查看次数

设置DbContext的模式名称

我知道如何在我的上下文中为表设置模式,但有没有办法为上下文中的所有表设置默认模式?即

[Schema = "Ordering"] 
public class MyContext:DbContext
{
    public MyContext()
        : base("name=ConnectionString")
    {
    }

    public DbSet<Student> Students { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# entity-framework database-schema entity-framework-6

15
推荐指数
2
解决办法
2万
查看次数

Envers如何处理架构更改?

我正在考虑从自我实现的版本控制解决方案切换到Hibernate Envers,但我还不太确定.我已经阅读了很多关于它的内容,但我关注架构更改以及Envers在根据旧架构历史化数据后如何处理它们.

您在这方面与Envers有什么经历?如何使用Envers处理架构更改和现有数据?

更新1:

它不只是添加从表中删除简单列,而是例如将简单的Forein-Key-Relationship更改为具有两个1:n关系的单独实体(M2M与属性列.这是您的"逻辑"更改当使用Envers时,如果根据旧模型已经存在历史数据,那么如何处理?有没有其他方法可以手动编写sql脚本并将它们转移到新的表示中?

java hibernate database-migration database-schema hibernate-envers

14
推荐指数
1
解决办法
2731
查看次数

如何在多个Postgresql数据库之间共享一个表

我的网络应用程序有多个部署 - 每个部署都是一个具有唯一URL的唯一网站.
每个部署都有不同的数据,UI等,但是Postgresql数据库结构非常相似(使用PostGIS).数据库都存在于同一个DB服务器上.我希望1个部署的用户能够登录所有其他部署的应用程序,而无需重新注册.

我想要的是在多个应用数据库之间共享的单个"用户"表.任何在一个应用程序中注册的用户都应该被所有其他应用程序识别.Postgres有可能吗?模式是这样做的吗?

sql postgresql database-design login database-schema

14
推荐指数
1
解决办法
5914
查看次数

支持仅适用于特定行的值的最佳数据库模式是什么?

我有一个名为Calendar with fields 的数据库表

  1. Id(PK)
  2. 名称
  3. 描述
  4. CalendarTypeId(FK到CalendarType表)

我有另一个名为CalendarType的表,其中包含字段

  1. Id(PK)
  2. 名称
  3. 描述

问题是我需要为日历类型为2的每个日历存储一个附加字段.(但此字段与任何其他日历类型无关).

我应该只在Calendar表中创建一个新字段,并忽略具有不同calendarTypeid的所有其他日历的该字段,或者是否有更好的方法来组织此模式以支持此需求.

database-design database-schema

14
推荐指数
3
解决办法
1646
查看次数

用于调度任务的数据库表设计

我希望能够创建可以基于固定日期执行的日程表,每天重复,在一周中的特定日期重复,在一年中的特定月份重复,在每年的特定日期重复,并在一天的特定时间.

请问我该如何为这个问题构建数据库表?

编辑#1

基本上,我正在编写一个应用程序,允许用户安排在各种预先配置的时间发送预配置的问候语.我知道我需要一个存储有关时间表信息的表格(例如圣诞节,营销一,... |以及时间表应该运行).然后是另一个表,用于记录已运行的计划,发送的问候语,人员和电子邮件; 基本上是一个交易表.

我的问题是设计Schedule表,因为我希望允许用户在特定日期,一周的特定日期(经常性),每个月的特定日期,每天的特定时间以及每年特定的日/月(例如25/12).

如何为计划创建一组表格,以灵活的方式处理这些输入?

database-design database-schema

14
推荐指数
4
解决办法
3万
查看次数

mongodb架构设计命名约定

所以我有一些叫做的东西

exports.create = function(projectJSON){

 var project = new ProjectModel({
   id : projectJSON.id,
   projectName : projectJSON.projectName ,
   authorName : projectJSON.authorName,
   firstPostDate : projectJSON.firstPostDate

 })
}
Run Code Online (Sandbox Code Playgroud)

多字元素的上述命名约定是firstPostDate正确的,还是_在所有小字母中间隔开?

我看到其他博客更喜欢小型大写.

编辑:

我还读到元素应该是单数而不是复数,即:

`comment` instead of `comments` for a blog schema design
Run Code Online (Sandbox Code Playgroud)

naming-conventions mongodb database-schema

14
推荐指数
2
解决办法
1万
查看次数

如果不存在,cassandra添加列

我需要通过CQL脚本将新列插入现有列族.

我想做的事情如下:

alter COLUMNFAMILY rules ADD rule_template text IF NOT EXISTS;
Run Code Online (Sandbox Code Playgroud)

我怎样才能在CQL脚本中实现这一目标?

cassandra database-schema cql3

14
推荐指数
1
解决办法
7611
查看次数