- Can FM allow for what rails calls polymorphic relationships? For example, a files/attachments table that will house all attachments for different tables?
tableA::ID_record = fileStore::ID_related_record
tableA::ID_table = fileStore::ID_related_table
tableB::ID_record = fileStore::ID_related_record
tableB::ID_table = fileStore::ID_related_table
In tableA, tableB, etc, the table ID is a fixed string, I use three letter abbreviations.
- What is the optimal table structure in FM for best performance? Any major differences from typical SQL based DBs?
How long is a piece of string?
Data size: The layouts are very important to filemaker web applications. Filemaker returns the entire record set, the fields in the record are defined by the layout. If they are not on the layout web does not see them. Make layouts fit the task.
Language: FMP is not based on SQL. However, 12 has SQL tools so the story is changing.
- Is the trend now to move design/layout, scripts, and data to different file? For performance or ease of development?
Both the single file camp and the Separation camp have powerful arguments in their favour.
Web apps don't care. They like to speak directly to the file storing the table.
- Is it recommended to silo different business units (with shared access to common data) or combine into one FM file? Is this relatively straightforward to do?
That decision can't be made without knowing the business very well. You are thinking of using the separation model and providing different UIs to different groups. Will that make it easier to manage or not?
- Any beautiful filemaker layout references?
Make it easy for people to get their work done and they'll forgive the fact that your layouts were drawn by an angry child with a box of crayons.
- Any way to incorporate effects into layouts?
window slide left|right|top|bottom, fade in, fade out, checkerboard, etc? No. Export to PowerPoint
- Any references for complete audit trails in FM12? Is something like this built in?
There is nothing built-in. There are solutions you can buy or you build it yourself.
Awesome Malcom - Thanks!
We will actually be switch from Web to FM on the client and FMGo for mobile. (Ofcourse that may change as we start to use it)
Any reason you can't use FMP ESS (External SQL Source) to connect to your current Web database, if its SQL? It should be pretty easy to either create FMP shadow tables to the current SQL table(s) and script the updates between them,
OR use the ESS directly in FMP.
It really depends on where you are going, why you are going there, and how you want to get there.
As a follow up, are there any new/useful ways for getting your app to interact with Web APIs? Or is the standard to use a method similar to the one described here: http://hbase.net/2012/06/05/making-filemaker-interact-with-google-translate/
Checkout https://github.com/lardawge/rfm if you ever need to have Rails talk to FMP. The instructions say to use "username" in the Server setup but it is actually "account_name".
There are many ways to talk to API's but since I am a Rails dev myself, I write most of that in Ruby. I put the code in a field and set a global variable on startup. If you put the Ruby code in a field, there is no need to use the list function with all the quote escaping. I then call it using the Beezwax free plugin. http://www.beezwax.net/products/bbox
# Simple script using a gem
code = $stdin.read
colorized = CodeRay.scan(code, :ruby).div.gsub("\n", '<br>')
@url = url
# do parsing here
If you are developing for an ipad or iphone, I highly recommend using FM 13 instead of FM 12 for your development. FM Go 13 is a huge improvement over FileMaker Go 12.
Polymorphic relationships: Sure. Just use UUIDs for your keys and you don't even need a second field to hold the table name.
Optimal table stucture: Depends on a lot of issues. FM is a still a relational database management system with its own quirks. It doesn't natively enfore referential integrity. There are far fewer data types. NULL is handled differently.
Separation model: You probably want to. It can make development slightly faster on large systems. Others will disagree.
Siloing: Are you separating business units mostly out of convenience or security requirements? You may want to consider a separation model with different interface files for each units.
200 concurrent users: FileMaker may not be the best choice for you. That's really pushing it.