INFO 330 Forward Engineering Project From User To Info Logical Design 1. User studies 2. Info model 1. Logical Design 1. 2. 2. User to type User to access structure Physical Design 1. 2. 3. Data model Queries Some logic 3. Funnel design 4. Page design User to Info Type Info need: - What kinds of cars are there? - How do you buy a car? - What do my friends think? - What car suits my personality? - What can I afford ? Info behavior: - Ask my friends & family - Look at a lot of cars and think - Google for certain cars - Look at lots of pictures/videos Info type: Cool Car - Only most basic car facts - Lots of info on styling - Lots of media - Stories and anecdotes - Make it easy to share - Logistics not statistics - Chatty and friendly style Michelle What’s the coolest car for me? Info Type Model Controlled vocab Info need: - What kinds of cars are there? - How do you buy a car? - What do my friends think? - What car suits my personality? - What can I afford ? Info type: Cool Car Content - Only most basic car facts - Lots of info on styling - Lots of media - Stories and anecdotes - Logistics not statistics Dealer Cool Car name shortDescription (basic rt) longDescription (full rt) features extras (o) personalityTraits bestUses whoOwnsOne (o) media stories (o) price name street1 street2 (o) city Basic Rich Text state • p • b zip • i phone • u email facebookURL (o) rating (0) shortDescription (basic rt) longDescription (full rt) Full Rich Text • p • ul • ol • media • b, i, u, • Inline link (e or i) in p, li Requirements for your Info Type Model 1. 2. 3. 4. At least 2 info types At least one rich text attribute in each type At least 3 controlled vocabs At least 12 tables in the data model Notice the difference between an info type and an entity How will you keep the scope under control? Deliverables for your info Type Model • Notes that link the model to the info persona • Diagram that – Shows all the attributes of each type – Flags attributes that are • rich text • controlled vocabs • optional • Logical design of rich text attributes – Account for inline links for sure – Account for other stuff as needed • Physical design: Data model – Showing only the info types modeled (no access structures – Relationships – Keys • Be able to discuss and justify your choices User to Access Structure Hierarchies Why would you use a hierarchy? The information • The information has categories and subcategories • You want to show the proper names for your information • Some pieces of info “inherit” from others The user • Wants to know, “What is in here?” • Wants an overview of a lot of info • Is trying to learn about the information Indexes When do you need an index? When the information has • Common attributes (like title or date) • Some attributes that clearly divide it (author, keywords, etc.) When the user wants • To know “Is it in here?” • Quick access to the middle of the information • The info sliced by attributes they care about Associations When do you need associations? When the info • Natural paths from one item directly to another • Is organized like a web When the user • Might need to be in one place when she is presently in another place • Might be following a scent toward the right info Sequence When do you need a sequence? When the information • Has a natural order • Is like a story • Is like a procedure • Has prerequisites or post-requisites When the user • Does not know where to start • Is trying to do something or learn • Needs to see what you want to show them • “Needs to see an ad for another item within the current item. Info need: - What kinds of cars are there? Hierarchy - How do you buy a car? Sequence - What do my friends think? - What car suits my personality? Index - What can I afford ? Index Info behavior: - Ask my friends & family - Look at a lot of cars and think - Google for certain cars Index - Look at lots of pictures/videos Association Hierarchy • Cars by type Association Sequence Index (car) Association • • • • • • Features Personality trait Uses Owners Price Car name Association Index (dealer) Association Sequence • • • • • • Cars like this one Other dealers with this car Steps to buying a car Cars we want you to see Top Dealers Index search results • • • Zip City Name Full text Index • • Car.longDesc Dealer.longDesc To keep in mind • Beware scope creep – I did not model the user on purpose – I did not model steps to buying on purpose • You WILL revise this work – Every new thing you do influences all the stuff you have done • Might be useful to do some early page sketch's to help you think. – But don’t enslave yourself to them – This is about the info and the user, not the presentation. That comes later Access structure info model requirements Info Model • Answers to the AS questions • At least one AS of each type • Notes and diagrams that link your persona and AS answers to AS chosen • Named structures that show their function Data model • Add to data model to implement AS • Separate data model diagram for each AS – For indexes with no extra tables, show the existing tables that are needed for the index – Include queries if there are one or two key ones – Include a BRIEF logic description if it will take more than a query to work with the data that is retrieved. Access Structure Questions Hierarchy • Are there natural categories? • Are there a lot of items? • Do items behave sometimes as a family (have siblings and parents?) • Is the user trying to learn something? • Will the user ever want to know what’s in here? Index • Are there a lot of items? • Are there short attributes (e.g., title and author) that all items of the type have? • Are items naturally thought about by the user based on these common attributes (e.g., it is natural to think of articles by author) • Are there words that people use to describe items of this type that don’t actually appear in the items (e.g., someone might think “cat” but the items always say “feline” Info Access Association • Are there natural paths from one item to others that are related to it? • Are there prerequisites to items that should be shown • Are there next steps that should be shown • Are there words or phrases in the text that should be links? Sequence • Is there a natural order to the items of this type? • Do some or all items form a sort of story? • Do items come together to form procedures? • Are there items that you definitely want users to see? Info Model Physical Design Info Type Model Controlled vocab Info need: - What kinds of cars are there? - How do you buy a car? - What do my friends think? - What car suits my personality? - What can I afford ? Info type: Cool Car Content - Only most basic car facts - Lots of info on styling - Lots of media - Stories and anecdotes - Logistics not statistics Dealer Cool Car name shortDescription (basic rt) longDescription (full rt) features extras (o) personalityTraits bestUses whoOwnsOne (o) media stories (o) price name street1 street2 (o) city Basic Rich Text state • p • b zip • i phone • u email facebookURL (o) rating (0) shortDescription (basic rt) longDescription (full rt) Full Rich Text • p • ul • ol • media • b, i, u, • Inline link (e or i) in p, li Info Types Physical Design Dealer Car Car-Dealer Access Structures Physical Design Info need: - What kinds of cars are there? Hierarchy - How do you buy a car? Sequence - What do my friends think? - What car suits my personality? Index - What can I afford ? Index Info behavior: - Ask my friends & family - Look at a lot of cars and think - Google for certain cars Index - Look at lots of pictures/videos Association Hierarchy • Cars by type Association Sequence Index (car) Association • • • • • • Features Personality trait Uses Owners Price Car name Association Index (dealer) Association Sequence • • • • • • Cars like this one Other dealers with this car Steps to buying a car Cars we want you to see Top Dealers Index search results • • • Zip City Name Full text Index • • Car.longDesc Dealer.longDesc Access Structure Physical Design Hierarchy Query SELECT FROM dbo.coolCar.name, dbo.coolCar.shortDesc, dbo.car_carTypeTax.shortDesc AS Expr1, dbo.carTypeTaxonomy.name AS Expr2, dbo.carTypeTaxonomy.shortDesc AS Expr3, dbo.carTypeTaxonomy.parentId dbo.car_carTypeTax INNER JOIN dbo.carTypeTaxonomy ON dbo.car_carTypeTax.carTaxid = dbo.carTypeTaxonomy.id INNER JOIN WHERE dbo.coolCar ON dbo.car_carTypeTax.carId = dbo.coolCar.id (dbo.carTypeTaxonomy.parentId IS NULL) Logic 1. Use query above to find root category 2. Use a recursive function to find child levels Feature Index SELECT dbo.coolCar.name, dbo.coolCar.shortDesc, dbo.feature.name AS featureName, dbo.feature.shortDesc AS Expr3 FROM dbo.car_feature INNER JOIN dbo.coolCar ON dbo.car_feature.carId = dbo.coolCar.id INNER JOIN dbo.feature ON dbo.car_feature.featureId = dbo.feature.id ORDER BY featureName Types: • Standard • Optional Personality Index SELECT TOP (100) PERCENT dbo.coolCar.name, dbo.coolCar.shortDesc, dbo.car_personality.shortDesc AS Expr1, dbo.personalityTrait.name AS personalityName, dbo.personalityTrait.shortDesc AS Expr3 FROM dbo.coolCar INNER JOIN dbo.car_personality ON dbo.coolCar.id = dbo.car_personality.carId INNER JOIN dbo.personalityTrait ON dbo.car_personality.personalityId = dbo.personalityTrait.id ORDER BY personalityName Use Index SELECT TOP (100) PERCENT dbo.coolCar.name, dbo.coolCar.shortDesc, dbo.car_use.shortDesc AS Expr1, dbo.uses.name AS usesName, dbo.uses.shortDesc AS Expr3 FROM dbo.coolCar INNER JOIN dbo.car_use ON dbo.coolCar.id = dbo.car_use.carId INNER JOIN dbo.uses ON dbo.car_use.useId = dbo.uses.id ORDER BY usesName Owner index SELECT TOP (100) PERCENT dbo.coolCar.name, dbo.coolCar.shortDesc, dbo.owner.name AS ownerName, dbo.owner.shortDescription FROM dbo.coolCar INNER JOIN dbo.car_owner ON dbo.coolCar.id = dbo.car_owner.carId INNER JOIN dbo.owner ON dbo.car_owner.ownerId = dbo.owner.id ORDER BY ownerName Price Index SELECT TOP (100) PERCENT dbo.coolCar.name, dbo.coolCar.shortDesc, dbo.car_dealer.price, dbo.car_dealer.shortDesc AS Expr1 FROM dbo.coolCar INNER JOIN dbo.car_dealer ON dbo.coolCar.id = dbo.car_dealer.carId ORDER BY dbo.car_dealer.price Car Title Index SELECT TOP (100) PERCENT name, shortDesc FROM dbo.coolCar ORDER BY name Dealer name, zip and city indexes SELECT TOP (100) PERCENT name, zip, city, shortDesc FROM dbo.dealer ORDER BY name SELECT TOP (100) PERCENT name, zip, city, shortDesc FROM dbo.dealer ORDER BY zip SELECT TOP (100) PERCENT name, zip, city, shortDesc FROM dbo.dealer ORDER BY city Assoc: Similar cars Logic 1. For the current car, find all the terms that describe it in each index (personality, features, etc.) 2. For each other car, find the term overlap with the current car 3. All overlapping cars are related 4. Order the list of related cars by 1. The number of overlaps 2. The importance of each index Assoc: Dealers with the Same Car SELECT TOP (100) PERCENT dbo.dealer.name, dbo.car_dealer.price, dbo.car_dealer.shortDesc, dbo.coolCar.name AS Expr1, dbo.coolCar.id, dbo.dealer.id AS dealerId FROM dbo.car_dealer INNER JOIN dbo.coolCar ON dbo.car_dealer.carId = dbo.coolCar.id INNER JOIN dbo.dealer ON dbo.car_dealer.dealerId = dbo.dealer.id WHERE (dbo.coolCar.id = 3) AND (dbo.car_dealer.dealerId <> 4) ORDER BY dbo.car_dealer.price Seq: Dealers for you Logic 1. Retrieve all dealers 2. Order the results 1. Use city, state, zip to compare against what we know of the user’s location 2. Use what we know of the cars the user has searched for 3. Use rating with a high weight (that’s how we market certain dealers) SELECT FROM WHERE TOP (100) PERCENT dbo.dealer.name, dbo.dealer.city, dbo.dealer.state, dbo.dealer.zip, dbo.dealer.rating, dbo.car_dealer.carId dbo.dealer INNER JOIN dbo.car_dealer ON dbo.dealer.id = dbo.car_dealer.dealerId (dbo.car_dealer.carId = 3) OR (dbo.car_dealer.carId = 4) Seq: Ordering search results • All algorithm, will cover in the code spec