关于数据库设计的问题

时间:2011-02-20 05:54:38

标签: database-design

我正在计划图书馆管理系统,学生可以查看项目。

我的问题是如果图书馆携带不同的媒体(例如,mircofilm,dvds,cds等)和书籍,如何设计数据库。我的问题在于dvds与书籍的属性不同,或者书籍与缩微胶卷的属性不同。

那么,我应该如何处理所有这些不同类型的媒体?

谢谢。

5 个答案:

答案 0 :(得分:4)

如果各种媒体都有一些共同的属性,那么将它们放在一个表中,并将其他属性分别放在一个单独的表中。

此外,这个公用表应该有一个mediaType字段,它是另一个表中的外键。

例如

Table MediaType

Id  Name
1   Book
2   DVD
3   CD
4   Microfilm

表媒体

Id  MediaType  Title
1   1          Gone With the Wind
2   2          Avatar
3   2          Gladiator
4   2          Never Say Never
5   3          Some Music CD

Table MediaBook

Id MediaId  Author
1  1        Margaret Mitchell

表MediaDVD

Id  MediaId  Director
1   2        James Cameron

这种方式设计还有助于您需要执行的任何报告,因为您的Media表可以指向存在特定媒体类型的附加信息的表。此设计还允许您独立于其他类型的媒体扩展各种媒体的属性,以及轻松地向系统添加新媒体类型。此设计还将为您提供规范化数据模型,同时使用简单关系和null / not null字段维护数据的完整性。

答案 1 :(得分:2)

选项是否没有MediaType引用表,保存您拥有的媒体类型,然后主事务表具有所有可能的字段...然后,根据MediaTypeId检查约束,检查哪些字段可以和不能是NULL?

我发现这是最简单,最易维护的解决方案。

答案 2 :(得分:1)

您应该考虑使用增强型ER模型,以便将公共项放在通用实体中,并将​​指定属性放在单独的表中:

http://www.cse.ohio-state.edu/~gurari/course/cse670/cse670Ch16.xht

答案 3 :(得分:1)

以下是关于媒体库的free data model,来自Database Answers Website

答案 4 :(得分:0)

简单的选项是为每种媒体类型设置一个表。

这是否算作答案? :)