markdown:
Muldis::D::Manual::CD - Simple CD database example
This document is Muldis::D::Manual::CD version 0.9.0.
This document is part of the Muldis D language and implementations manual,
whose root document is
[Muldis::D::Manual](/~duncand/Muldis-D-Manual-0.9.0/lib/Muldis/D/Manual.pm); you should read that root document before you read this one,
which provides subservient details.
This example code demonstrates a very basic CD database, which consists of a schema definition having relvars to store data and routines to fetch or update that data, and it includes some sample data.
This schema definition,
routines,
and sample data are heavily based on the contents of
[DBIx::Class::Manual::Example](/perldoc?DBIx%3A%3AClass%3A%3AManual%3A%3AExample); they are essentially the same except for optimizations towards perceived better practice for Muldis D.
The database consists of the following:
- relvar 'artists' with attributes: artist_id, artist_name - relvar 'cds' with attributes: cd_id, artist_id, cd_title - relvar 'tracks' with attributes: track_id, cd_id, track_title
And these rules exist:
- one artist can have many cds - one cd belongs to one artist - one cd can have many tracks - one track belongs to one cd
In an effort to keep this example more realistic, the code is divided into 3 depots:
This is what you would traditionally call
*the database*. It represents the state of a newly created depot that has the relvar and access routine definitions freshly installed in its catalog section, and corresponding relvars in its data section which are empty.
This is a program which inserts some test data into
**the_database**.
This is a program which queries
**the_database** and prints out its findings for the user to see.
This document has 3 main copies of the example, one in each of the 3 standard dialects of Muldis D.
But while the PTMD_STD dialect's copy of the example is complete, the HDMD_Perl6_STD and HDMD_Perl5_STD dialects' copies of the example are each missing the bodies of 13 routines, and have just the headings/signatures for those 13; the HDMD_Perl6_STD and HDMD_Perl5_STD dialects' copies of the example are otherwise complete, having the complete definitions of 7 routines, and all of the type definitions, constraints, scaffolding, and data. The PTMD_STD copy is, in any event, the most terse and readable, especially for routine definitions; the routines that are complete in the 2 Perl-STD copies should constitute a representative subset, such that one should be able to infer the missing routine bodies easily enough through comparison with the complete PTMD_STD copy; but the other routines might also be made complete later if the rationale exists.
Muldis_D:"
[http://muldis.com":0.137.0:PTMD_STD]:{ catalog_abstraction_level => rtn_inv_alt_syn, op_char_repertoire => basic } depot-catalog { self-local-dbvar-type nlx.lib."" ####################################################################### database-type "" { attr artists : nlx.lib.artists attr cds : nlx.lib.cds attr tracks : nlx.lib.tracks constraint nlx.lib.sc_artist_has_cds constraint nlx.lib.sc_cd_has_tracks } ####################################################################### relation-type artists { tuple-type nlx.lib.T with tuple-type T { attr artist_id : Int attr artist_name : Text } constraint nlx.lib.pk with primary-key pk { artist_id } constraint nlx.lib.sk_artist_name with key-constraint sk_artist_name { artist_name } } ####################################################################### relation-type cds { tuple-type nlx.lib.T with tuple-type T { attr cd_id : Int attr artist_id : Int attr cd_title : Text } constraint nlx.lib.pk with primary-key pk { cd_id } constraint nlx.lib.sk_cd_title with key-constraint sk_cd_title { cd_title } } subset-constraint sc_artist_has_cds { parent artists using-key nlx.lib.artists.pk child cds using-attrs { =>artist_id } } ####################################################################### relation-type tracks { tuple-type nlx.lib.T with tuple-type T { attr track_id : Int attr cd_id : Int attr track_title : Text } constraint nlx.lib.pk with primary-key pk { track_id } constraint nlx.lib.sk_track_title with key-constraint sk_track_title { track_title } } subset-constraint sc_cd_has_tracks { parent cds using-key nlx.lib.cds.pk child tracks using-attrs { =>cd_id } } ####################################################################### recipe get_tracks_by_cd (&track_titles : array_of.Text, cd_title : Text, db ::= nlx.data) { track_titles := Array_from_attr( db.tracks matching ( db.cds matching @:{ { =>cd_title } } ), name => Name:track_title ) } recipe get_tracks_by_artist (&track_titles : array_of.Text, artist_name : Text, db ::= nlx.data) { track_titles := Array_from_attr( db.tracks matching ( db.cds matching (db.artists matching @:{ { =>artist_name } }) ), name => Name:track_title ) } ####################################################################### recipe get_cd_by_track (&cd_title : maybe_of.Text, track_title : Text, db ::= nlx.data) { cd_title := Set_from_attr( db.cds matching ( db.tracks matching @:{ { =>track_title } } ), name => Name:cd_title ) } recipe get_cds_by_artist (&cd_titles : array_of.Text, artist_name : Text, db ::= nlx.data) { cd_titles := Array_from_attr( db.cds matching ( db.artists matching @:{ { =>artist_name } } ), name => Name:cd_title ) } ####################################################################### recipe get_artist_by_track (&artist_name : maybe_of.Text, track_title : Text, db ::= nlx.data) { artist_name := Set_from_attr( db.artists matching ( db.cds matching (db.tracks matching @:{ { =>track_title } }) ), name => Name:artist_name ) } recipe get_artist_by_cd (&artist_name : maybe_of.Text, cd_title : Text, db ::= nlx.data) { artist_name := Set_from_attr( db.artists matching ( db.cds matching @:{ { =>cd_title } } ), name => Name:artist_name ) } ####################################################################### } #`depot-catalog`# depot-data Database:{ artists => @:{ artist_id, artist_name }, cds => @:{ cd_id, artist_id, cd_title }, tracks => @:{ track_id, cd_id, track_title } } #`depot-data`#
Muldis_D:"
[http://muldis.com":0.137.0:PTMD_STD]:{ catalog_abstraction_level => rtn_inv_alt_syn, op_char_repertoire => basic } depot-catalog { self-local-dbvar-type Database stimulus-response-rule bootstrap { when after-mount invoke main } ####################################################################### procedure main () [ #`Connect to the_database in read-write mode. The "..." has likes of filename, server name, user, pass, etc.`# create_depot_mount( name => Name:db, we_may_update => True, details => @:OVLScaValExprNodeSet:{ ... } ) #`Add test data to the_database, as a single atomic transaction. This might fail if records with same titles/etc already there.`# try nlx.lib.insert_records() catch nlx.lib.insert_failed() #`Disconnect the_database now that we're done with it.`# drop_depot_mount( name => Name:db ) ] procedure insert_failed (err : Exception) [ write_Text_line( 'Failed to insert, maybe because of duplicates.' ) ] ####################################################################### recipe insert_records (&db ::= fed.data.db, src ::= nlx.data) { #`We will generate new integer record ids serially starting after the maximum ids currently in use per relvar. There are, of course, other ways to produce record ids.`# #`So start by determining the existing maximum ids.`# max_used_artist_id ::= is_empty(db.artists) ?? 0 !! max( Set_from_attr( db.artists, name => Name:artist_id ) ) max_used_cd_id ::= is_empty(db.cds) ?? 0 !! max( Set_from_attr( db.cds, name => Name:cd_id ) ) max_used_track_id ::= is_empty(db.tracks) ?? 0 !! max( Set_from_attr( db.tracks, name => Name:track_id ) ) #`Now generate new record ids and attach them to records to add. The process involves sorting of the new data simply to make it fully-deterministic, giving same result on any implementation.`# src_artists_with_ids ::= rank_by_attr_names( src.artists, name => Name:artist_id, order_by => [ %:{ name => Name:artist_name, is_reverse_order => False } ], first_rank => max_used_artist_id ++ ) src_cds_with_ids ::= rank_by_attr_names( src.cds, name => Name:cd_id, order_by => [ %:{ name => Name:cd_title, is_reverse_order => False } ], first_rank => max_used_cd_id ++ ) src_tracks_with_ids ::= rank_by_attr_names( src.tracks, name => Name:track_id, order_by => [ %:{ name => Name:track_title, is_reverse_order => False } ], first_rank => max_used_track_id ++ ) #`Now substitute parent record ids for parent names or titles.`# new_artists ::= src_artists_with_ids new_cds ::= src_cds_with_ids compose new_artists new_tracks ::= src_tracks_with_ids compose new_cds{!artist_id} #`Now insert the prepared new records into the_database.`# db.artists :=union new_artists db.cds :=union new_cds db.tracks :=union new_tracks } ####################################################################### } #`depot-catalog`# depot-data Database:{ artists => @:[ artist_name ];{ [ 'Michael Jackson' ], [ 'Eminem' ] }, cds => @:[ cd_title, artist_name ];{ [ 'Thriller' , 'Michael Jackson' ], [ 'Bad' , 'Michael Jackson' ], [ 'The Marshall Mathers LP', 'Eminem' ] }, tracks => @:[ track_title, cd_title ];{ [ 'Beat It' , 'Thriller' ], [ 'Billie Jean' , 'Thriller' ], [ 'Dirty Diana' , 'Bad' ], [ 'Smooth Criminal', 'Bad' ], [ 'Leave Me Alone' , 'Bad' ], [ 'Stan' , 'The Marshall Mathers LP' ], [ 'The Way I Am' , 'The Marshall Mathers LP' ] } } #`depot-data`#
Muldis_D:"
[http://muldis.com":0.137.0:PTMD_STD]:{ catalog_abstraction_level => rtn_inv_alt_syn, op_char_repertoire => basic } depot-catalog { stimulus-response-rule bootstrap { when after-mount invoke main } ####################################################################### procedure main () [ #`Connect to the_database in read-only mode. The "..." has likes of filename, server name, user, pass, etc.`# create_depot_mount( name => Name:db, details => @:OVLScaValExprNodeSet:{ ... } ) #`Fetch test data, in a transaction for read-consistency.`# nlx.lib.get_records() #`Disconnect the_database now that we're done with it.`# drop_depot_mount( name => Name:db ) ] ####################################################################### transaction get_records () [ nlx.lib.get_tracks_by_cd( cd_title => 'Bad' ) nlx.lib.get_tracks_by_artist( artist_name => 'Michael Jackson' ) nlx.lib.get_cd_by_track( track_title => 'Stan' ) nlx.lib.get_cds_by_artist( artist_name => 'Michael Jackson' ) nlx.lib.get_artist_by_track( track_title => 'Dirty Diana' ) nlx.lib.get_artist_by_cd( cd_title => 'The Marshall Mathers LP' ) ] ####################################################################### procedure disp_list (h1 : Text, h2 : Text, list : array_of.Text) [ var eol : Text end_of_line_Text( &eol ) var msg : Text { msg := h1 ~ '(' ~ h2 ~ '):' ~ eol ~ cat_with_sep( list, sep => eol ) ~ eol ~ eol } write_Text( msg ) ] procedure disp_item (h1 : Text, h2 : Text, item : maybe_of.Text) [ var h : Text var v : Text { h := h1 ~ '(' ~ h2 ~ '):' v := item // '<No Match!>' } write_Text_line( h ) write_Text_line( v ) write_Text_line() ] ####################################################################### procedure get_tracks_by_cd (cd_title : Text) [ var track_titles : array_of.Text fed.lib.db.get_tracks_by_cd( &=>track_titles, =>cd_title ) nlx.lib.disp_list( h1 => 'get_tracks_by_cd', h2 => cd_title, list => track_titles ) ] procedure get_tracks_by_artist (artist_name : Text) [ var track_titles : array_of.Text fed.lib.db.get_tracks_by_artist( &=>track_titles, =>artist_name ) nlx.lib.disp_list( h1 => 'get_tracks_by_artist', h2 => artist_name, list => track_titles ) ] ####################################################################### procedure get_cd_by_track (track_title : Text) [ var cd_title : maybe_of.Text fed.lib.db.get_cd_by_track( &=>cd_title, =>track_title ) nlx.lib.disp_item( h1 => 'get_cd_by_track', h2 => track_title, item => cd_title ) ] procedure get_cds_by_artist (artist_name : Text) [ var cd_titles : array_of.Text fed.lib.db.get_cds_by_artist( &=>cd_titles, =>artist_name ) nlx.lib.disp_list( h1 => 'get_cds_by_artist', h2 => artist_name, list => cd_titles ) ] ####################################################################### procedure get_artist_by_track (track_title : Text) [ var artist_name : maybe_of.Text fed.lib.db.get_artist_by_track( &=>artist_name, =>track_title ) nlx.lib.disp_item( h1 => 'get_artist_by_track', h2 => track_title, item => artist_name ) ] procedure get_artist_by_cd (cd_title : Text) [ var artist_name : maybe_of.Text fed.lib.db.get_artist_by_cd( &=>artist_name, =>cd_title ) nlx.lib.disp_item( h1 => 'get_artist_by_cd', h2 => cd_title, item => artist_name ) ] ####################################################################### } #`depot-catalog`#
[ [ 'Muldis_D', '
[http://muldis.com]', '0.137.0', 'HDMD_Perl6_STD', { catalog_abstraction_level => 'rtn_inv_alt_syn', op_char_repertoire => 'basic' } ], [ 'depot', :depot-catalog[ :self-local-dbvar-type<nlx.lib.>, ####################################################################### [ 'database-type', '', [ [ 'attr', 'artists', 'nlx.lib.artists' ], [ 'attr', 'cds' , 'nlx.lib.cds' ], [ 'attr', 'tracks' , 'nlx.lib.tracks' ], :constraint<nlx.lib.sc_artist_has_cds>, :constraint<nlx.lib.sc_cd_has_tracks>, ] ], ####################################################################### [ 'relation-type', 'artists', [ :tuple-type<nlx.lib.T>, :with[ 'tuple-type', 'T', [ [ 'attr', 'artist_id' , 'Int' ], [ 'attr', 'artist_name', 'Text' ], ] ], :constraint<nlx.lib.pk>, :with[ 'primary-key', 'pk', 'artist_id' ], :constraint<nlx.lib.sk_artist_name>, :with[ 'key-constraint', 'sk_artist_name', 'artist_name' ], ] ], ####################################################################### [ 'relation-type', 'cds', [ :tuple-type<nlx.lib.T>, :with[ 'tuple-type', 'T', [ [ 'attr', 'cd_id' , 'Int' ], [ 'attr', 'artist_id', 'Int' ], [ 'attr', 'cd_title' , 'Text' ], ] ], :constraint<nlx.lib.pk>, :with[ 'primary-key', 'pk', 'cd_id' ], :constraint<nlx.lib.sk_cd_title>, :with[ 'key-constraint', 'sk_cd_title', 'cd_title' ], ] ], [ 'subset-constraint', 'sc_artist_has_cds', { parent => 'artists', using-key => 'nlx.lib.artists.pk', child => 'cds', using-attrs => { artist_id => 'artist_id' } } ], ####################################################################### [ 'relation-type', 'tracks', [ :tuple-type<nlx.lib.T>, :with[ 'tuple-type', 'T', [ [ 'attr', 'track_id' , 'Int' ], [ 'attr', 'cd_id' , 'Int' ], [ 'attr', 'track_title', 'Text' ], ] ], :constraint<nlx.lib.pk>, :with[ 'primary-key', 'pk', 'track_id' ], :constraint<nlx.lib.sk_track_title>, :with[ 'key-constraint', 'sk_track_title', 'track_title' ], ] ], [ 'subset-constraint', 'sc_cd_has_tracks', { parent => 'cds', using-key => 'nlx.lib.cds.pk', child => 'tracks', using-attrs => { cd_id => 'cd_id' } } ], ####################################################################### [ 'recipe', 'get_tracks_by_cd', { track_titles => ['&','array_of.Text'], cd_title => 'Text', db => ['::=','nlx.data'] } => '...' ], [ 'recipe', 'get_tracks_by_artist', { track_titles => ['&','array_of.Text'], artist_name => 'Text', db => ['::=','nlx.data'] } => '...' ], [ 'recipe', 'get_tracks_by_artist', { track_titles => ['&','array_of.Text'], artist_name => 'Text', db => ['::=','nlx.data'] } => [ [ 'op', ':=', [ :d<track_titles>, [ 'curried-func', 'Array_from_attr', [ [ 'op', 'matching', [ :acc<db.tracks>, [ 'op', 'matching', [ :acc<db.cds>, [ 'op', 'matching', [ :acc<db.artists>, '@' => Set.new( { artist_name => :d<artist_name> } ) ] ] ] ] ] ] ], { name => :Name<track_title> } ] ] ], ] ], ####################################################################### [ 'recipe', 'get_cd_by_track', { cd_title => ['&','maybe_of.Text'], track_title => 'Text', db => ['::=','nlx.data'] } => '...' ], [ 'recipe', 'get_cds_by_artist', { cd_titles => ['&','array_of.Text'], artist_name => 'Text', db => ['::=','nlx.data'] } => '...' ], ####################################################################### [ 'recipe', 'get_artist_by_track', { artist_name => ['&','maybe_of.Text'], track_title => 'Text', db => ['::=','nlx.data'] } => '...' ], [ 'recipe', 'get_artist_by_cd', { artist_name => ['&','maybe_of.Text'], cd_title => 'Text', db => ['::=','nlx.data'] } => '...' ], ####################################################################### ], # depot-catalog # :depot-data[ 'Database', { artists => '@' => Set.new(<artist_id artist_name>), cds => '@' => Set.new(<cd_id artist_id cd_title>), tracks => '@' => Set.new(<track_id cd_id track_title>) } ] # depot-data # ] ]
[ [ 'Muldis_D', '
[http://muldis.com]', '0.137.0', 'HDMD_Perl6_STD', { catalog_abstraction_level => 'rtn_inv_alt_syn', op_char_repertoire => 'basic' } ], [ 'depot', :depot-catalog[ :self-local-dbvar-type<Database>, ['stimulus-response-rule','bootstrap',:after-mount<main>], ####################################################################### [ 'procedure', 'main', {} => [ # Connect to the_database in read-write mode. # # The "..." has likes of filename, server name, user, pass, etc. # [ 'iproc-imp-invo', 'create_depot_mount', { name => :Name<db>, we_may_update => Bool::True, details => [ '@', 'OVLScaValExprNodeSet', '...' ] } ], # Add test data to the_database, as a single atomic transaction. # # This might fail if records with same titles/etc already there. # [ 'try-catch', :iproc-imp-invo<nlx.lib.insert_records>, :iproc-imp-invo<nlx.lib.insert_failed> ], # Disconnect the_database now that we're done with it. # [ 'iproc-imp-invo', 'drop_depot_mount', { name => :Name<db> } ], ] ], [ 'procedure', 'insert_failed', { err => 'Exception' } => [ [ 'iproc-imp-invo', 'write_Text_line', [ 'Failed to insert, maybe because of duplicates.' ] ] ] ], ####################################################################### [ 'recipe', 'insert_records', { db => ['&','::=','fed.data.db'], src => ['::=','nlx.data'] } => '...' ], ####################################################################### ], # depot-catalog # :depot-data[ 'Database', { artists => '@' => <artist_name> => Set.new( [ 'Michael Jackson' ], [ 'Eminem' ] ), cds => '@' => <cd_title artist_name> => Set.new( [ 'Thriller' , 'Michael Jackson' ], [ 'Bad' , 'Michael Jackson' ], [ 'The Marshall Mathers LP', 'Eminem' ] ), tracks => '@' => <track_title cd_title> => Set.new( [ 'Beat It' , 'Thriller' ], [ 'Billie Jean' , 'Thriller' ], [ 'Dirty Diana' , 'Bad' ], [ 'Smooth Criminal', 'Bad' ], [ 'Leave Me Alone' , 'Bad' ], [ 'Stan' , 'The Marshall Mathers LP' ], [ 'The Way I Am' , 'The Marshall Mathers LP' ] ) } ] # depot-data # ] ]
[ [ 'Muldis_D', '
[http://muldis.com]', '0.137.0', 'HDMD_Perl6_STD', { catalog_abstraction_level => 'rtn_inv_alt_syn', op_char_repertoire => 'basic' } ], [ 'depot', :depot-catalog[ ['stimulus-response-rule','bootstrap',:after-mount<main>], ####################################################################### [ 'procedure', 'main', {} => [ # Connect to the_database in read-only mode. # # The "..." has likes of filename, server name, user, pass, etc. # [ 'iproc-imp-invo', 'create_depot_mount', { name => :Name<db>, details => [ '@', 'OVLScaValExprNodeSet', '...' ] } ], # Fetch test data, in a transaction for read-consistency. # :iproc-imp-invo<nlx.lib.get_records>, # Disconnect the_database now that we're done with it. # [ 'iproc-imp-invo', 'drop_depot_mount', { name => :Name<db> } ], ] ], ####################################################################### [ 'transaction', 'get_records', {} => [ [ 'iproc-imp-invo', 'nlx.lib.get_tracks_by_cd', { cd_title => 'Bad' } ], [ 'iproc-imp-invo', 'nlx.lib.get_tracks_by_artist', { artist_name => 'Michael Jackson' } ], [ 'iproc-imp-invo', 'nlx.lib.get_cd_by_track', { track_title => 'Stan' } ], [ 'iproc-imp-invo', 'nlx.lib.get_cds_by_artist', { artist_name => 'Michael Jackson' } ], [ 'iproc-imp-invo', 'nlx.lib.get_artist_by_track', { track_title => 'Dirty Diana' } ], [ 'iproc-imp-invo', 'nlx.lib.get_artist_by_cd', { cd_title => 'The Marshall Mathers LP' } ], ] ], ####################################################################### [ 'procedure', 'disp_list', { h1 => 'Text', h2 => 'Text', list => 'array_of.Text' } => [ [ 'var', 'eol', 'Text' ], [ 'iproc-imp-invo', 'end_of_line_Text', [ ['&',:d<eol>] ] ], [ 'var', 'msg', 'Text' ], :atomic-stmt[ [ 'op', ':=', [ :d<msg>, [ 'op', '~', [ :d<h1>, '(', :d<h2>, '):', :d<eol>, [ 'func-invo', 'cat_with_sep', [ :d<list> ], { 'sep' => :d<eol> } ], :d<eol>, :d<eol> ] ] ] ] ], [ 'iproc-imp-invo', 'write_Text', [ :d<msg> ] ], ] ], [ 'procedure', 'disp_item', { h1 => 'Text', h2 => 'Text', item => 'maybe_of.Text' } => '...' ], ####################################################################### [ 'procedure', 'get_tracks_by_cd', { cd_title => 'Text' } => '...' ], [ 'procedure', 'get_tracks_by_artist', { artist_name => 'Text' } => [ [ 'var', 'track_titles', 'array_of.Text' ], [ 'iproc-imp-invo', 'fed.lib.db.get_tracks_by_artist', { track_titles => ['&',:d<track_titles>], artist_name => :d<artist_name> } ], [ 'iproc-imp-invo', 'nlx.lib.disp_list', { h1 => 'get_tracks_by_artist', h2 => :d<artist_name>, list => :d<track_titles> } ], ] ], ####################################################################### [ 'procedure', 'get_cd_by_track', { track_title => 'Text' } => '...' ], [ 'procedure', 'get_cds_by_artist', {artist_name => 'Text'} => '...' ], ####################################################################### [ 'procedure', 'get_artist_by_track', {track_title=>'Text'} => '...' ], [ 'procedure', 'get_artist_by_cd', { cd_title => 'Text' } => '...' ], ####################################################################### ] # depot-catalog # ] ]
[ [ 'Muldis_D', '
[http://muldis.com]', '0.137.0', 'HDMD_Perl5_STD', { catalog_abstraction_level => 'rtn_inv_alt_syn', op_char_repertoire => 'basic' } ], [ 'depot', [ 'depot-catalog' => [ [ 'self-local-dbvar-type', 'nlx.lib.' ], ####################################################################### [ 'database-type', '', [ [ 'attr', 'artists', 'nlx.lib.artists' ], [ 'attr', 'cds' , 'nlx.lib.cds' ], [ 'attr', 'tracks' , 'nlx.lib.tracks' ], [ 'constraint', 'nlx.lib.sc_artist_has_cds' ], [ 'constraint', 'nlx.lib.sc_cd_has_tracks' ], ] ], ####################################################################### [ 'relation-type', 'artists', [ [ 'tuple-type', 'nlx.lib.T' ], [ 'with' => [ 'tuple-type', 'T', [ [ 'attr', 'artist_id' , 'Int' ], [ 'attr', 'artist_name', 'Text' ], ] ] ], [ 'constraint', 'nlx.lib.pk' ], [ 'with' => [ 'primary-key', 'pk', 'artist_id' ] ], [ 'constraint', 'nlx.lib.sk_artist_name' ], [ 'with' => [ 'key-constraint','sk_artist_name','artist_name' ] ], ] ], ####################################################################### [ 'relation-type', 'cds', [ [ 'tuple-type', 'nlx.lib.T' ], [ 'with' => [ 'tuple-type', 'T', [ [ 'attr', 'cd_id' , 'Int' ], [ 'attr', 'artist_id', 'Int' ], [ 'attr', 'cd_title' , 'Text' ], ] ] ], [ 'constraint', 'nlx.lib.pk' ], [ 'with' => [ 'primary-key', 'pk', 'cd_id' ] ], [ 'constraint', 'nlx.lib.sk_cd_title' ], [ 'with' => [ 'key-constraint', 'sk_cd_title', 'cd_title' ] ], ] ], [ 'subset-constraint', 'sc_artist_has_cds', { parent => 'artists', 'using-key' => 'nlx.lib.artists.pk', child => 'cds', 'using-attrs' => { artist_id => 'artist_id' } } ], ####################################################################### [ 'relation-type', 'tracks', [ [ 'tuple-type', 'nlx.lib.T' ], [ 'with' => [ 'tuple-type', 'T', [ [ 'attr', 'track_id' , 'Int' ], [ 'attr', 'cd_id' , 'Int' ], [ 'attr', 'track_title', 'Text' ], ] ] ], [ 'constraint', 'nlx.lib.pk' ], [ 'with' => [ 'primary-key', 'pk', 'track_id' ] ], [ 'constraint', 'nlx.lib.sk_track_title' ], [ 'with' => [ 'key-constraint','sk_track_title','track_title' ] ], ] ], [ 'subset-constraint', 'sc_cd_has_tracks', { parent => 'cds', 'using-key' => 'nlx.lib.cds.pk', child => 'tracks', 'using-attrs' => { cd_id => 'cd_id' } } ], ####################################################################### [ 'recipe', 'get_tracks_by_cd', [ { track_titles => ['&','array_of.Text'], cd_title => 'Text', db => ['::=','nlx.data'] } => '...' ] ], [ 'recipe', 'get_tracks_by_artist', [ { track_titles => ['&','array_of.Text'], artist_name => 'Text', db => ['::=','nlx.data'] } => [ [ 'op', ':=', [ ['d','track_titles'], [ 'curried-func', 'Array_from_attr', [ [ 'op', 'matching', [ ['acc','db.tracks'], [ 'op', 'matching', [ ['acc','db.cds'], [ 'op', 'matching', [ ['acc','db.artists'], [ '@', [{artist_name => ['d','artist_name']}] ] ] ] ] ] ] ] ], { name => ['Name','track_title'] } ] ] ], ] ] ], ####################################################################### [ 'recipe', 'get_cd_by_track', [ { cd_title => ['&','maybe_of.Text'], track_title => 'Text', db => ['::=','nlx.data'] } => '...' ] ], [ 'recipe', 'get_cds_by_artist', [ { cd_titles => ['&','array_of.Text'], artist_name => 'Text', db => ['::=','nlx.data'] } => '...' ] ], ####################################################################### [ 'recipe', 'get_artist_by_track', [ { artist_name => ['&','maybe_of.Text'], track_title => 'Text', db => ['::=','nlx.data'] } => '...' ] ], [ 'recipe', 'get_artist_by_cd', [ { artist_name => ['&','maybe_of.Text'], cd_title => 'Text', db => ['::=','nlx.data'] } => '...' ] ], ####################################################################### ] ], # depot-catalog # [ 'depot-data' => [ 'Database', { artists => ['@',['artist_id','artist_name']], cds => ['@',['cd_id','artist_id','cd_title']], tracks => ['@',['track_id','cd_id','track_title']] } ] ] # depot-data # ] ]
[ [ 'Muldis_D', '
[http://muldis.com]', '0.137.0', 'HDMD_Perl5_STD', { catalog_abstraction_level => 'rtn_inv_alt_syn', op_char_repertoire => 'basic' } ], [ 'depot', [ 'depot-catalog' => [ [ 'self-local-dbvar-type', 'Database' ], [ 'stimulus-response-rule', 'bootstrap', ['after-mount' => 'main'] ], ####################################################################### [ 'procedure', 'main', [ {} => [ # Connect to the_database in read-write mode. # # The "..." has likes of filename, server name, user, pass, etc. # [ 'iproc-imp-invo', 'create_depot_mount', { name => ['Name','db'], we_may_update => ['Bool','True'], details => [ '@', 'OVLScaValExprNodeSet', '...' ] } ], # Add test data to the_database, as a single atomic transaction. # # This might fail if records with same titles/etc already there. # [ 'try-catch', [ 'iproc-imp-invo', 'nlx.lib.insert_records' ], [ 'iproc-imp-invo', 'nlx.lib.insert_failed' ] ], # Disconnect the_database now that we're done with it. # [ 'iproc-imp-invo', 'drop_depot_mount', {name => ['Name','db']} ], ] ] ], [ 'procedure', 'insert_failed', [ { err => 'Exception' } => [ [ 'iproc-imp-invo', 'write_Text_line', [ 'Failed to insert, maybe because of duplicates.' ] ] ] ] ], ####################################################################### [ 'recipe', 'insert_records', [ { db => ['&','::=','fed.data.db'], src => ['::=','nlx.data'] } => '...' ] ], ####################################################################### ] ], # depot-catalog # [ 'depot-data' => [ 'Database', { artists => [ '@', [ [ 'artist_name' ] => [ [ 'Michael Jackson' ], [ 'Eminem' ] ] ] ], cds => [ '@', [ [ 'cd_title','artist_name' ] => [ [ 'Thriller' , 'Michael Jackson' ], [ 'Bad' , 'Michael Jackson' ], [ 'The Marshall Mathers LP', 'Eminem' ] ] ] ], tracks => [ '@', [ [ 'track_title','cd_title' ] => [ [ 'Beat It' , 'Thriller' ], [ 'Billie Jean' , 'Thriller' ], [ 'Dirty Diana' , 'Bad' ], [ 'Smooth Criminal', 'Bad' ], [ 'Leave Me Alone' , 'Bad' ], [ 'Stan' , 'The Marshall Mathers LP' ], [ 'The Way I Am' , 'The Marshall Mathers LP' ] ] ] ] } ] ] # depot-data # ] ]
[ [ 'Muldis_D', '
[http://muldis.com]', '0.137.0', 'HDMD_Perl5_STD', { catalog_abstraction_level => 'rtn_inv_alt_syn', op_char_repertoire => 'basic' } ], [ 'depot', [ 'depot-catalog' => [ [ 'stimulus-response-rule', 'bootstrap', ['after-mount' => 'main'] ], ####################################################################### [ 'procedure', 'main', [ {} => [ # Connect to the_database in read-only mode. # # The "..." has likes of filename, server name, user, pass, etc. # [ 'iproc-imp-invo', 'create_depot_mount', { name => ['Name','db'], details => [ '@', 'OVLScaValExprNodeSet', '...' ] } ], # Fetch test data, in a transaction for read-consistency. # [ 'iproc-imp-invo', 'nlx.lib.get_records' ], # Disconnect the_database now that we're done with it. # [ 'iproc-imp-invo', 'drop_depot_mount', {name => ['Name','db']} ], ] ] ], ####################################################################### [ 'transaction', 'get_records', [ {} => [ [ 'iproc-imp-invo', 'nlx.lib.get_tracks_by_cd', { cd_title => 'Bad' } ], [ 'iproc-imp-invo', 'nlx.lib.get_tracks_by_artist', { artist_name => 'Michael Jackson' } ], [ 'iproc-imp-invo', 'nlx.lib.get_cd_by_track', { track_title => 'Stan' } ], [ 'iproc-imp-invo', 'nlx.lib.get_cds_by_artist', { artist_name => 'Michael Jackson' } ], [ 'iproc-imp-invo', 'nlx.lib.get_artist_by_track', { track_title => 'Dirty Diana' } ], [ 'iproc-imp-invo', 'nlx.lib.get_artist_by_cd', { cd_title => 'The Marshall Mathers LP' } ], ] ] ], ####################################################################### [ 'procedure', 'disp_list', [ { h1 => 'Text', h2 => 'Text', list => 'array_of.Text' } => [ [ 'var', 'eol', 'Text' ], [ 'iproc-imp-invo', 'end_of_line_Text', [ ['&',['d','eol']] ] ], [ 'var', 'msg', 'Text' ], [ 'atomic-stmt' => [ [ 'op', ':=', [ ['d','msg'], [ 'op', '~', [ ['d','h1'], '(', ['d','h2'], '):', ['d','eol'], [ 'func-invo', 'cat_with_sep', [ ['d','list'] ], { 'sep' => ['d','eol'] } ], ['d','eol'], ['d','eol'] ] ] ] ] ] ], [ 'iproc-imp-invo', 'write_Text', [ ['d','msg'] ] ], ] ] ], [ 'procedure', 'disp_item', [ { h1 => 'Text', h2 => 'Text', item => 'maybe_of.Text' } => '...' ] ], ####################################################################### [ 'procedure', 'get_tracks_by_cd', [{ cd_title => 'Text' } => '...'] ], [ 'procedure', 'get_tracks_by_artist', [ { artist_name => 'Text' } => [ [ 'var', 'track_titles', 'array_of.Text' ], [ 'iproc-imp-invo', 'fed.lib.db.get_tracks_by_artist', { track_titles => ['&',['d','track_titles']], artist_name => ['d','artist_name'] } ], [ 'iproc-imp-invo', 'nlx.lib.disp_list', { h1 => 'get_tracks_by_artist', h2 => ['d','artist_name'], list => ['d','track_titles'] } ], ] ] ], ####################################################################### [ 'procedure', 'get_cd_by_track', [{track_title => 'Text'} => '...'] ], [ 'procedure', 'get_cds_by_artist', [{artist_name=>'Text'} => '...'] ], ####################################################################### [ 'procedure', 'get_artist_by_track', [{track_title=>'Text'}=>'...'] ], [ 'procedure', 'get_artist_by_cd', [{ cd_title => 'Text' } => '...'] ], ####################################################################### ] ] # depot-catalog # ] ]
Each copy of the example should have identical output on STDOUT, which is:
get_tracks_by_cd(Bad): Dirty Diana Leave Me Alone Smooth Criminal get_tracks_by_artist(Michael Jackson): Beat it Billie Jean Dirty Diana Leave Me Alone Smooth Criminal get_cd_by_track(Stan): The Marshall Mathers LP get_cds_by_artist(Michael Jackson): Bad Thriller get_artist_by_track(Dirty Diana): Michael Jackson get_artist_by_cd(The Marshall Mathers LP): Eminem
Go to
[Muldis::D::Manual](/~duncand/Muldis-D-Manual-0.9.0/lib/Muldis/D/Manual.pm) for the majority of distribution-internal references.
Go to
[DBIx::Class::Manual::Example](/perldoc?DBIx%3A%3AClass%3A%3AManual%3A%3AExample) to see the original version of the "Simple CD database example" from which this document was originally derived/translated.
The original document that this current document was translated from,
[DBIx::Class::Manual::Example](/perldoc?DBIx%3A%3AClass%3A%3AManual%3A%3AExample), cites as its authors:
sc_ from irc.perl.org#dbix-class Kieren Diment <kd@totaldatasolution.com> Nigel Metheringham <nigelm@cpan.org>
This current document was written/derived by:
Darren Duncan <darren@DarrenDuncan.net>
This file is part of the Muldis D language and implementations manual.
Muldis D Manual is Copyright © 2008-2010, Muldis Data Systems, Inc.
See the LICENSE AND COPYRIGHT of
[Muldis::D::Manual](/~duncand/Muldis-D-Manual-0.9.0/lib/Muldis/D/Manual.pm) for details.
The TRADEMARK POLICY in
[Muldis::D::Manual](/~duncand/Muldis-D-Manual-0.9.0/lib/Muldis/D/Manual.pm) applies to this file too.
The ACKNOWLEDGEMENTS in
[Muldis::D::Manual](/~duncand/Muldis-D-Manual-0.9.0/lib/Muldis/D/Manual.pm) apply to this file too.

Server: Plack/Starman (Perl)


markdown:
### Giỏ hàng mini
[Vào giỏ hàng](http://shopnangxuan.com/san_pham/cart/1/gio_hang.html)
190.000 VNĐ
150.000 VND
50.000 VND
195.000 VND
350.000 VND
190.000 VNĐ
190.000 VND
60.000 VND
120.000 VND
180.000 VNĐ
290.000 VND
190.000 VND
290.000 VND
170.000 VND
300.000 VND
250.000 VND
250.000 VND
360.000 VND
150.000 VND
150.000 VND
160.000 VND
115.000 VNĐ
90.000 VNĐ
190.000 VND
112.000 VND
170.000 VND
150.000 VND
160.000 VND
90.000 VNĐ
190.000 VNĐ
112.000 VND
250.000 VND
180.000 VND
350.000 VND
160.000 VND
170.000 VNĐ
75.000 VND
150.000 VNĐ
290.000 VND
160.000 VND
90.000 VND
150.000 VND
90.000 VND
90.000 VND
120.000 VND
98.000 VND
260.000 VND
50.000 VND
120.000 VND
150.000 VND
190.000 VNĐ
120.000 VND
150.000 VND
150.000 VND
90.000 VNĐ
150.000 VND
180.000 VND
180.000 VND
150.000 VNĐ
150.000 VNĐ
170.000 VND
35.000 VNĐ
120.000 VND
130.000 VNĐ
90.000 VND
260.000 VND
50.000 VND
112.000 VND
250.000 VND
150.000 VND
190.000 VND
250.000 VND
170.000 VNĐ
80.000 VNĐ
90.000 VNĐ
90.000 VND
50.000 VND
10.000 VND
25.000 VND
350.000 VND
490.000 VND
17.000 VND
40.000 VND
60.000 VND
230.000 VND
80.000 VND
65.000 VND
140.000 VND
130.000 VND
195.000 VND
350.000 VND
290.000 VND
250.000 VND
150.000 VND
250.000 VND
90.000 VND
170.000 VND
90.000 VND
190.000 VND
190.000 VND
220.000 VND
140.000 VND
280.000 VND
250.000 VND
220.000 VND
170.000 VNĐ
50.000 VND
190.000 VNĐ
98.000 VND
150.000 VND
90.000 VND
360.000 VND
180.000 VND
330.000 VND
90.000 VND
150.000 VND
250.000 VND
450.000 VND
75.000 VND
330.000 VND
180.000 VNĐ
900.000 VND
250.000 VND
180.000 VNĐ
180.000 VND
180.000 VNĐ
180.000 VND
180.000 VND
180.000 VNĐ
180.000 VND
60.000 VND
190.000 VND
115.000 VNĐ
65.000 VND
60.000 VNĐ
Bạn có thể chọn thêm 4 sp

WARC-Type: response

Content-Type: application/http; msgtype=response

Server: bncserver

Content-Type: text/html; charset=UTF-8

Connection: close

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Pragma: no-cache

Vary: Accept-Encoding

Content-Encoding: gzip


markdown:
## Cùng thưởng thức ảnh đẹp SEXY không che cực hot cho mobile nào. cận cạnh chụp ảnh sex đẹp mắt cực hot 18+. Nóng bỏng mắt
![Anh sex dep mat Anh sex dep mat](http://taihinhnendep.com/wp-content/uploads/2013/02/hinhsexy.jpg)
![Anh sex dep mat Anh sex dep mat](http://taihinhnendep.com/wp-content/uploads/2013/02/hinhsexy.jpg)
[Anh sex](http://taihinhnendep.com/danh-muc/anh-sex) dep mat, nong bong qua
![hình sex không che hình sex không che](http://taihinhnendep.com/wp-content/uploads/2013/02/hinhsexy-khong-che-2.jpg)
![hình sex không che hình sex không che](http://taihinhnendep.com/wp-content/uploads/2013/02/hinhsexy-khong-che-2.jpg)
Tải
[hinh sex](http://taihinhnendep.com/hinh-sex.html) không che tuyệt đẹp dân quê nhé
Người dùng tìm đến:
- anhsex khong che hot nhat cho dien thoai
[hinh nen sex](http://taihinhnendep.com/hinh-nen-sex-cua-nhung-thien-than-samurai-cuc-nong-bong.html)ngonvl
- cận cảnh gái sexy
- chụp nén khong che
- show hang em hang ngon

WARC-Truncated: length

Server: LiteSpeed

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Set-Cookie: wpmp_switcher=desktop; expires=Tue, 01-Mar-2016 07:19:06 GMT; path=/

X-Mobilized-By: WordPress Mobile Pack 1.2.5


markdown:
|
|Tên |Ca sĩ||Mã số|
|
|
|
|Tên |Ca sĩ||Mã số|
|
|**Để nghe nhạc chuông Cô gái xì tin, ca sĩ HKT**, trình duyệt/ browser của bạn cần hỗ trợ window media, flash và javascript. Bạn cũng cần chắc chắn rằng máy tính/ điện thoại của bạn đã cài đặt âm thanh sẵn sàng.
Bài nhạc chuông Cô gái xì tin có thể hỗ trợ 4 loại: mp3, amr, đa âm và đơn âm, vui lòng tìm kiếm và đưa con trỏ chuột vào tên bài trong kết quả tìm kiếm để biết loại nhạc chuông có thể tải về.
Chú ý: Trường hợp nhạc chuông "Cô gái xì tin" là
**miễn phí**, bạn có thể nghe đầy đủ cả bài, ngược lại bạn chỉ được nghe bản đã bị cắt ngắn.
Để tải nhạc chuông Cô gái xì tin về máy tính và điện thoại, click vào nút "Điện thoại - tải về trực tiếp" hay "Máy tính - tải về trực tiếp"phía dưới player (công cụ nghe nhạc). Đưa chuột vào biểu tượng sao đánh giá 1 - 2 - 3 - 4 hay 5 sao cho bài hát đang nghe.
Lời bài hát được cập nhật thường xuyên, nếu lyric bài Cô gái xì tin chưa có chúng tôi sẽ đưa lên sớm nhất. Lời bài hát Cô gái xì tin chỉ mang tính tham khảo.
Click vào "Gửi lời bình" nếu bạn muốn gửi lời bình cho nhạc chuông này
**Bạn có thể tìm kiếm trang này ** theo các từ khóa sau đây:
Download/ nghe/ tải nhạc chuông Cô gái xì tin, ca sĩ HKT về điện thoại, mobile, máy tính, pc, computer; Tai nhac chuong Co gai xi tin cho dien thoai di dong, mobile, dtdd; Cach download nhac chuong Co gai xi tin, ca si HKT ve may tinh; Loi bai hat Co gai xi tin, ca si HKT
Hieu mien tay 17/07/13 21:48

Cache-Control: max-age=3600, public

Accept-Ranges: bytes


markdown: ThŠļŅ giŠĽõi c√Ęu c√° - HŠĽď C√Ęu C√°, B√°n CŠļßn C√Ęu C√° Ẩn Xem Quang Cao thegioicauca.com

Cache-Control: private, no-cache="set-cookie"

X-Powered-By-Plesk: PleskWin


markdown:
- Views 0
[Likes 0](#)
## Nguyên nhân gây đau dạ dày
Các thống kê về y học cũng ghi nhận người cao tuổi dễ bị loét dạ dày hơn người trẻ, người hút thuốc lá dễ bị loét dạ dày hơn người không hút thuốc lá. Trong số những người bị loét dạ dày, có đến 80% là do vi khuẩn Helicobacter Pylori và có khoảng 25% người đã bị nhiễm Helicobacter Pylori nhưng chưa bị loét dạ dày.
Cho đến khi có những yếu tố thuận lợi như hút thuốc lá, uống cafe nhiều thì vi khuẩn Helicobacter Pylori có thể tăng độc tính và gây viêm loét dạ dày. Dùng các thuốc kháng viêm giảm đau thường xuyên là nguyên nhân thứ nhì gây viêm loét dạ dày. Tất cả thuốc này đều làm giảm chất bảo vệ dạ dày là prostagladine.
Thức ăn sau khi ăn, được nhai nát ở miệng, đưa xuống dạ dày. Dạ dày tiếp tục xử lý thức ăn thành những chất dễ hấp thu hơn bằng cách tiết ra nhiều axit và men tiêu hoá để phân huỷ thức ăn thành những chất dễ hấp thu vào cơ thể. Các axit và men này cũng gây hại cho chính bản thân dạ dày nhưng dạ dày còn tiết ra chất nhầy, có tác dụng giúp dạ dày tránh được tác hại do các axit và men. Bình thường có sự cân bằng giữa 2 quá trình này nên dạ dày không bị tổn hại.
Trong thực tế, có nhiều yếu tố gây ra viêm loét dạ dày như: nhiễm vi trùng (có tên là Helicobacter Pylori), dùng thường xuyên thuốc kháng viêm giảm đau trị đau nhức khớp, ăn uống không điều độ, cuộc sống căng thẳng, thường xuyên bị stress. Khi các yếu tố này lặp đi lặp lại nhiều lần sẽ dẫn đến viêm dạ dày mãn, loét dạ dày.
Có khoảng 15% người dùng các thuốc kháng viêm giảm đau thường xuyên trên 3 tháng sẽ bị loét dạ dày. 50%-80% người phải nhập viện vì loét dạ dày đã có dùng thuốc kháng viêm giảm đau. Nếu dùng thuốc kháng viêm giảm đau liên tục trên một năm thì có thể chảy máu dạ dày.
(Theo Camnangbenh.com)

Server: Apache/2.2.26 (CentOS)

Vary: Accept-Encoding,User-Agent


markdown:
![ Piracetam 400mg](/files/pharmacy/_image/Piracetam-400mg.jpg)
# Piracetam 400mgÐiều trị triệu chứng chóng mặt. Ở người cao tuổi: Suy giảm trí nhớ, chóng mặt, kém tập trung, hoặc thiếu tỉnh táo, thay đổi khí sắc, rối loạn hành vi, kém chú ý đến bản thân, sa sút trí tuệ do nhồi máu não nhiều ổ. Ðột quỵ thiếu máu cục bộ cấp (chỉ định này là kết quả của một thử nghiệm lâm sàng ngẫu nhiên, mù đôi, có đối chứng với placebo, đa trung tâm trên 927 người bệnh đột quỵ thiếu máu cục bộ cấp cho thấy có những tiến bộ về hành vi sau 12 tuần điều trị, nhất là ở những người bệnh lúc đầu có triệu chứng thần kinh suy yếu nặng mà được dùng thuốc trong vòng 7 giờ đầu tiên sau tai biến mạch máu não). Cần chú ý tuổi tác và mức độ nặng nhẹ lúc đầu của tai biến là các yếu tố quan trọng nhất để tiên lượng khả năng sống sót sau tai biến đột quỵ thiếu máu cục bộ cấp. Ðiều trị nghiện rượu. Ðiều trị bệnh thiếu máu hồng cầu liềm (piracetam có tác dụng ức chế và làm hồi phục hồng cầu liềm in vitro và có tác dụng tốt trên người bệnh bị thiếu máu hồng cầu liềm). Ở trẻ em điều trị hỗ trợ chứng khó đọc. Dùng bổ trợ trong điều trị giật rung cơ có nguồn gốc vỏ não.
Dạng thuốc
Hộp 10 vỉ x 10 viên
Thành phần, hàm lượng
Piracetam: 400mg
Chỉ định(Dùng cho trường hợp)
Ðiều trị triệu chứng chóng mặt. Ở người cao tuổi: Suy giảm trí nhớ, chóng mặt, kém tập trung, hoặc thiếu tỉnh táo, thay đổi khí sắc, rối loạn hành vi, kém chú ý đến bản thân, sa sút trí tuệ do nhồi máu não nhiều ổ. Ðột quỵ thiếu máu cục bộ cấp (chỉ định này là kết quả của một thử nghiệm lâm sàng ngẫu nhiên, mù đôi, có đối chứng với placebo, đa trung tâm trên 927 người bệnh đột quỵ thiếu máu cục bộ cấp cho thấy có những tiến bộ về hành vi sau 12 tuần điều trị, nhất là ở những người bệnh lúc đầu có triệu chứng thần kinh suy yếu nặng mà được dùng thuốc trong vòng 7 giờ đầu tiên sau tai biến mạch máu não). Cần chú ý tuổi tác và mức độ nặng nhẹ lúc đầu của tai biến là các yếu tố quan trọng nhất để tiên lượng khả năng sống sót sau tai biến đột quỵ thiếu máu cục bộ cấp. Ðiều trị nghiện rượu. Ðiều trị bệnh thiếu máu hồng cầu liềm (piracetam có tác dụng ức chế và làm hồi phục hồng cầu liềm in vitro và có tác dụng tốt trên người bệnh bị thiếu máu hồng cầu liềm). Ở trẻ em điều trị hỗ trợ chứng khó đọc. Dùng bổ trợ trong điều trị giật rung cơ có nguồn gốc vỏ não.
Chống chỉ định(Không dùng cho những trường hợp sau)
Quá mẫn với thành phần thuốc, suy thận nặng và phụ nữ có thai, cho con bú.
Liều dùng
Liều thường dùng là 30 - 160 mg/kg/ngày, tùy theo chỉ định. Thuốc được dùng tiêm hoặc uống, chia đều ngày 2 lần hoặc 3 - 4 lần. Nên dùng thuốc uống nếu người bệnh uống được. Cũng có thể dùng thuốc tiêm để uống nếu như phải ngừng dùng dạng tiêm. Trường hợp nặng, có thể tăng liều lên tới 12 g/ngày và dùng theo đường truyền tĩnh mạch. Ðiều trị dài ngày các hội chứng tâm thần thực thể ở người cao tuổi: 1,2 - 2,4 g một ngày, tùy theo từng trường hợp. Liều có thể cao tới 4,8 g/ngày trong những tuần đầu. Ðiều trị nghiện rượu: 12 g một ngày trong thời gian cai rượu đầu tiên. Ðiều trị duy trì: Uống 2,4 g/ngày. Suy giảm nhận thức sau chấn thương não (có kèm chóng mặt hoặc không): Liều ban đầu là 9 - 12 g/ngày; liều duy trì là 2,4 g thuốc, uống ít nhất trong ba tuần. Thiếu máu hồng cầu liềm: 160 mg/kg/ngày, chia đều làm 4 lần. Ðiều trị giật rung cơ, piracetam được dùng với liều 7,2 g/ngày, chia làm 2 - 3 lần. Tùy theo đáp ứng, cứ 3 - 4 ngày một lần, tăng thêm 4,8 g mỗi ngày cho tới liều tối đa là 20 g/ngày. Sau khi đã đạt liều tối ưu của piracetam, nên tìm cách giảm liều của các thuốc dùng kèm.
Lưu ý(Thận trọng khi sử dụng)
Người lớn tuổi. Ðộng kinh.
Tác dụng phụ
Có thể xảy ra kích thích nhẹ, nhưng có thể kiểm soát được bằng cách giảm liều.
Hệ Thống Nhà Thuốc: Thuốc Và Sức Khỏe
**Cơ sở 1**: 125 Chùa Bộc - Đống Đa - Hà Nội.
Điện Thoại: 04.35630598 – 0912.514.338
**Cơ sở 2**: 182 Trung Kính - Yên Hòa - Cầu Giấy - Hà Nội.
Điện Thoại 04. 37824550 – 0912.514.338
**Cơ sở 3**: 65 ngõ 479 Đường Âu Cơ - Tây Hồ - Hà Nội.
Điện Thoại: 04.37183221 - 0912.514.338
**Cơ sở 4**: 9A tổ 24C Thanh Lương - Hai Bà Trưng - Hà Nội.
Điện Thoại: 04.39879205 – 0912.514.338
**Cơ sở 5**: 87 ngõ 34 Phố Vĩnh Tuy - Hai Bà Trưng - Hà Nội.
Điện Thoại: 04.36330317 - 0912.514.338
**Cơ sở 6**: 127 Nguyễn Trường Tộ - Ba Đình – Hà Nội.
Điện Thoại: 04.37150181 – 0912.514.338
**Cơ sở 7**: Quầy 411 Trung Tâm Dược Phẩm Hapulico Số 1 Nguễn Huy Tưởng – Thanh Xuân – Hà Nội
Điện Thoại: 0913.380.653 – 0912.514.338
[

Set-Cookie: SESSc95842d66a4ba1fbc7e9f755c08e5bcc=f2d26f8fc989070c28c99b59d325a608; expires=Wed, 25-Mar-2015 10:47:15 GMT; path=/; domain=.thuocvasuckhoe.com

Cache-Control: post-check=0, pre-check=0

Content-Type: text/html; charset=utf-8