1) It is my understanding that EE is a development platform (CMS), that accesses data from a MySQL database.
Yes.
2) Each weblog, as far as I understand, maps to a single MySQL table. In other words, a weblog is a user view of the table.
No. As mentioned above all weblog data - regardless of the number of weblogs comprising a site - get stored in the same MySQL tables. This is why I suggested a look at the EE data structure.
3) Since most applications require a logical database of multiple SQL tables in order to efficiently store data, most EE applications will require the definition of multiple weblogs, which appear to be in actuality multiple MySQL relational tables. This is commonly referred to as the the logical design. Weblogs (tables) are related to each other by unique keys in the MySQL tables.
Yes and no, as per above. Weblogs do not map 1:1 to MySQL tables.
4) EE allows the definition of views (same as a SQL View), by relating two (or more?) weblogs (tables).
EE allows templates to pull content from multiple weblogs. I’m not sure if that’s what you would call a “view”.
Additionally, those weblogs being pulled to the same template may or may not use EE’s relationship feature. They could be “related” using categories, or may not have a data relationship at all.
5) EE will generate the necessary SQL statements in order to retrieve the data from multiple tables. If this is true, I am attempting to find out if the generating SQL statement is a series of single table SQL statements or SQL join statements, since joins can be optimized and yield far better performance than single table SELECT statements.
EE does generate the necessary SQL statements to pull the content as you’ve requested in a template. However you will not - at least from within the EE interface - be able to do any query optimization on the SQL statements it generates. If you want to change those SQL statements you’d be into hacking EE core code, which I would not recommend. I also have great faith in the EE developers that those queries are as optimized as they can be.
6) The weblog relationship views can be easily displayed on an EE form, without programming code.
Displaying related content on a EE template requires the use of EE tags - so I’m not sure if that is or isn’t “programming code”. It won’t require PHP but will require knowledge of the EE tagset.
7) For more advanced manipulation/filtering of data, it may be necessary to use CI programming code, in the same what Access may require Visual Basic.
The current version of EE is not CI based - that’s what 2.0 brings to the table. However if you need to get content out of the EE database in a way that the default EE tags won’t provide you can use the current query module to store SQL statements directly in your EE template.
I think that EE’s data handling is probably rudimentary compared to Access, however, it appears that EE can define Views via the relationship specification.
Again, EE is not a RDMS. The current relationship abilities can really be described as letting you establish multiple 1:1 joins between weblog posts. So in the case of a company with sales, you’d have a weblog holding company information and a weblog to hold sales information (and again, from a MySQL perspective all this data is in the same table). From an EE perspective you’d chose the parent company from each post in the sales weblog. Each sale would have only one company. Then you can use either related entries (to show which company is related to the sale) or reverse related entries (to show sales for a given company).
I hope this breaks it down a bit, and if you can tell me where my understanding is wrong, it will help facilitate my evaluation process. Thanks again for your assistance.
I know the mindset you’re coming from having done 5-6 years of Access and VB work. But I find that ~98% of the time I just work in EE’s world, and pay no attention to the underlying database structure or worry about the SQL statements that EE is generating. The other 2% I’ve been able to use the query module and mine the EE database directly to get the content that I’ve needed.