in reply to [untitled node, ID 308077]

If you haven't seen it yet, look at Class::DBI. You basically define objects, and the relations between them, and the code handles the fetching and storing.

Sounds like you have 1-to-many Stores and 1-to-many Items, with a many-to-many cross-product Inventory in-between. Not sure why you distinguish "Items" from "Weapons" from "Armor" as table types... might be simpler just to have an item have a description field or a 1-to-many properties field.

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.

Replies are listed 'Best First'.
Re: •Re: Efficiency MySQL question
by jdtoronto (Prior) on Nov 18, 2003 at 19:45 UTC
    But Randal nobody could ever accuse Class::DBI of being fast. Others he, and myself, have seen speed differences of 10:1 using direct SQL versus using Class::DBI with MySQL as the underlying database.

    I would however suggest the writer do some searching, in the SuperSearch on the site here look for 'database', or go and look in the tutorials, there are some excellent documents there.

    jdtoronto

Re: •Re: Efficiency MySQL question
by hardburn (Abbot) on Nov 18, 2003 at 19:34 UTC

    Not sure why you distinguish "Items" from "Weapons" from "Armor" as table types . . .

    My guess is that (being this is for an RPG), 'weapons' and 'armor' have to store certain modifiers (like "+3 magic defense, -2 speed") which might not make sense for the other categories. Unifying the tables while handling modifiers elegantly probably isn't easy.

    Update: Actually, now that I've thought about it a bit longer, the actual attributes of the various item types are probably going to be static, so there's little sense in putting them in the database. Instead, they should probably be in a configuration file, and the data in the file related to the items in a store. This should be easy to do with Class::DBI, since it doesn't say that classes in a relationship with the current class must use a database.

    ----
    I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
    -- Schemer

    : () { :|:& };:

    Note: All code is untested, unless otherwise stated