slides

advertisement
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
Download