2341
Comment:
|
6408
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
<<TableOfContents>> |
|
Line 3: | Line 5: |
== 2011 Winter Class == * [[DatabaseManagementSystems/Cptr319Schedule2011|Course Schedule 2011]] * [[DatabaseManagementSystems/Cptr319Syllabus|Syllabus]] |
|
Line 19: | Line 26: |
* Lecture 4: /EntityFrameworkExample | |
Line 20: | Line 28: |
== Programming Resources == | * [[/AssociationTablePattern|ORM's and Entity Framework]] == Visio and ER diagrams == * [[http://dra.cs.southern.edu/classes/cptr319/CPTR319_VisioExample/CPTR319_VisioExample.html|Visio Lecture on the Student Database 2011]] * [[http://dra.cs.southern.edu/classes/cptr319/CPTR319_VisioExample2011/|ER Diagrams in Visio - Lecture 2011]] * [[attachment:ER_Visio_Lecture_Input.docx|Data to use in the ER Diagram (.docx)]] * [[attachment:ER_Visio_Lecture_Output.vsd|Completed Visio ER Diagram]] == Programming & Design Resources == |
Line 23: | Line 40: |
* Domain Driven Design has an entire website to look at: http://domaindrivendesign.org/ * NHibernate: http://nhibernate.org * Naked Entites/Objects (http://www.nakedobjects.com) is a for pay framework * CSLA.NET * SpecExpress http://specexpress.codeplex.com |
* [[http://www.fabforce.net/dbdesigner4/|DBDesigner]] is an awesome tool that went for pay by oracle now. Get the old one and don't pay for the ability to reverse engineer a diagram from a database. Works with Oracle, MSSQL and MySQL. * [[http://domaindrivendesign.org/|Domain Driven Design website]] * [[http://msdn.microsoft.com/en-us/practices/default.aspx|MSDN Patterns and Practices]] * [[http://nhibernate.org|NHibernate]] * [[http://www.nakedobjects.com|Naked Entites/Objects is a for pay framework]] * [[http://www.lhotka.net/cslanet/|CSLA.NET]] * [[http://specexpress.codeplex.com|SpecExpress]] |
Line 29: | Line 48: |
* [[http://sourceforge.net/projects/automapper-dn/|AutoMapper]] | |
Line 31: | Line 51: |
== Project Ideas == See: [[DatabaseManagementSystems/Cptr319ProjectIdeas|Project Ideas]] == Chapter Notes and Hints == These notes and hints serve to review you for exams and to help you with your homework. Occasionally you will find information here that is not in the book. You should READ THIS BEFORE YOU DO YOUR HOMEWORK! === Chapter 6.1: Relational Algebra === '''Rule 1:''' You don't need to qualify the results of a natural join. The results of a natural join ALWAYS only have one copy of overlapping attributes. '''Rule 2:''' Predicates, attribute lists and functions in <<latex($\sigma, \Pi, \mathcal{G}$)>> are always subscript. '''Rule 3:''' Relations, whether expressions or names, NEVER appear as a superscript or subscript. '''Rule 4:''' Input relations, whether expressions or name, always have parenthesis around them. E.g. <<latex(\Large$_{sect\_id,course\_id,year,semester}\mathcal{G}_{count(ID)}(student \bowtie takes)$)>> === Chapter 3 and 4 Hints === If you are having problems joining tables in the FROM and WHERE clauses, you are in the majority. There are two hints that I will give you to help you obtain the right perspective on joining tables: '''Rule 1:''' Just because two attributes have the same name doesn't mean that you should join them on these attributes. STOP, THINK about the semantics (the meaning) of the attribute. Do they both refer to the same thing? If the answer is yes, then you should join on them. Using NATURAL JOIN will match strings, not semantics, so be careful. Also NATURAL JOIN "works" but not on most systems and even on Oracle it is not encouraged... so DON'T USE IT ON YOUR HOMEWORK. If you do I'll run it on Oracle. If it doesn't work, you will be docked points accordingly. '''Rule 2:''' When you are looking at the attributes and relations, something is a foreign key only if it is '''the''' primary key in a '''different''' relation. Even if the foreign key is part (but not all) of the key in the relation it is in, it is a foreign key. '''Rule 3:''' The book doesn't always give you all the attributes that make up the primary key. Look carefully at the values and make sure when you create tables in Chapter 4 that the attributes you select to be the primary key are sufficient to uniquely identify a each row. === Chapter 8 === Definitions for BCNF and 4NF can be found on p. 333 and pp. 358-359. === Chapter 20 === Using this data: [[attachment:Aircraft Data.xlsx]] Import the data into a database and try the following query. Try the following query: {{{ USE Aircraft GO SELECT [Eng.HP], [Description], AVG(Cruise) AS AvgCruise, AVG(TopSpd) AS AvgTopSpeed, AVG([Gross Wt.]) AS AvgWt, AVG(UsefulLoad) AS avgUsefulLoad, AVG(GPH) AS AvgFuelFlow FROM AirCraftData GROUP BY [Eng.HP], [Description] WITH CUBE ORDER BY AvgFuelFlow; }}} |
Database Management Systems
Contents
This class is about Database Management Systems. As such we talk about creating, managing and programming SQL databases. When time permits, we also cover spatial/spatial temporal data and database systems. This site contains content developed by Dr. Anderson for his classes.
2011 Winter Class
Programming Examples
- Lecture 1: It really easy that easy to do small things
Commandline Connected Example
Forms Disconnected Example
- Lecture 2: Look at the Objects we used in the Forms from Lecture 1.
Filled by TableAdapter contained in the TableAdapterManager
BindingSource as a service provider
- How are GUI elements bound then?
- How do the GUI elements change?
- Lecture 3: Detail Tables, Validation and other GUI Objects
- What you bind to makes all the difference.
- Responding to the Validating Event
For anything other than small, independent projects consider the Entity Framework with LINQ.
Lecture 4: /EntityFrameworkExample
Visio and ER diagrams
Programming & Design Resources
Learning to program something more complex than a one off programming assignments for students can be difficult. Where do the experts learn to program large database applications and what tools and methods do they use? This section is not an answer, but a suggestion on where to look for those answers. Someday, I hope to have a class that explores this in depth.
DBDesigner is an awesome tool that went for pay by oracle now. Get the old one and don't pay for the ability to reverse engineer a diagram from a database. Works with Oracle, MSSQL and MySQL.
And many more to follow I'm sure.
Project Ideas
See: Project Ideas
Chapter Notes and Hints
These notes and hints serve to review you for exams and to help you with your homework. Occasionally you will find information here that is not in the book. You should READ THIS BEFORE YOU DO YOUR HOMEWORK!
Chapter 6.1: Relational Algebra
Rule 1: You don't need to qualify the results of a natural join. The results of a natural join ALWAYS only have one copy of overlapping attributes.
Rule 2: Predicates, attribute lists and functions in <<latex($\sigma, \Pi, \mathcal{G}$)>> are always subscript.
Rule 3: Relations, whether expressions or names, NEVER appear as a superscript or subscript.
Rule 4: Input relations, whether expressions or name, always have parenthesis around them. E.g.
<<latex(\Large$_{sect\_id,course\_id,year,semester}\mathcal{G}_{count(ID)}(student \bowtie takes)$)>>
Chapter 3 and 4 Hints
If you are having problems joining tables in the FROM and WHERE clauses, you are in the majority. There are two hints that I will give you to help you obtain the right perspective on joining tables:
Rule 1: Just because two attributes have the same name doesn't mean that you should join them on these attributes. STOP, THINK about the semantics (the meaning) of the attribute. Do they both refer to the same thing? If the answer is yes, then you should join on them. Using NATURAL JOIN will match strings, not semantics, so be careful. Also NATURAL JOIN "works" but not on most systems and even on Oracle it is not encouraged... so DON'T USE IT ON YOUR HOMEWORK. If you do I'll run it on Oracle. If it doesn't work, you will be docked points accordingly.
Rule 2: When you are looking at the attributes and relations, something is a foreign key only if it is the primary key in a different relation. Even if the foreign key is part (but not all) of the key in the relation it is in, it is a foreign key.
Rule 3: The book doesn't always give you all the attributes that make up the primary key. Look carefully at the values and make sure when you create tables in Chapter 4 that the attributes you select to be the primary key are sufficient to uniquely identify a each row.
Chapter 8
Definitions for BCNF and 4NF can be found on p. 333 and pp. 358-359.
Chapter 20
Using this data: Aircraft Data.xlsx
Import the data into a database and try the following query.
Try the following query:
USE Aircraft GO SELECT [Eng.HP], [Description], AVG(Cruise) AS AvgCruise, AVG(TopSpd) AS AvgTopSpeed, AVG([Gross Wt.]) AS AvgWt, AVG(UsefulLoad) AS avgUsefulLoad, AVG(GPH) AS AvgFuelFlow FROM AirCraftData GROUP BY [Eng.HP], [Description] WITH CUBE ORDER BY AvgFuelFlow;