BBS: Inland Empire Archive
Date: 01-09-93 (04:15)             Number: 343
From: WES GARLAND                  Refer#: NONE
  To: RICK NEWMAN                   Recvd: NO  
Subj: DATABASE STRUCTURE             Conf: (2) Quik_Bas
Hi Rick!

 RN> It's a recipe database.  I have up to 50 recipes which will each need
 RN> 5 or six fields within each record.  In addition, each recipe will have
 RN> an unlimited number of ingredients, which of course will each have a
 RN> coresponding quantity and unit of measure.  I'm currently trying to
 RN> use TYPE's, which seems to make sense & is fairly easy to understand
 RN> and use.  However, there seems to be several ways to go regarding
 RN> the way the recipes and the ingredients relate to each other.  IE,
 RN> should they all be in one huge array?  If so, then I can't have an
 RN> unlimited number of ingredients per recipe, can I?
 RN> I could certainly use some of the expertise that is obviously on this
 RN> conference!  Can anyone offer some suggestions and/or help??

Due to the nature of random files with respect to your application, I would
NOT use them. Also, since you only need to access one
recipe at a time, I would not use an array with all of them
in memory. Why not try a linked list approach? From the
nature of recipes, I wouldn't recommend putting each
ingredient in a separate variable, WAAAAY too tedious. Why
not have the user enter each recipe into a nice little text
file of some sort,as long as they want, with nice
descriptions, etc. You could write something to spice it
up, or just use Q.EXE (or even QBASIC /EDIT, heh) or
something to type them in, and then store them.. A record
struct like this might help:

'INCLUDE$:'Everylib you have, to make compiling as slow as
possible' 'Insert evil, maniacal grin. :-)

TYPE RecipeType
    Title       as string * 30      ' Name of the recipe
    KeyWord1    as string * 10      ' Keyword, like "moose" or "cashew"
    KeyWord2    as string * 10      ' or "soup" or "pie", for searching
    RecipeLen   as integer          ' Length of the text to imbed. End Type

Dim RecipeHeader as RecipeType
Dim Temp as string
Dim Str as string

Function TypeToStr$ (RHdr as RecipeType)    ' Turns the type into a String,
                                            ' for easy BINARY file access
    TypeToStr = RHdr.Title + RHdr.KeyWord1 + RHDir.Keyword2
+ mki$(RecipeLen) End Function

Sub StrToType (Str as String, RHdr as RecipeType) ' Turns the str into a type.
                                                  ' Same reason as above :-)
    RHdr.Title = left$(Str,30)
    RHdr.KeyWord1 = mid$(Str,31,40)
    RHdr.KeyWord2 = mid$(Str,41,50)
    RHdr.RecipeLen = cvi(right$(Str,2))
End Sub


--- Maximus 2.01wb
 * Origin: Terminal Velocity Kingston *CANADA* (613)542-4613/6594, (1:249/128)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET