My Portfolio

683 views

Published on

My SetFocus Portfolio

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
683
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

My Portfolio

  1. 1. William P. Ringel<br />william_ringel@live.com<br />201-563-1805<br />My Portfolio<br />1<br />
  2. 2. Table of Contents<br /><ul><li>Piggybank Project……………………………………………3
  3. 3. SSRS Sample Reports……………………………………..27
  4. 4. SSIS / SSRS Project………………………………………….31
  5. 5. Final Group Project…………………………………………41
  6. 6. What is SetFocus?.............................................76</li></ul>2<br />
  7. 7. PiggyBank Specifications<br />The PIGGY Bank Project <br /> <br />Following from your initial design of the PiggyBank, the senior developer would now like you to implement and test the database. He has handed you the following revised ER diagram/specifications and advises you to use the checklist (gradesheet rubric) so that you are clear on what is absolutely necessary for you to implement in the project. There may be several features suggested in your original design that are not necessary at this time- (implement above and beyond as you see fit- but no additional credit will be awarded). The datatypes utilized in the diagram are a rough indication of what's expected from you, but feel free to modify them and add constraints, user defined datatypes, as you see fit (the datatypes utilized in the diagram is all you need for full credit however) <br /> <br />After you build the database and set each of your PK identity properties to true, you will need to run the PiggyBank OPENXML script.sql to add the preexisting customer and account information to your database. This script will NOT add the transactions information from the xml file- this section of the script has been left for you to complete as 1% point Extra Credit. <br /> <br />It is important that all further directives regarding the following specifications (including the gradesheet) be properly documented. Please email any questions to your Instructor and any important clarifications will be emailed back to you. <br /> <br />Customers: <br />We need to track the customer's name, address, e-mail, home phone, work phone, mobile phone. The name, address and the Home phone number is required. You will need to be able to both create a customer, and update the customer's personal information. <br /> <br />Accounts: <br />You are only required to support 2 types of accounts: Checking and Saving. Both accounts are tracked by an account number that is assigned by us. The account number should be 6 digits. We would like the account number to be automatically generated and incremented by 1. One customer can open multiple accounts (and no limits as to how many accounts as long as an initial deposit of $20 for each checking/savings account is made- assume that for higher interest money market and savings accounts that a higher deposit will be expected-but that this is outside the scope of the current specs). You will need to create accounts for a given customer, and also have the ability to update these accounts (specifics for Update Account are included later). Note that you can break these procedures up as you see fit, i.e. CreateChecking / CreateSavings in lieu of CreateAccount would be accepted for full credit, but throughout the spec the processes are referred to as CreateAccount and UpdateAccount. To allow for the variations we might receive- the rubric might list grade points for “can be created” or “can be updated”- meaning that there are different ways that you could approach the requirements and that ultimately we just want to see successful processes. <br />3<br />
  8. 8. PiggyBank spec’s cont.<br />Account Status<br />No account can be deleted- but they can be closed (made “inactive” according to the supplied AccountStatusID) via a customer's request. Upon the closing of an account all remaining money should be withdrawn from an account. Such an account can also be reopened (made “active”) as long as an initial deposit is made. If an account has a negative balance, an additional deposit should be required before the account can be closed. Feel free to be creative with additional AccountStatusID‟s as you see fit. <br /> <br />Overdraft- two types-“Specific account” and “General” <br />If a customer has more than one account, he/she can also sign up to have one of these accounts be set up as a specific overdraft account for the other. The advantage in doing this is that additional transactions will process for a relatively small $10 service charge/fee as long as the customer has the money in another account (versus the $30 service charge/fee for the general overdraft explained in the next paragraph). Any other account that is linked through the same customerID in the customerAccounts table can be used as an overdraft account (only one is specified at a time after they fill out the appropriate paperwork). Note that many of the existing customers (in the XML file/script provided) do have specific overdraft accounts. Always charge the $10 service charge/fee to the account that originated the transaction- not the overdraft account- even if money is left in the overdraft to cover such a charge. <br /> <br />Each checking or savings account owner has the option to sign up for a general overdraft by the bank in the amount of $400. The criteria for establishing a customer's eligibility for such an overdraft will be related to their overall credit worthiness and also whether they have signed up for direct deposit of their payroll checks. It is not necessary for you to implement anything with relation to this eligibility criteria. Also the bank will certainly have a method of limiting their risk from someone from being overdrawn $400 in multiple accounts at the same time- do not worry about this either. <br /> <br />The service charge/fee for using general overdraft is $30 for each time the overdraft is used. This service charge should always be a separate forced transaction and should be charged to the originating account regardless of balance (i.e. if a transaction would overdraw an account -$400.00(assume there is no specific overdraft account and it is covered by a general overdraft to -$400.00), the transaction would be allowed and then a $30 service charge/fee assessed, for a new balance of -$430.00. If a transaction would take the balance to -$400.01, the transaction would not be allowed. Existing (i.e. those in the XML file/script) and future customers should not be signed up for this general overdraft by default. <br /> <br />Transaction Types- Deposits, Withdrawals-Purchases, Transfers <br />Deposits, should be very straight forward to implement- We need a procedure that will insert the transaction into the transactions table, and update the account balance in the accounts table. Anyone can deposit money into any account- and besides your standard input validations, the only additional requirement with respect to the general overdraft is Extra Credit (and is explained in that section of the rubric). Keep in mind that initial deposits of $20 are required when opening or re-activating an account – although this will likely be a feature of your CreateAccount and UpdateAccount procedures rather than your deposit procedure. <br /> <br />For the purposes of this project, assume that policy concerning withdrawals, purchases via check card, and checks will be treated exactly the same (although if you choose that a bounced check should have a additional service charge/fee- this would be a great addition- but no additional credit will be awarded for doing so). It is recommended that you use a @transactionTypeID input <br />4<br />
  9. 9. Piggybank spec’s cont.<br />parameter for a withdrawal/purchases procedure- rather than utilize three separate procedures. When designing your withdrawal/purchases procedure- it is not necessary to combine the use of both overdraft accounts. I.E. first check that they have a specific overdraft and that there is enough of a balance in the specific overdraft account- if there is not enough money there, do NOT attempt to utilize the remaining balance from that specific overdraft account. Check next that they have the general overdraft, and if so that the balance of the originating account would not slip below -$400.00 to see if the withdrawal/purchase should succeed. <br /> <br />To further explain this: you should NOT process a $150 withdrawal/purchase by applying $50 from the specific overdraft and then $100 from the general. If there is not enough in the specific overdraft account- it should be taken from the general overdraft in full (or refused if it exceeds the limits of the general overdraft). <br /> <br />Transfers are a means for a customer to transfer funds between accounts freely for any reason. To transfer funds between accounts, a customer must be connected to an account through the CustomerAccounts table. Do not charge for transfers or allow balances to slip below 0 when a customer requests a transfer (There is no overdraft for a transfer). <br /> <br />UpdateAccount <br />You will also need to be able to update each account at various times. You may implement such functionality as you see fit (feel free to break down the processes into multiple procedures/functions should you wish). <br /> <br />Update Account should: <br />1) Add a customer to a given account (Insert into customerAccounts table) <br />2) Add a specific overdraft account (An Insert of a six digit Account number into the appropriate column in the Accounts table) <br />3) Add the general overdraft to an account (change the Bit field in the Accounts table) <br />4) Make an account active/inactive (As far as account status's I only put these two in via that XML script, but you may add as many as you wish, i.e. „Frozen account – FBI seizure‟, but only these two are necessary according to our rubric). <br /> <br />Otherwise, as stated before- if you choose to separate these features into separate stored procedures- this is also acceptable for full credit. <br /> <br />For #2 – adding the overdraft account, you cannot add just any account as an overdraft. It must in fact belong to at least one of the owners of the account that you are updating. This is a necessary validation included on the rubric as a grade point. <br /> <br />Interest Rates <br />The Savings account has a fixed interest rate, which is currently 3% per year. Be sure to insert this interest rate (include this in your final submission scripts). We may need to change this interest rate depending on external economic factors, and you will need to provide a procedure that can be used for this purpose. You will not be required to calculate any interest during the duration of this project, but there are some considerations you may approach that are listed in the „Extra Credit‟ section in the rubric. <br />5<br />
  10. 10. Piggybank spec’s cont.<br />DML Trigger <br />Deletions (not updates) from the Accounts table should be prevented via use of a DML Trigger. <br /> <br />Transactions: <br />Every action performed on an account ex. Deposit, Withdrawals, Purchases, Transfer, Fees etc, must be recorded. These transactions cannot be modified or deleted and therefore any corrections must be reflected by a new entry- and not a deletion. We would like you to prevent updates and deletions to the Transactions table through the use of a DML trigger. As there are (potentially) multiple customers associated with an account- be sure you record the Customer ID of the customer who performs a given transaction. <br /> <br />Additional Application Requirements: <br />The application will support all actions like Deposit, Withdraw/Purchase, Transfer funds, obtaining account history (of current month), account history (of any month), etc. <br /> <br />ATM Procedures <br />The Bank ATM application will utilize two procedures- GetBalance, shows current balance with last 5 transactions, and GetTransactions, which will show the transactions on an account for the last 30 days. Assume that these procedures can only be used after a customer has successfully logged in to an ATM, so input validations regarding customerID and accountID are unnecessary. <br /> <br />Statement Procedures <br />The Bank tellers will use a windows application to connect to the database and perform their duties. The teller will need to search for customers by phone, name, or account number. The teller will also need to obtain statement information by customer and account number. One procedure should obtain this information for a given customerID and accountID for the current month. A second should make this information available historically with additional @month and @year input parameters. A third procedure should list all Checking and Savings accounts for a given customerID. <br /> <br />Views <br />While an OLAP database is certainly also in the works for reporting purposes, we are requiring that for the time being, you utilize appropriately designed views (indexed views if possible), for each of the 5 required stored procedures above. Please enable Schemabinding for additional security. <br /> <br />Search Engine Queries <br />Please provide a means to search for customers and account information by Name, Phone Number, and AccountID. Procedures or Functions are encouraged here, but simple queries similar to your “Junglebooks” exercises during the TSQL week will suffice if necessary. <br /> <br />Triggers: <br />Please implement a DDL trigger to guard tables and views within your database from unwanted changes as well as the DML Triggers requested above. <br /> <br />XML Script/Data: <br />The data from the old system has been output to an XML file. You have been provided with a basic script for importing this data into the new application. <br />6<br />
  11. 11. Piggybank spec’s cont.<br />Test Scripts: <br />Please provide us with test scripts, which our testing department will use to evaluate your solution. These test scripts are worth 8 points, so please treat them with the appropriate importance. They should be easy to navigate, and use only test data that you can guarantee will be in the database (hint: because it‟s in the xml file, or that has been added by you within the script – i.e. CustomerID 31, or Account 100066 would be the first ones you could enter additionally via your procedures). <br /> <br />Deliverables: <br />Provide our IT department with all the scripts for creating the database, i.e. CREATE DATABASE… CREATE TABLE…. CREATE VIEW…. CREATE PROCEDURE… the OPENXML script, in one all-inclusive script. Please separate your CREATE TRIGGER scripts from the rest (as we will test these separately). Also provide at least one separate test script to test each object. You are not specifically required to separate your test scripts into two- between successful tests and failed validation tests as a requirement but it is certainly a good idea to do so if your script is difficult to navigate. Please .zip up each of the scripts (if you have more than 7, you should certainly combine them) and name the file according to the following convention: Piggybank_YourName_05-14-10.zip <br /> <br />Good Luck: <br />It is suggested that first you build the database according to the diagram provided and then utilize the PiggyBank OPENXML script.sql to insert the data.<br />7<br />
  12. 12. Database Schema<br />8<br />
  13. 13. Sample Stored Procedure<br />--==============================================================<br />/****** Object: StoredProcedure [dbo].[uspUpdateInterestRate] ******/<br />-- Installation: SetFocus<br />-- Author: William P. Ringel<br />-- Script Date: 11/23/2010 10:54:05<br />-- Change History: None<br />--<br />--==============================================================<br />-- error numbers<br />-- 1 = Interest Rate is required<br />-- 2 = AccountTypeID is required<br />-- 3 = AccountTypeID is invalid<br />--==============================================================<br />CREATE PROCEDURE dbo.uspUpdateInterestRate<br />(<br /> @InterestRate decimal(2,2) = NULL,<br /> @AccountTypeID tinyint = NULL<br />)<br />AS<br />BEGIN<br /> SET NOCOUNT ON<br />END<br />BEGIN TRY<br /> --Checks if the Interest Rate is null<br /> IF @InterestRate is null<br /> BEGIN<br /> RAISERROR('Interest rate must be entered',14,1)<br /> END<br /> --Checks if the AccountTypeID is null<br /> IF @AccountTypeID is null<br /> BEGIN<br /> RAISERROR('AccountTypeID must be entered',14,2)<br /> END<br /> --Checks if the AccountTypeID is valid<br /> IF NOT EXISTS (SELECT * FROM AccountType<br /> WHERE AccountTypeID = @AccountTypeID)<br /> BEGIN<br /> RAISERROR('Account Type is invalid',14,3)<br /> END BEGIN TRAN<br /> --Inserts a new item into the Customer table<br /> UPDATE dbo.AccountType<br /> SET InterestRate = @InterestRate<br /> WHERE AccountTypeID = @AccountTypeID <br /> COMMIT<br />END TRY<br />BEGIN CATCH<br /> --If the proc was in a transaction when the error occurred<br /> if @@trancount> 0<br /> BEGIN<br /> ROLLBACK<br /> END<br /> --Raises a new error to the caller<br /> DECLARE @ERRMSG NVARCHAR(1000)<br /> ,@ERRSEVERITY int<br /> ,@ERRSTATE int<br /> SELECT @ERRMSG = ERROR_MESSAGE(), @ERRSEVERITY = ERROR_SEVERITY(), @ERRSTATE= ERROR_STATE()<br /> RAISERROR(@ERRMSG,@ERRSEVERITY,@ERRSTATE)<br />END CATCH<br /> RETURN<br />9<br />
  14. 14. Database Trigger<br />-- ================================================<br />-- Trigger to Prevent Drop/Alter on Views/Tables <br />-- ================================================<br />IF EXISTS (SELECT * FROM sys.triggers <br /> WHERE parent_class_desc = 'DATABASE' AND <br /> name = N'ddlDatabaseStopDDLEvents')<br /> DISABLE TRIGGER [ddlDatabaseStopDDLEvents] ON DATABASE<br />GO<br />USE [PiggyBank]<br />GO<br />/****** Object: DdlTrigger [ddlDatabaseTriggerLog] Script Date: 11/24/2010 16:35:15 ******/<br />IF EXISTS (SELECT * FROM sys.triggers <br /> WHERE parent_class_desc = 'DATABASE' AND <br /> name = N'ddlDatabaseStopDDLEvents')<br /> DROP TRIGGER [ddlDatabaseStopDDLEvents] ON DATABASE<br />GO<br />USE [PiggyBank]<br />GO<br />/****** Object: DdlTrigger [ddlDatabaseTriggerLog] Script Date: 11/24/2010 16:35:15 ******/<br />SET ANSI_NULLS ON<br />GO<br />SET QUOTED_IDENTIFIER ON<br />GO<br />] ON DATABASE<br />--GO<br />CREATE TRIGGER [ddlDatabaseStopDDLEvents] ON DATABASE <br /> FOR DROP_TABLE, ALTER_TABLE, DROP_VIEW, ALTER_VIEW<br /> AS <br />BEGIN<br />SET NOCOUNT ON<br />END<br />BEGIN <br /> RAISERROR ('You cannot modify this database - period!!!',16,-1)<br /> ROLLBACK <br />END <br />GO<br />--DISABLE TRIGGER [ddlDatabaseStopDDLEvents<br />10<br />
  15. 15. Account Delete Trigger<br />-- ================================================<br />-- Trigger to Prevent Deletes to Account table <br />-- ================================================<br />USE PiggyBank<br />GO<br />/****** Object: Trigger [trAccountDelete] Script Date: 11/24/2010 16:09:16 ******/<br />IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[trAccountDelete]'))<br />DROP TRIGGER [dbo].[trAccountDelete]<br />GO<br />SET ANSI_NULLS ON<br />GO<br />SET QUOTED_IDENTIFIER ON<br />GO<br />-- =============================================<br />-- Author: William Ringel<br />-- Create date: 11/23/2010<br />-- Description: Instead of on Account - Delete<br />-- =============================================<br />CREATE TRIGGER dbo.trAccountDelete<br /> ON dbo.Account <br /> INSTEAD OF DELETE<br />AS<br />BEGIN TRY<br /> BEGIN<br /> -- SET NOCOUNT ON added to prevent extra result sets from<br /> -- interfering with SELECT statements.<br /> SET NOCOUNT ON;<br /> RAISERROR('Deleting rows from the Account table is forbidden',14,1)<br /> END<br />END TRY<br />BEGIN CATCH <br />--If triggered from within a transaction<br /> if @@trancount> 0<br /> BEGIN<br /> ROLLBACK<br /> END<br /> --Raises a new error to the caller<br /> DECLARE @ERRMSG NVARCHAR(1000)<br /> ,@ERRSEVERITY int<br /> ,@ERRSTATE int<br /> SELECT @ERRMSG = ERROR_MESSAGE(), @ERRSEVERITY = ERROR_SEVERITY(), @ERRSTATE= ERROR_STATE()<br /> RAISERROR(@ERRMSG,@ERRSEVERITY,@ERRSTATE)<br />END CATCH<br /> RETURN<br />GO<br />11<br />
  16. 16. Transaction Update Trigger<br />-- ================================================<br />-- Trigger to Prevent Updates to Transactions table<br />-- ================================================<br />USE PiggyBank<br />GO<br />/****** Object: Trigger [trTransactionsUpdate] Script Date: 11/24/2010 16:09:16 ******/<br />IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[trTransactionsUpdate]'))<br />DROP TRIGGER [dbo].[trTransactionsUpdate]<br />GO<br />SET ANSI_NULLS ON<br />GO<br />SET QUOTED_IDENTIFIER ON<br />GO<br />-- =============================================<br />-- Author: William Ringel<br />-- Create date: 11/23/2010<br />-- Description: Instead of on Transactions - Update<br />-- =============================================<br />CREATE TRIGGER dbo.trTransactionsUpdate<br /> ON dbo.Transactions <br /> INSTEAD OF UPDATE<br />AS<br />BEGIN TRY<br /> BEGIN<br /> -- SET NOCOUNT ON added to prevent extra result sets from<br /> -- interfering with SELECT statements.<br /> SET NOCOUNT ON;<br /> RAISERROR('Updating Transactions table is forbidden',14,1)<br /> END<br />END TRY<br />BEGIN CATCH <br />--If triggered from within a transaction<br /> if @@trancount> 0<br /> BEGIN<br /> ROLLBACK<br /> END<br /> --Raises a new error to the caller<br /> DECLARE @ERRMSG NVARCHAR(1000)<br /> ,@ERRSEVERITY int<br /> ,@ERRSTATE int<br /> SELECT @ERRMSG = ERROR_MESSAGE(), @ERRSEVERITY = ERROR_SEVERITY(), @ERRSTATE= ERROR_STATE()<br /> RAISERROR(@ERRMSG,@ERRSEVERITY,@ERRSTATE)<br />END CATCH<br /> RETURN<br />GO<br />12<br />
  17. 17. Transaction Delete Trigger<br />-- ================================================<br />-- Trigger to Prevent Deletes to Transactions table<br />-- ================================================<br />USE PiggyBank<br />GO<br />/****** Object: Trigger [trTransactionsDelete] Script Date: 11/24/2010 16:09:16 ******/<br />IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[trTransactionsDelete]'))<br />DROP TRIGGER [dbo].[trTransactionsDelete]<br />GO<br />SET ANSI_NULLS ON<br />GO<br />SET QUOTED_IDENTIFIER ON<br />GO<br />-- =============================================<br />-- Author: William Ringel<br />-- Create date: 11/23/2010<br />-- Description: Instead of on Transactions - Delete<br />-- =============================================<br />CREATE TRIGGER dbo.trTransactionsDelete<br /> ON dbo.Transactions <br /> INSTEAD OF DELETE<br />AS<br />BEGIN TRY<br /> BEGIN<br /> -- SET NOCOUNT ON added to prevent extra result sets from<br /> -- interfering with SELECT statements.<br /> SET NOCOUNT ON;<br /> RAISERROR('Deleting rows from the Transactions table is forbidden',14,1)<br /> END<br />END TRY<br />BEGIN CATCH <br />--If triggered from within a transaction<br /> if @@trancount> 0<br /> BEGIN<br /> ROLLBACK<br /> END<br /> --Raises a new error to the caller<br /> DECLARE @ERRMSG NVARCHAR(1000)<br /> ,@ERRSEVERITY int<br /> ,@ERRSTATE int<br /> SELECT @ERRMSG = ERROR_MESSAGE(), @ERRSEVERITY = ERROR_SEVERITY(), @ERRSTATE= ERROR_STATE()<br /> RAISERROR(@ERRMSG,@ERRSEVERITY,@ERRSTATE)<br />END CATCH<br /> RETURN<br />GO<br />13<br />
  18. 18. Search Accounts by Phone<br />14<br />
  19. 19. Search Accounts by Customer ID<br />15<br />
  20. 20. Search Accounts by Account ID<br />16<br />
  21. 21. Standard Withdrawal<br />17<br />
  22. 22. Overdrawn Withdrawal<br />18<br />
  23. 23. Deposit<br />19<br />
  24. 24. Close Account<br />20<br />
  25. 25. Reopen Account<br />21<br />
  26. 26. Transfer between Accounts<br />22<br />
  27. 27. Account Listing<br />23<br />
  28. 28. Get ATM Balance<br />24<br />
  29. 29. 30 Day Transaction History<br />25<br />
  30. 30. Monthly Transaction History<br />26<br />
  31. 31. Sample Reports from SSRS Labs<br />27<br />
  32. 32. Sample Pie Chart<br />28<br />
  33. 33. Sample Stacked Bar Chart<br />29<br />
  34. 34. Matrix with Embedded Gauge<br />30<br />
  35. 35. SSIS / SSRS Project<br />The company Mini-AD is interested in taking historical spreadsheet(CSV) data for their list of products, vendors, and purchase order history, and loading the data into a SQL Server database.<br />Mini-AD wants the load process to work on a go-forward basis, so that new/modified products/vendors/orders can be loaded in SQL Server as well.<br />Mini-AD’s load process for orders should validate that any incoming orders with product numbers or vendor numbers that do not match an existing product/vendor number should NOT be written to the SQL Server database. Instead, this data should be written to an exception file and emailed.<br />Mini-AD also wishes to build two reports: one for top vendor and product sales, and the second for sales by vendor and ship method across years.<br />31<br />
  36. 36. ERD Diagram<br />32<br />
  37. 37. Database Creation<br />33<br />
  38. 38. Vendor Load<br />34<br />
  39. 39. Product Load<br />35<br />
  40. 40. Shipper Load<br />36<br />
  41. 41. Orders Load<br />37<br />
  42. 42. Top n Products within Top n Vendors Report<br />38<br />
  43. 43. Vendor Sales by Year Report<br />39<br />
  44. 44. Report Deployment<br />Take the report rptSalesMatrixbyYear and deploy it to localhost.<br />Create a shared schedule to run every night at midnight.<br />Create 2 linked reports for the 2 ship methods of Cargo Transport 5 (ShipMethodID of 5) and ZY – Express (ShipMethodID of 2).<br />Call the 2 linked reports linkedrptSalesMatrixByYear_CargoTransport and linkedrptSalesMatrixByYear_ZYExpress.<br /> Create a report snapshot associated with each of the 2 linked reports and with the shared schedule. Make sure to save executed snapshots to report history.<br />Create 2 email subscriptions associated with each of the 2 linked reports. Email a PDF output to xyz@yahoo.com<br />(Make sure the margins of the report are good and that no page truncation/extra pages occur). Associate the 2 email subscriptions to the shared schedule<br />40<br />
  45. 45. WLR Data Managers, LLC<br />Final Team Project<br />The Blockflix Database<br />41<br />
  46. 46. The WLR Data Design<br />The Blockflix Database<br />Bill Ringel<br />Clive Lendore<br />& Paulette Warrick, Team Leader<br /> Offers control<br /> Security<br /> Centralization<br />42<br />
  47. 47. Your Normalized Database<br />43<br />
  48. 48. Data Control Design<br />Managing <br />The Blockflix Database<br />Manage Your<br />Inventory<br />Customers<br />Members<br />& Transactions<br />44<br />
  49. 49. Data Control Examples<br />Embedded Procedures<br />Embedded Triggers<br />Hidden Data Restrictions<br />Transactions<br />Billing<br />Manage Inventory<br />45<br />
  50. 50. 46<br />
  51. 51. 47<br />
  52. 52. Managing The Memberships<br />48<br />
  53. 53. 49<br />
  54. 54. XML Formatted Data<br /><?xml version="1.0" ?> <br /><Rowset><br /> <Row><br /> <MovieID>1</MovieID> <br /> <Title>"The Great Locomotive Chase"</Title> <br /> <Rating>1</Rating><br /> <StarRating>4</StarRating><br /> <Description>"Edison's Famous"</Description> <br /> <Genre>1</Genre> <br /> <ReleaseYear>1979</ReleaseYear><br /> <MoviePrice>25.99</MoviePrice> <br /> <StoreID>1</StoreID> <br /> <Quantity>10</Quantity><br /> <A1_CastTypeID>1</A1_CastTypeID><br /> <A1_CastMemberID>1</A1_CastMemberID><br /> <A2_CastTypeID>1</A2_CastTypeID><br /> <A2_CastMemberID>2</A2_CastMemberID><br /> <A3_CastTypeID>1</A3_CastTypeID><br /> <A3_CastMemberID>4</A3_CastMemberID><br /> <P1_CastTypeID>3</P1_CastTypeID><br /> <P1_CastMemberID>5</P1_CastMemberID><br /> <P2_CastTypeID>3</P2_CastTypeID> <br /> <P2_CastMemberID>8</P2_CastMemberID><br /> <D1_CastTypeID>2</D1_CastTypeID><br /> <D1_CastMemberID>5</D1_CastMemberID><br /> <D2_CastTypeID>2</D2_CastTypeID><br /> <D2_CastMemberID>8</D2_CastMemberID><br /> </Row><br /></Rowset><br />50<br />
  55. 55. XML Schema<br /><?xml version="1.0"?><br /><xs:schemaattributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><br /> <xs:element name="Rowset"><br /> <xs:complexType><br /> <xs:sequence><br /> <xs:elementminOccurs="0" maxOccurs="unbounded" name="Row"><br /> <xs:complexType><br /> <xs:sequence><br /> <xs:elementminOccurs="0" name="MovieID" type="xs:unsignedInt" /><br /> <xs:elementminOccurs="0" name="Title" type="xs:string" /><br /> <xs:elementminOccurs="0" name="Rating" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="StarRating" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="Description" type="xs:string" /><br /> <xs:elementminOccurs="0" name="Genre" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="ReleaseYear" type="xs:unsignedShort" /><br /> <xs:elementminOccurs="0" name="MoviePrice" type="xs:decimal" /><br /> <xs:elementminOccurs="0" name="StoreID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="Quantity" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="A1_CastTypeID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="A1_CastMemberID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="A2_CastTypeID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="A2_CastMemberID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="A3_CastTypeID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="A3_CastMemberID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="P1_CastTypeID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="P1_CastMemberID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="P2_CastTypeID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="P2_CastMemberID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="D1_CastTypeID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="D1_CastMemberID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="D2_CastTypeID" type="xs:unsignedByte" /><br /> <xs:elementminOccurs="0" name="D2_CastMemberID" type="xs:unsignedByte" /><br /> </xs:sequence><br /> </xs:complexType><br /> </xs:element><br /> </xs:sequence><br /> </xs:complexType><br /> </xs:element><br /></xs:schema><br />51<br />
  56. 56. XML Data Load<br />52<br />
  57. 57. Online Customers<br />Movie Queue<br />53<br />
  58. 58. 54<br />
  59. 59. Governing Movie Checkouts<br />55<br />
  60. 60. 56<br />
  61. 61. 57<br />
  62. 62. 58<br />
  63. 63. Managing Lost Or Damaged Inventory<br />59<br />
  64. 64. 60<br />
  65. 65. Data Maintenance Design<br />Weekly Data Backups<br />& <br />Database Replication<br />61<br />
  66. 66. 62<br />
  67. 67. 63<br />
  68. 68. Data Maintenance Design<br />Reports<br />64<br />
  69. 69. 65<br />
  70. 70. Million Dollar Baby<br />Jaws<br />Jaws 2<br />Moby Dick<br />66<br />
  71. 71. 67<br />
  72. 72. Security<br />Seated behind the Firewall<br />System Configuration Checker <br />Authentication<br />Schema Management<br />Granular Role Authorizations<br />68<br />
  73. 73. Security Levels<br />69<br />
  74. 74. 70<br />
  75. 75. Kiosk Management Design<br />Adding Movies<br />Fee Triggers <br />Transactions Management<br />71<br />
  76. 76. Video Streaming Proposal<br />Our VCMS<br />72<br />
  77. 77. Video Content Management SystemOverview<br />What is VCMS?<br />A platform being deployed to accelerate and increase the capacity for content processing<br />The VCMS has a targeted Delivery of 4Q 2011<br />Video Content Management System (VCMS) Functions:<br />Ingests video content using multiple input sources and formats<br />Transforms ingested video into appropriate formats for distribution<br />Publishes transformed videos to multiple distribution channels<br />73<br />
  78. 78. Digital Distribution Clearinghouse (DDC)Video CMS + CDN<br />VeriCast has proposed a new WLR product offering called DDC that addresses members<br />DDC is essentially a product bundling of BlockFlix and WMR’s VCMS services<br />74<br />
  79. 79. Conclusion<br />WLR Data Managers Delivers:<br />Security<br />Control<br />Centralization<br />Sustainable Data Management<br />A world of Opportunity<br />Thank You<br />75<br />
  80. 80. What is SetFocus?<br />The SetFocus SQL Master’s Program is an intensive, hands–on, project oriented program allowing knowledge and valuable experience putting the SQL skill set to use in a simulated work environment.<br />I received over 300 hours of in-depths hands on experience focused on SQL Development. <br />SetFocus projects are real world projects that are distributed just as I would receive in a position. I received project specifications and was expected to identify best courses of action with deadlines set for completion.<br />76<br />

×