|
|
1
9
我似乎记得学生/班级是一个经典,你也可以把分数放在里面,让它更复杂一点。
最初,您可以在一个表中执行此操作,并将其非规范化为三个。 |
|
|
2
6
偏离主题 在教授了数据库课程之后,我建议在掌握查询的基础知识之前,不要再考虑设计。一旦人们了解了如何从数据库中获取数据,他们就会更好地理解规范化的需求。如果你从规范化和设计开始,你将失去班上其他学生的大部分。设计应该是数据库课程的最后一个模块,但我所复习过的所有教科书都是从它开始的。 在学习查询时,最好让他们同时查询好的和坏的数据库设计,然后他们会真正理解当教授设计时坏的设计是多么痛苦。 |
|
|
3
2
电子商务/购物车设计很好,因为大多数人都了解这个概念,你可以将它推向许多不同的方向。 您可以做一些简单的事情,如购物车、购物车项目、用户、订单、订单项目等。 然后,您可以更深入地了解用户地址、用户电子邮件、项目、项目详细信息、项目历史记录等。 这可以提供很多很好的辩论,因为有很多判断的呼吁。 |
|
|
4
1
有一个我永远不会忘记的概念是,整个“复数”和“单数”的命名。一位伟大的导师曾经告诉我,您应该将表名设计为复数,将列名设计为单数,并且永远不要为列名创建特定于时间的名称。时态名称示例有nutssold1998、nutssold1999、nutssold2000等。不要在列名称中添加年份、月份或周数或时间等。 表名示例: 员工(非员工) 零件(非零件) 学生(学生) 列名示例: EmployeeID(非EmployeeID或EmployeeID等) 部分(非部分或部分等) 学生ID(不是学生ID或学生ID等) 注意正确使用身份证、代码、钥匙、号码等。我一直被教导不要在列的名称中使用“key”,除非它是一个实际的表键(主键或外键,但不一定是可选的)。大多数情况下,附加“id”比附加“number”或“code”要好,但这都取决于上下文。 在设计桌子、阅读书籍等优秀材料方面,我们有时间和经验。 Database Design For Mere Mortals 和 Data Modeling for Everyone . 而且,花很多时间去看好的设计并把它们分开。这绝对是一门手艺,你只会随着时间和练习而变得更好。 |
|
|
5
1
这是一个可以追溯到我大学时代的例子——它既被用作数据库设计挑战,也被用作面向对象的设计挑战。 并不是所有的信息都被一次揭示出来——挑战的一部分在于如何调整设计来处理新的需求,以及适当的规范化如何使这变得更容易。 假设您必须为大学/学院的情况设计一个数据库,并希望处理入学问题。 你有 课程 教。每门课程每周都有一个标题和一个固定的时间段。 每道菜都有 讲师 谁介绍课程。 每道菜都有很多 学生 学习课程的人。 每个课程有一个或多个 导师 帮助学生学习的人。你不需要跟踪哪些导师帮助哪些学生。 有些课程有多个固定的时间段。 有些课程有多个讲师。 讲师和导师都是有报酬的,这意味着我们需要跟踪一些税务方面的信息。税务部门不关心他们的报酬——他们希望我们每个人都有一个单独的记录。 在某些课程中,讲师还担任导师,以了解一些学生如何处理材料。 一些导师也是其他课程的讲师。 要成为一门课程的导师,你必须早点成为这门课程的学生。 不是每个学生都会因为通过课程而获得学分——有些学生只是在审核课程而不需要学分。 一门课程不及格的学生可以稍后再参加该课程。我们需要记录每一次尝试。 |
|
|
6
0
图书馆总是有这样的例子(一个图书馆有很多书,每本书都有一个作者和出版商,当你正常化时,可以把它们推到单独的表格中) |
|
|
7
0
重新:
你可以找到 归一化 此处显示数据库架构示例: http://www.microsoft.com/sqlserver/2005/en/us/express-starter-schemas.aspx . 你可以从头开始构建它们,向你的学生展示“标准化的方法”。特别是查看联系人管理模式。您可以轻松地取消模式的规范化,并将其恢复到3nf或更深层。 |
|
|
8
0
itzik Ben-gan的新书Microsoft SQL Server 2008:T-SQL Fundamentals有一个非常基本的示例,您可以看到它是从一个简化的Northwind数据库派生而来的。 Microsoft SQL Server 2008: T-SQL Fundamentals author support page |
|
|
9
0
另一个好的模型是发票项目模型,因为“最佳选择”取决于各种因素:
看看这个数据模型: 发票联
发票项目
应用功能包括:
假设您的每张发票平均有5个项目,每天有100张发票,您最终会这样做,每天:
因此,假设读写成本相同,那么总计为1800次操作/天。 如果在实体“invoice”上添加“totalamount”属性,情况会稍有不同:
总共800个操作:) |
|
|
developer · 带外键的SQL表设计 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 2 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 8 年前 |