我正在计划图书馆管理系统,学生可以查看项目。
我的问题是如果图书馆携带不同的媒体(例如,mircofilm,dvds,cds等)和书籍,如何设计数据库。我的问题在于dvds与书籍的属性不同,或者书籍与缩微胶卷的属性不同。
那么,我应该如何处理所有这些不同类型的媒体?
谢谢。
答案 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)
简单的选项是为每种媒体类型设置一个表。
这是否算作答案? :)