Complex insert query to normalised database

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

Complex insert query to normalised database

Flakheart
Apologies in advance folks, please forgive the question and the formatting.

I have around 650,000 recipes and through lots of study have more or less determined that the table structures below will give me a reasonable normalised database.

That is not to say that it is perfect, but it is a start.

Querying such a thing isn't a problem, I have played with queries to work on existing normalised databases and 'got the picture'.

My problem is that: Given all the data on a form from which I gather what to insert, how would a complex insert statement look to update all the various tables to keep the relationships. I have no idea how it would look?? Haven't seen any examples on this, just queries.

I can deal with single table inserts but I think this would be some sort of nested insert statement?

If anyone could help me with an example or at least point me to where I could see examples of updating normalised databases, I would be grateful.

Thank you.
recipes table             recipe_id             ; Unique record number
                               recipe_name           ; Recipe title
                               recipe_version        ; Revision number
                               recipe_owner          ; Recipe owner (home reference)
                               recipe_author         ; Who wrote the recipe
                               recipe_source         ; Where the recipe was sourced from
                               recipe_copyright      ; Recipe owner isn't necessarily copyright holder
                               recipe_lastupdate     ; Last time this was updated
                               recipe_favourite      ; Marked as a favourite
                               recipe_deleted        ; Marked as deleted, to be purged
                               recipe_description    ; Specific recipe description
                               recipe_notes          ; General notes
                               recipe_servings       ; Number of servings
                               recipe_peparationtime ; Preparation time
                               recipe_cookingtime    ; Cooking time
                               recipe_totaltime      ; Total time

ingredients table       ingredient_id         ;
                               ingredient_name       ;
                               ingredient_price      ;

recipe_ingredients table     recipe_id             ;
                               ingredient_id         ;
                               ingredient_amount     ;

recipe_instructions table    recipe_id             ;
                               recipe_step           ;
                               step_description      ;

category table               category_id           ;
                               category_name         ;

recipe_category table        recipe_id             ;
                               category_id           ;

picture table                picture_id            ;
                               picture_name          ;
                               picture_url           ;

recipe_pictures table        recipe_id             ;
                               picture_id            ;
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Stephen Chrzanowski
AFAIK, you can't do 'nested insert', or, insert to multiple tables in one
call. Not from a single command line, or, from a view.  You're pretty much
stuck with updating one table at a time.

It would be nice, however, problems can come up with a many-to-many
situation where the engine isn't sure what to push to the database due to
FK constraints.  The view may exclude vital information.


On Wed, Feb 18, 2015 at 6:38 AM, Flakheart <[hidden email]> wrote:

> Apologies in advance folks, please forgive the question and the formatting.
>
> I have around 650,000 recipes and through lots of study have more or less
> determined that the table structures below will give me a reasonable
> normalised database.
>
> That is not to say that it is perfect, but it is a start.
>
> Querying such a thing isn't a problem, I have played with queries to work
> on
> existing normalised databases and 'got the picture'.
>
> My problem is that: Given all the data on a form from which I gather what
> to
> insert, how would a complex insert statement look to update all the various
> tables to keep the relationships. I have no idea how it would look??
> Haven't
> seen any examples on this, just queries.
>
> I can deal with single table inserts but I think this would be some sort of
> nested insert statement?
>
> If anyone could help me with an example or at least point me to where I
> could see examples of updating normalised databases, I would be grateful.
>
> Thank you.
> recipes table             recipe_id             ; Unique record number
>                                recipe_name           ; Recipe title
>                                recipe_version        ; Revision number
>                                recipe_owner          ; Recipe owner (home
> reference)
>                                recipe_author         ; Who wrote the recipe
>                                recipe_source         ; Where the recipe was
> sourced from
>                                recipe_copyright      ; Recipe owner isn't
> necessarily copyright holder
>                                recipe_lastupdate     ; Last time this was
> updated
>                                recipe_favourite      ; Marked as a
> favourite
>                                recipe_deleted        ; Marked as deleted,
> to
> be purged
>                                recipe_description    ; Specific recipe
> description
>                                recipe_notes          ; General notes
>                                recipe_servings       ; Number of servings
>                                recipe_peparationtime ; Preparation time
>                                recipe_cookingtime    ; Cooking time
>                                recipe_totaltime      ; Total time
>
> ingredients table       ingredient_id         ;
>                                ingredient_name       ;
>                                ingredient_price      ;
>
> recipe_ingredients table     recipe_id             ;
>                                ingredient_id         ;
>                                ingredient_amount     ;
>
> recipe_instructions table    recipe_id             ;
>                                recipe_step           ;
>                                step_description      ;
>
> category table               category_id           ;
>                                category_name         ;
>
> recipe_category table        recipe_id             ;
>                                category_id           ;
>
> picture table                picture_id            ;
>                                picture_name          ;
>                                picture_url           ;
>
> recipe_pictures table        recipe_id             ;
>                                picture_id            ;
>
>
>
>
> --
> View this message in context:
> http://sqlite.1065341.n5.nabble.com/Complex-insert-query-to-normalised-database-tp80590.html
> Sent from the SQLite mailing list archive at Nabble.com.
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

