-- ordered by recency"create index labs_by_patient_and_date onlabs(patient_id, test_date);-- make it fast to query <strong>for</strong>-- "complete history <strong>for</strong> patient #4527-- insulin levels"create index labs_by_patient_and_test onlabs(patient_id, test_name);Note that this table doesn't have a lot of integrity constraints. If youwere to specify patient_id as unique that would limit each hospitalpatient to only having one test done. Nor does it work to specify thecombination of patient_id and test_date as unique because there arefancy machines that can do multiple tests at the same time on asingle blood sample, <strong>for</strong> example.We can apply this idea to user registration:create table users (user_id integer primary key,first_names varchar(50),last_name varchar(50) not null,emailvarchar(100) not null unique,password varchar(30) not null,registration_date timestamp(0));create table users_extra_info (user_info_id integer primary key,user_id not null referencesusers,field_name varchar(100) not null,field_type varchar(100) not null,--one of the three columns below will be non-NULLvarchar_value varchar(4000),blob_value blob,date_value timestamp(0),check ( not (varchar_value is null andblob_value is null anddate_value is null))-- in a real system, you'd probably have-- additional columns-- to store when each row was inserted and-- by whom76-- here is the table <strong>for</strong> elements that are unique to an-- object type (the housekeeping elements can be defined-- implicitly in the source code <strong>for</strong> the application-- generator); there will be one row in-- the metadata table per elementcreate table km_metadata_elements (metadata_id integer primary key,table_name not null referenceskm_metadata_object_types,column_name varchar(30) not null,pretty_name varchar(100) not null,abstract_data_type varchar(30) not null,-- ie. "text" or "shorttext" "boolean" "user"-- this one is not null except when abstract_data_type-- is "user"oracle_data_type varchar(30), -- "varchar(4000)"-- e.g., "not null" or-- "check foobar in ('christof', 'patrick')"extra_sql varchar(4000),-- values are 'text', 'textarea', 'select', 'radio',-- 'selectmultiple', 'checkbox', 'checkboxmultiple',-- 'selectsql'presentation_type varchar(100) not null,-- e.g., <strong>for</strong> textarea, this would be "rows=6 cols=60",-- <strong>for</strong> select, Tcl list,-- <strong>for</strong> selectsql, an SQL query that returns N district-- values <strong>for</strong> email addresses mailto:presentation_options varchar(4000),-- pretty_name is going to be the short prompt,-- e.g., <strong>for</strong> an update page, but we also need-- something longer if we have to walk the user-- through a long <strong>for</strong>mentry_explanation varchar(4000),-- if they click <strong>for</strong> yet more helphelp_text varchar(4000),-- note that this does NOT translate into a "not null"-- constraint in Oracle if we did this, it would-- preclude an interface in which users create rows-- incrementallymandatory_p char(1)check (mandatory_p in ('t','f')),-- ordering in Oracle table creation, 0 would be on-- top, 1 underneath, etc.sort_key integer,273
and start the high-level document <strong>for</strong> this module with (a) a statementof purpose <strong>for</strong> the subsystem, and (b) a list of object types,housekeeping elements shared among types, and type-specificelements.For ease of evaluation and interaction with your classmates, wesuggest placing the user pages at http://yourservername/km/.15.4 Exercise 2: Design a Metadata Data ModelThe document that you wrote in the preceding exercise is a goodbasis <strong>for</strong> discussion among your team members, the client, andteaching assistants. However it is not machine-readable. In theorynothing would be wrong with developing a machine-readablemetadata repository in a tab-separated file system file, to be editedwith a text editor. In practice, however, systems are cleaner whenthere are fewer mechanisms underneath. Thus far your primarysource of persistence has been the relational database managementsystem so you might as well use that <strong>for</strong> your metadata repository aswell. At the very least, the database is where a programmer new tothe project would expect to find the metadata.Here's an example SQL data model <strong>for</strong> a metadata repository:-- note that this is designed <strong>for</strong> the Oracle 8i/9i RDBMS-- we'll have one row in this table <strong>for</strong> every object type-- and thus <strong>for</strong> every new SQL table that gets defined; an-- object type and its database table name are the same;-- Oracle limits schema objects to 30 characters and thus-- we limit a table_name to 21 characters so that we can-- have some freedom to create schema objects whose names-- are prefixed with an object type);-- make it fast to get all extra fields-- <strong>for</strong> a particular usercreate index users_extra_info_by_user onusers_extra_info(user_id);Here is a example of how such a data model might be filled:users tableUser_id first_names last_name email password1 Wile E. Coyote supergenius@yahoo.com IFUx42bQzgMjEuser_info_id user_id field_nameusers_extra_info tablefield_typevarchar_value1 1 birthdate date -- --2 1 biography blob_text --3 1aim_screen_nameblob_valueCreatedby ChuckJones...string iq207 -- --4 1 annual_income number 35000 -- --date_value1949-09-17---- a "pretty name" is a synonym used when presenting-- pages to users; the prettiness could be as simple as-- replacing underscores with spaces or spelling out-- abbreviations;-- e.g., <strong>for</strong> an object type of "airplane_design", the-- pretty <strong>for</strong>m might be "airplane design", and-- pretty_plural "airplane designs"create table km_metadata_object_types (table_name varchar(21) primary key,pretty_name varchar(100) not null,pretty_plural varchar(100));27277
- Page 1 and 2:
SoftwareEngineering forInternetAppl
- Page 3 and 4:
Signature: ________________________
- Page 5 and 6:
end-users. We use every opportunity
- Page 7 and 8:
• availability of magnet content
- Page 9 and 10:
• we want to see if a student is
- Page 11 and 12:
you supply English-language queries
- Page 13 and 14:
What to do during lecturesWe try to
- Page 15 and 16:
The one-term cram courseWhen teachi
- Page 17 and 18:
332• spend a term learning how to
- Page 19 and 20:
Once we've taught students how to b
- Page 21 and 22:
has permission to perform each task
- Page 23 and 24:
UDDIUnixcustomer's credit card. If
- Page 25 and 26: thousands of concurrent users. This
- Page 27 and 28: OraclePerlnamed XYZ" without the pr
- Page 29 and 30: LDAPLinuxbits per color, a vastly s
- Page 31 and 32: FilterFirewallFlat-fileGIF318functi
- Page 33 and 34: when there is an educational dimens
- Page 35 and 36: system. The authors of the core pro
- Page 37 and 38: Sign-OffsTry to schedule comprehens
- Page 39 and 40: scheduling goals that both you and
- Page 41 and 42: Client Tenure In Job (new, mid-term
- Page 43 and 44: ReferencesEngagement ManagementSQL*
- Page 45 and 46: Decision-makers often bring senior
- Page 47 and 48: presentation to a panel of outsider
- Page 49 and 50: 300always been written by programme
- Page 51 and 52: 17.3 Professionalism in the Softwar
- Page 53 and 54: Try to make sure that your audience
- Page 55 and 56: Chapter 17WriteupIf I am not for my
- Page 57 and 58: Suppose that an RDBMS failure were
- Page 59 and 60: analysis programs analyzing standar
- Page 61 and 62: at 9 hours 11 minutes 59 seconds pa
- Page 63 and 64: found" will result in an access log
- Page 65 and 66: 15.18 Time and MotionThe team shoul
- Page 67 and 68: select 227, 891, 'algorithm', curre
- Page 69 and 70: create table km_object_views (objec
- Page 71 and 72: • object-create• object-display
- Page 73 and 74: The trees chapter of SQL for Web Ne
- Page 75: );274-- ordering within a form, low
- Page 79 and 80: Example Ontology 2: FlyingWe want a
- Page 81 and 82: systems. What would a knowledge man
- Page 83 and 84: spreadsheet". Other users can comme
- Page 85 and 86: Chapter 15Metadata (and Automatic C
- Page 87 and 88: {site url}{site description}en-usCo
- Page 89 and 90: drawing on the intermodule API that
- Page 91 and 92: At this point you have something of
- Page 93 and 94: • description• URL for a photo
- Page 95 and 96: Here's a raw SOAP request/response
- Page 97 and 98: Chapter 14Distributed Computing wit
- Page 99 and 100: conduct programmer job interviews h
- Page 101 and 102: Most admin pages can be excluded fr
- Page 103 and 104: content that should distinguish one
- Page 105 and 106: Chapter 13Planning ReduxA lot has c
- Page 107 and 108: the Internet-specific problem of no
- Page 109 and 110: wouldn't see these dirty tricks unl
- Page 111 and 112: 12.8 Exercise 4: Big BrotherGeneral
- Page 113 and 114: than one call to contains in the sa
- Page 115 and 116: A third argument against the split
- Page 117 and 118: way 1 1/16One might argue that this
- Page 119 and 120: absquatulate 612bedizen 36, 9211cry
- Page 121 and 122: What if the user typed multiple wor
- Page 123 and 124: Chapter 12S E A R C HRecall from th
- Page 125 and 126: long as it is much easier to remove
- Page 127 and 128:
features that are helpful? What fea
- Page 129 and 130:
made it in 1938)? Upon reflection,
- Page 131 and 132:
environment, we identify users by t
- Page 133 and 134:
those updates by no more than 1 min
- Page 135 and 136:
Balancer and mod_backhand, a load b
- Page 137 and 138:
translation had elapsed--the site w
- Page 139 and 140:
It seems reasonable to expect that
- Page 141 and 142:
11.1.5 Transport-Layer EncryptionWh
- Page 143 and 144:
such as ticket bookings would colla
- Page 145 and 146:
give their site a unique look and f
- Page 147 and 148:
It isn't challenging to throw hardw
- Page 149 and 150:
Chapter 11Scaling GracefullyLet's l
- Page 151 and 152:
10.15 Beyond VoiceXML: Conversation
- Page 153 and 154:
Consider that if you're authenticat
- Page 155 and 156:
In this example, we:194• ask the
- Page 157 and 158:
As in any XML document, every openi
- Page 159 and 160:
(http://www.voicegenie.com). These
- Page 161 and 162:
Chapter 10Voice (VoiceXML)questions
- Page 163 and 164:
9.15 MoreStandards information:•
- Page 165 and 166:
9.14 The FutureIn most countries th
- Page 167 and 168:
9.10 Exercise 7: Build a Pulse Page
- Page 169 and 170:
9.6 Keypad HyperlinksLet's look at
- Page 171 and 172:
text/xml,application/xml,applicatio
- Page 173 and 174:
Protocol (IP) routing, a standard H