Hi Bob, i will tell a little story that aligns perfectly with what you told:
I have a huge database system for managing car spare parts. each part can be of a specific type, thus having specific descriptive criteria each part can be linked to any number of vehicles, sometimes with a specific set of limiting criteria (age range, chassis numbers, etc) articles are categorized using what we call a generic article (you might call it a template) and for this article type there is a definition wich criteria need to be filled and wich ones are optional, also if criteria have a defined enumeration list, it can be limited for that specific use. we have long ago decided against using any kind of object for setting these criteria, as we loose flexibility: Finding articles based on generic article and criterium is quite fast in standard tables, but when it comes to mass application of criteria or mass modifications a separate table is much more flexible, also on im- and export, data aggregation, reporting, etc. etc.. The data structure is quite complex, granted, but I have yet to find a compelling reason to use anything else, as there is nothing I cannot do with a separate table. And that is my main argument: IMHO it only makes sense to switch to another tool if there is a distinct benefit, and that is something I do not see yet, on the contrary, there are a lot of things i cannot do easily when using object fields. So for now, until a compelling reason comes along, I use objects only as a kind of „attic“ for the record, keeping complex data I only need from time to time (audit trail, source file references, record history, etc. etc.) and that never will be used for any business logic. OTOH I love c_objects variables in the language and make heavy use of these, they allow for a much cleaner approach to development (from passing parameters, to replacing process variables, storing form object settings, etc. etc.). Hope this helped, available for further questions, also by PM. Cheers Alex > Am 13.09.2017 um 16:28 schrieb bob.miller--- via 4D_Tech > <4d_tech@lists.4d.com>: > > Along the lines of, "what is an appropriate use of an object field", I've > been considering this: > > We are a manufacturing company with lots of tools and lots of products. > Each tool has various attributes, but each tool type has a different set > of characteristics. > > Silly example that I hope everyone can follow: if the tool type is > "screwdriver" then the attributes might be: > > Tip Type (blade, Phillips, Torx, etc.) > Tip Size (#1 or #2) > Shank length (in mm) > Handle diameter (in mm) > > > ...If the tool type, however, is "hammer" then the attributes might be: > > Head type (claw, peen, sledge, etc.) > Claw shape > Head weight > Shank material > Shank length > Grip Type > ...and many more > > > Common to all tools, regardless of tool type are attributes such as: > > Tool ID > Tool Type - which determines the format and contents of the object field > that contains the attributes > Storage Location > Purchase Date > Condition (good, fair, poor, unusable) > Status (ready to use, in use, lost) > > > 90% of the time users want to enter a Tool ID to retrieve the Storage > Location, Condition, and Status. 10% of the time they know the tool type > but don't know the tool ID and want to query for a tool to do the job, > using one or several attributes. I've been thinking that because there > are so many tool types and so many attribute "collections", an object > field might be a good place to store the attribute data in name-value > pairs. This way I don't have to have a table with every single attribute > name, which would be a problem because I don't know them in advance (users > want to be able to specify the attributes themselves, along with the > attribute value of course) and many tools do not share many attributes, so > a big mostly-empty record would result if I used fields. > > The object field on a record with Tool Type = "screwdriver" would contain > attributes for a screwdriver, while the object field on a record with a > different Tool Type would contain a different set of attributes. A table > for "Tool Type" would have one record for each tool type and could also > use an object field to contain the attribute names, since this would be > more handy than having multiple records for each tool type, one for each > attribute name. The normalized, relational model isn't really needed > here, though of course it could be used. > > An object field seems ideal for this kind of application, and 'Query by > Attribute' certainly makes it possible. > > There are always LOTS of ways to solve a problem, but do you agree that an > object field is a good way to solve this one? If it is a mediocre way to > solve it, I'd like to hear your comments! > > > Bob Miller > Chomerics, a division of Parker Hannifin Corporation > > > > ********************************************************************** > 4D Internet Users Group (4D iNUG) > FAQ: http://lists.4d.com/faqnug.html > Archive: http://lists.4d.com/archives.html > Options: http://lists.4d.com/mailman/options/4d_tech > Unsub: mailto:4d_tech-unsubscr...@lists.4d.com > ********************************************************************** ********************************************************************** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: http://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **********************************************************************