gunnar
In reply to this post by Flakheart
Hi,

I'm not an sqlite expert but in general I think you can insert in the
tables one by one, but in the right order. And make sure the different
inserts per recipe belong to one transaction (if one fails, the previous
are rolled back automatically).

You should probably also study https://www.sqlite.org/foreignkeys.html 
and with the definitions of your foreign keys pay attention to the 'on
update cascade ...'and 'on delete cascade ...'


gr.,
Gunnar





On 02/18/2015 12:38 PM, Flakheart wrote:

> Apologies in advance folks, please forgive the question and the formatting.
>
> I have around 650,000 recipes and through lots of study have more or less
> determined that the table structures below will give me a reasonable
> normalised database.
>
> That is not to say that it is perfect, but it is a start.
>
> Querying such a thing isn't a problem, I have played with queries to work on
> existing normalised databases and 'got the picture'.
>
> My problem is that: Given all the data on a form from which I gather what to
> insert, how would a complex insert statement look to update all the various
> tables to keep the relationships. I have no idea how it would look?? Haven't
> seen any examples on this, just queries.
>
> I can deal with single table inserts but I think this would be some sort of
> nested insert statement?
>
> If anyone could help me with an example or at least point me to where I
> could see examples of updating normalised databases, I would be grateful.
>
> Thank you.
> recipes table             recipe_id             ; Unique record number
>                                 recipe_name           ; Recipe title
>                                 recipe_version        ; Revision number
>                                 recipe_owner          ; Recipe owner (home
> reference)
>                                 recipe_author         ; Who wrote the recipe
>                                 recipe_source         ; Where the recipe was
> sourced from
>                                 recipe_copyright      ; Recipe owner isn't
> necessarily copyright holder
>                                 recipe_lastupdate     ; Last time this was
> updated
>                                 recipe_favourite      ; Marked as a favourite
>                                 recipe_deleted        ; Marked as deleted, to
> be purged
>                                 recipe_description    ; Specific recipe
> description
>                                 recipe_notes          ; General notes
>                                 recipe_servings       ; Number of servings
>                                 recipe_peparationtime ; Preparation time
>                                 recipe_cookingtime    ; Cooking time
>                                 recipe_totaltime      ; Total time
>
> ingredients table       ingredient_id         ;
>                                 ingredient_name       ;
>                                 ingredient_price      ;
>
> recipe_ingredients table     recipe_id             ;
>                                 ingredient_id         ;
>                                 ingredient_amount     ;
>
> recipe_instructions table    recipe_id             ;
>                                 recipe_step           ;
>                                 step_description      ;
>
> category table               category_id           ;
>                                 category_name         ;
>
> recipe_category table        recipe_id             ;
>                                 category_id           ;
>
> picture table                picture_id            ;
>                                 picture_name          ;
>                                 picture_url           ;
>
> recipe_pictures table        recipe_id             ;
>                                 picture_id            ;
>
>
>
>
> --
> View this message in context: http://sqlite.1065341.n5.nabble.com/Complex-insert-query-to-normalised-database-tp80590.html
> Sent from the SQLite mailing list archive at Nabble.com.
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Flakheart
In reply to this post by Stephen Chrzanowski
Thanks Stephen. At least I know now so I can go ahead and create my inserts from data from the form. I just have to be careful to make sure they are done in an efficient order with the data in the right place.

The category one I have to be careful of as it isn't in a list control but a string box, separated by semicolons (Maybe it should be in a listbox) so I am not sure how to 'normalise' that yet. But I will.

I'm sure I will have questions!
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Simon Slavin-3
In reply to this post by Flakheart

On 18 Feb 2015, at 11:38am, Flakheart <[hidden email]> wrote:

> I can deal with single table inserts but I think this would be some sort of
> nested insert statement?

There are no statements in SQL which can modify more than one table.  So you will need to use a number of commands, one for each table.

However you should enclose all the commands in a transaction:

BEGIN;
INSERT INTO tableA ...;
INSERT INTO tableB ...;
INSERT INTO tableC ...;
COMMIT;

That way if any one of the commands is not executed because of an error, none of the commands will be executed and you won't have half a recipe in your system.  From your schema it looks like you are going to have to INSERT into your recipe table first, then find out what number was assigned to recipe_id and use that when modifying the other tables.  It's possible to do all this within the same transaction.

It might be a good idea to specify in your schema that all _id fields are INTEGERs as follows:


recipe_instructions table    recipe_id  INTEGER           ;
                              recipe_step  INTEGER         ;
                              step_description TEXT     ; .

By the way, it would be possible to use FOREIGN KEYs to ensure that, for example, the 'recipe_id' column in your ingredients table only had genuine recipe_id numbers in it.  However, if you trust your software and your programming it's not necessary to do this.

Simon.
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Staffan Tylen
I suspect that this is wrong as nobody has suggested it but isn't this what
triggers are meant to solve?

Staffan


On Wed, Feb 18, 2015 at 2:13 PM, Simon Slavin <[hidden email]> wrote:

>
> On 18 Feb 2015, at 11:38am, Flakheart <[hidden email]> wrote:
>
> > I can deal with single table inserts but I think this would be some sort
> of
> > nested insert statement?
>
> There are no statements in SQL which can modify more than one table.  So
> you will need to use a number of commands, one for each table.
>
> However you should enclose all the commands in a transaction:
>
> BEGIN;
> INSERT INTO tableA ...;
> INSERT INTO tableB ...;
> INSERT INTO tableC ...;
> COMMIT;
>
> That way if any one of the commands is not executed because of an error,
> none of the commands will be executed and you won't have half a recipe in
> your system.  From your schema it looks like you are going to have to
> INSERT into your recipe table first, then find out what number was assigned
> to recipe_id and use that when modifying the other tables.  It's possible
> to do all this within the same transaction.
>
> It might be a good idea to specify in your schema that all _id fields are
> INTEGERs as follows:
>
>
> recipe_instructions table    recipe_id  INTEGER           ;
>                               recipe_step  INTEGER         ;
>                               step_description TEXT     ; .
>
> By the way, it would be possible to use FOREIGN KEYs to ensure that, for
> example, the 'recipe_id' column in your ingredients table only had genuine
> recipe_id numbers in it.  However, if you trust your software and your
> programming it's not necessary to do this.
>
> Simon.
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Flakheart
In reply to this post by gunnar
Thanks Gunnar. Having never used foreign keys before, I am up for a lot of reading. Hope this isn't beyond me:):)
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Flakheart
Here is something I don't understand. From my reading of foreign keys, it points to the unique id of the table record that it references right?

If I insert a recipe with a specific category and then a different recipe that uses the same category, how then does this foreign key work without storing duplicate categories in the category table?

Then later on, I need a recipe to be a member of multiple categories. I have no idea how this would work.

I'm at sea here.

CREATE TABLE recipe_data(
  recipe_id                      INTEGER PRIMARY KEY AUTOINCREMENT,
  recipe_name               TEXT,
  recipe_version             TEXT,
  recipe_lastupdate          TEXT,
  recipe_favourite            INTEGER,
  recipe_deleted              INTEGER,
  recipe_description       TEXT,
  recipe_notes               TEXT,
  recipe_servings           INTEGER,
  recipe_peparationtime   TEXT,
  recipe_cookingtime       TEXT,
  recipe_totaltime     TEXT
);

CREATE TABLE category(
      category_id     INTEGER PRIMARY KEY AUTOINCREMENT,
      category_name     TEXT,
      recipe_id     INTEGER,
      FOREIGN KEY(recipe_id) REFERENCES recipe_data(recipe_id)
);
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

gunnar
You should make the relation the other way around.
Remove the foreign key  from category and add to recipe_data a field
recipe_category_id and add also to the recipe_data table a foreign key

FOREIGN KEY(recipe_category_id) REFERENCES category(category_id)


