[Tutor] Python - SQL paradigm (Will I need a hammer to make it fit?)

bob bgailer at alum.rpi.edu
Fri Dec 16 06:39:05 CET 2005


At 02:14 AM 12/14/2005, Liam Clarke wrote:
>Hi all,
>
>Just contemplating.
>
>If in Python I were organising a data index along the lines of  -
>
>j = {
>
>"k_word1" : ["rec1","rec2","rec3","rec4"],
>...
>"k_wordn" :["recX","rec4"]
>
>}
>
>and I was going to find records that matched by seeing what record
>occurred in the most lists (via set intersections or similar; going to
>have a play see what works faster) selected by searching keywords...
>
>how easily does that translate to a SQL table and query format?

Data modeling looks for relationships between objects. Relationships 
can be 1-1 1-many or many-many. Your case is a many-many
(each keyword may appear in one or more records, and each record may 
contain one or more keywords.) The customary way to represent this in 
a relational database 3 tables. One with one row per keyword, one 
with one row per record and one "junction" or "association" table 
with one row for each keyword-record pair.

KEYWORD TABLE
kid   keyword
1    cat
2    dog
3    mouse
4    bird
5    banana

RECORD TABLE
rid   record
1    rexX
2    rec4
3    recAB
4    rec99
5    recFoo

KEYWORD-RECORD TABLE
kid rid
1   1
1   3
1   4
2   2
3   5
4   1
5   3

For processing things like this nothing IMHO beats a relational 
database and SQL. With many databases accessible from Python I 
strongly suggest this approach. SQLite is especially attractive.
[snip] 



More information about the Tutor mailing list