Then you have defined a 1 to many relationship (each recipe_data belongs
to at most one category and each category can belong to many recipe_data's).


If you want a many to many relationship (which you want from what I
read) then you need one extra table in between with two fields

recipe_data_category
   recipe_id
   category_id
   FOREIGN KEY(recipe_id) REFERENCES recipe_data(recipe_id)
   FOREIGN KEY(category_id) REFERENCES category(category_id)


something like that.


Gunnar







On 02/19/2015 09:26 AM, Flakheart wrote:

> Here is something I don't understand. From my reading of foreign keys, it
> points to the unique id of the table record that it references right?
>
> If I insert a recipe with a specific category and then a different recipe
> that uses the same category, how then does this foreign key work without
> storing duplicate categories in the category table?
>
> Then later on, I need a recipe to be a member of multiple categories. I have
> no idea how this would work.
>
> I'm at sea here.
>
> CREATE TABLE recipe_data(
>    recipe_id                      INTEGER PRIMARY KEY AUTOINCREMENT,
>    recipe_name               TEXT,
>    recipe_version             TEXT,
>    recipe_lastupdate          TEXT,
>    recipe_favourite            INTEGER,
>    recipe_deleted              INTEGER,
>    recipe_description       TEXT,
>    recipe_notes               TEXT,
>    recipe_servings           INTEGER,
>    recipe_peparationtime   TEXT,
>    recipe_cookingtime       TEXT,
>    recipe_totaltime     TEXT
> );
>
> CREATE TABLE category(
>        category_id     INTEGER PRIMARY KEY AUTOINCREMENT,
>        category_name     TEXT,
>        recipe_id     INTEGER,
>        FOREIGN KEY(recipe_id) REFERENCES recipe_data(recipe_id)
> );
>
>
>
> --
> View this message in context: http://sqlite.1065341.n5.nabble.com/Complex-insert-query-to-normalised-database-tp80590p80623.html
> Sent from the SQLite mailing list archive at Nabble.com.
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

gunnar
(And if you go for the one to many in between table, then you shouldn't
add the recipe_category_id field to recipe-data and also not the foreign
key).

An alternative is when you say that one recipe_data can belong to at
most, say, 5 categories.
Then you can do without the extra table and add recipe_category_id1,
recipe_category_id2, ... recipe_category_id5 fields to recipe_data. And
5 foreign keys.



On 02/19/2015 10:08 AM, gunnar wrote:

> You should make the relation the other way around.
> Remove the foreign key  from category and add to recipe_data a field
> recipe_category_id and add also to the recipe_data table a foreign key
>
> FOREIGN KEY(recipe_category_id) REFERENCES category(category_id)
>
>
> Then you have defined a 1 to many relationship (each recipe_data
> belongs to at most one category and each category can belong to many
> recipe_data's).
>
>
> If you want a many to many relationship (which you want from what I
> read) then you need one extra table in between with two fields
>
> recipe_data_category
>   recipe_id
>   category_id
>   FOREIGN KEY(recipe_id) REFERENCES recipe_data(recipe_id)
>   FOREIGN KEY(category_id) REFERENCES category(category_id)
>
>
> something like that.
>
>
> Gunnar
>
>
>
>
>
>
>
> On 02/19/2015 09:26 AM, Flakheart wrote:
>> Here is something I don't understand. From my reading of foreign
>> keys, it
>> points to the unique id of the table record that it references right?
>>
>> If I insert a recipe with a specific category and then a different
>> recipe
>> that uses the same category, how then does this foreign key work without
>> storing duplicate categories in the category table?
>>
>> Then later on, I need a recipe to be a member of multiple categories.
>> I have
>> no idea how this would work.
>>
>> I'm at sea here.
>>
>> CREATE TABLE recipe_data(
>>    recipe_id                      INTEGER PRIMARY KEY AUTOINCREMENT,
>>    recipe_name                    TEXT,
>>    recipe_version                 TEXT,
>>    recipe_lastupdate          TEXT,
>>    recipe_favourite                INTEGER,
>>    recipe_deleted                  INTEGER,
>>    recipe_description            TEXT,
>>    recipe_notes                   TEXT,
>>    recipe_servings                INTEGER,
>>    recipe_peparationtime   TEXT,
>>    recipe_cookingtime       TEXT,
>>    recipe_totaltime         TEXT
>> );
>>
>> CREATE TABLE category(
>>        category_id             INTEGER PRIMARY KEY AUTOINCREMENT,
>>        category_name         TEXT,
>>        recipe_id             INTEGER,
>>        FOREIGN KEY(recipe_id) REFERENCES recipe_data(recipe_id)
>> );
>>
>>
>>
>> --
>> View this message in context:
>> http://sqlite.1065341.n5.nabble.com/Complex-insert-query-to-normalised-database-tp80590p80623.html
>> Sent from the SQLite mailing list archive at Nabble.com.
>> _______________________________________________
>> sqlite-users mailing list
>> [hidden email]
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>
>

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Simon Slavin-3
In reply to this post by Flakheart

> On 19 Feb 2015, at 8:26am, Flakheart <[hidden email]> wrote:
>
> If I insert a recipe with a specific category and then a different recipe
> that uses the same category, how then does this foreign key work without
> storing duplicate categories in the category table?
>
> Then later on, I need a recipe to be a member of multiple categories. I have
> no idea how this would work.
>
> I'm at sea here.
>
> CREATE TABLE recipe_data(
>  recipe_id                      INTEGER PRIMARY KEY AUTOINCREMENT,
>  recipe_name               TEXT,
>  recipe_version             TEXT,
>  recipe_lastupdate          TEXT,
>  recipe_favourite            INTEGER,
>  recipe_deleted              INTEGER,
>  recipe_description       TEXT,
>  recipe_notes               TEXT,
>  recipe_servings           INTEGER,
>  recipe_peparationtime   TEXT,
>  recipe_cookingtime       TEXT,
>  recipe_totaltime     TEXT
> );
>
> CREATE TABLE category(
>      category_id     INTEGER PRIMARY KEY AUTOINCREMENT,
>      category_name     TEXT,
>      recipe_id     INTEGER,
>      FOREIGN KEY(recipe_id) REFERENCES recipe_data(recipe_id)
> );

I'll give you another structure which will allow each recipe to be filed under many categories, and uses FOREIGN KEYs to enforce correct data-handling.  I'm going to try to guess the conventions and style you're using but please excuse me if I get it wrong.

CREATE TABLE recipe_data exactly as above

CREATE TABLE category(
     category_id     INTEGER PRIMARY KEY AUTOINCREMENT,
     category_name     TEXT
);

CREATE TABLE recipes_in_categories(
     r_i_c_id     INTEGER PRIMARY KEY AUTOINCREMENT,
     recipe_id     INTEGER REFERENCES recipe_data(recipe_id),
     category_id INTEGER REFERENCES category(category_id)
);

Normally for the foreign keys to work you'd have to create indexes on the referenced fields.  But since an INTEGER PRIMARY KEY AUTOINCREMENT field is automatically indexed this isn't necessary.

Simon.

Simon.
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Simon Slavin-3

Sorry, I accidentally included 'INTEGER' before 'REFERENCES'.  Should have been

CREATE TABLE category(
    category_id INTEGER PRIMARY KEY AUTOINCREMENT,
    category_name TEXT
);

CREATE TABLE recipes_in_categories(
    r_i_c_id INTEGER PRIMARY KEY AUTOINCREMENT,
    recipe_id REFERENCES recipe_data(recipe_id),
    category_id REFERENCES category(category_id)
);

Simon.
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Flakheart
In reply to this post by gunnar
"FOREIGN KEY(recipe_category_id) REFERENCES category(category_id)"

Thank you gunnar. I don't understand it yet but will work hard at it. Once I make up some dummy data to play with, it might get me a better idea of how all this works.

One thing I have no lack of is recipes!

My ambition is to one day have a database of several million.
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

Flakheart
This post was updated on .
In reply to this post by Simon Slavin-3
"I'm going to try to guess the conventions and style you're using but please excuse me if I get it wrong."

I would not dare to criticise what I do not understand. I am incredibly grateful!

Lots of study to do. Not that I sleep much any more:):)

Wow! Just updated my table structures with all the suggestions. No idea how to insert into all this lot, much less query it. I think this is way beyond my skill set, but thanks for all the help.

I'll start searching for examples of people who have done inserts to this sort of structure to give me examples to learn from. Maybe teach my old brain:):)
Reply | Threaded
Open this post in threaded view
|

Re: Complex insert query to normalised database

James K. Lowden
In reply to this post by Staffan Tylen
On Wed, 18 Feb 2015 14:16:32 +0100
Staffan Tylen <[hidden email]> wrote:

> I suspect that this is wrong as nobody has suggested it but isn't
> this what triggers are meant to solve?

Triggers were invented before SQL defined what we now call Declarative
Referential Integrity (DRI).  It is (I'm going to say) always
preferable to declare your integrity constraints rather than
programming them imperatively.  

If you find yourself in a situation in which DRI is insufficient,
it's a good idea to look for a normalization problem or consider if the
trigger is being "abused", i.e., being used for something other than
referential integrity enforcement.  There are exceptions, but not
many.  

--jkl
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users